Full Code of unicorn-engine/unicorn for AI

master 7c5db94191de cached
1026 files
19.5 MB
5.2M tokens
19704 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (20,664K chars total). Download the full file to get everything.
Repository: unicorn-engine/unicorn
Branch: master
Commit: 7c5db94191de
Files: 1026
Total size: 19.5 MB

Directory structure:
gitextract_7lagk856/

├── .clang-format
├── .github/
│   └── workflows/
│       ├── Crate-publishing.yml
│       ├── Nuget-publishing.yml
│       ├── build-uc2.yml
│       ├── build-wheels-publish.yml
│       ├── prerelease.yml
│       ├── release.yml
│       └── zigbuild.yml
├── .gitignore
├── .gitmodules
├── AUTHORS.TXT
├── CMakeLists.txt
├── COPYING
├── COPYING.LGPL2
├── COPYING_GLIB
├── CREDITS.TXT
├── Cargo.toml
├── ChangeLog
├── README.md
├── SECURITY.md
├── TODO
├── bindings/
│   ├── Makefile
│   ├── README
│   ├── const_generator.py
│   ├── dotnet/
│   │   ├── README.md
│   │   ├── UnicornDotNet.sln
│   │   ├── UnicornEngine/
│   │   │   ├── Binding/
│   │   │   │   ├── BindingFactory.fs
│   │   │   │   ├── IBinding.fs
│   │   │   │   ├── MockBinding.fs
│   │   │   │   └── NativeBinding.fs
│   │   │   ├── Const/
│   │   │   │   ├── Arm.fs
│   │   │   │   ├── Arm64.fs
│   │   │   │   ├── Common.fs
│   │   │   │   ├── M68k.fs
│   │   │   │   ├── Mips.fs
│   │   │   │   ├── Ppc.fs
│   │   │   │   ├── Riscv.fs
│   │   │   │   ├── S390x.fs
│   │   │   │   ├── Sparc.fs
│   │   │   │   ├── TriCore.fs
│   │   │   │   └── X86.fs
│   │   │   ├── ConvertUtility.fs
│   │   │   ├── InternalHooks.fs
│   │   │   ├── Unicorn.fs
│   │   │   ├── UnicornEngine.fsproj
│   │   │   ├── UnicornEngineException.fs
│   │   │   └── WinNativeImport.fs
│   │   └── UnicornSamples/
│   │       ├── Program.cs
│   │       ├── ShellcodeSample.cs
│   │       ├── UnicornSamples.csproj
│   │       ├── Utils.cs
│   │       └── X86Sample32.cs
│   ├── go/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── sample.go
│   │   └── unicorn/
│   │       ├── arm64_const.go
│   │       ├── arm_const.go
│   │       ├── cgo.go
│   │       ├── cgo_dynamic.go
│   │       ├── cgo_static.go
│   │       ├── context.go
│   │       ├── context_test.go
│   │       ├── hook.c
│   │       ├── hook.go
│   │       ├── hook.h
│   │       ├── m68k_const.go
│   │       ├── mips_const.go
│   │       ├── ppc_const.go
│   │       ├── reg_batch.go
│   │       ├── riscv_const.go
│   │       ├── s390x_const.go
│   │       ├── sparc_const.go
│   │       ├── tricore_const.go
│   │       ├── uc.c
│   │       ├── uc.h
│   │       ├── unicorn.go
│   │       ├── unicorn_const.go
│   │       ├── unicorn_test.go
│   │       ├── x86.go
│   │       ├── x86_const.go
│   │       └── x86_test.go
│   ├── haskell/
│   │   ├── .gitignore
│   │   ├── README.TXT
│   │   ├── Setup.hs
│   │   ├── samples/
│   │   │   ├── SampleArm.hs
│   │   │   ├── SampleArm64.hs
│   │   │   ├── SampleBatchReg.hs
│   │   │   ├── SampleM68k.hs
│   │   │   ├── SampleMips.hs
│   │   │   ├── SampleSparc.hs
│   │   │   ├── SampleX86.hs
│   │   │   └── Shellcode.hs
│   │   ├── src/
│   │   │   ├── Unicorn/
│   │   │   │   ├── CPU/
│   │   │   │   │   ├── Arm.chs
│   │   │   │   │   ├── Arm64.chs
│   │   │   │   │   ├── M68k.chs
│   │   │   │   │   ├── Mips.chs
│   │   │   │   │   ├── Sparc.chs
│   │   │   │   │   └── X86.chs
│   │   │   │   ├── Hook.hs
│   │   │   │   └── Internal/
│   │   │   │       ├── Core.chs
│   │   │   │       ├── Hook.chs
│   │   │   │       ├── Unicorn.chs
│   │   │   │       └── Util.hs
│   │   │   ├── Unicorn.hs
│   │   │   ├── cbits/
│   │   │   │   └── unicorn_wrapper.c
│   │   │   └── include/
│   │   │       └── unicorn_wrapper.h
│   │   └── unicorn.cabal
│   ├── java/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── eclipse-formatter.xml
│   │   ├── pom.xml
│   │   ├── src/
│   │   │   ├── main/
│   │   │   │   └── java/
│   │   │   │       └── unicorn/
│   │   │   │           ├── Arm64Const.java
│   │   │   │           ├── Arm64SysHook.java
│   │   │   │           ├── Arm64_CP.java
│   │   │   │           ├── ArmConst.java
│   │   │   │           ├── Arm_CP.java
│   │   │   │           ├── BlockHook.java
│   │   │   │           ├── CodeHook.java
│   │   │   │           ├── CpuidHook.java
│   │   │   │           ├── EdgeGeneratedHook.java
│   │   │   │           ├── EventMemHook.java
│   │   │   │           ├── Hook.java
│   │   │   │           ├── InHook.java
│   │   │   │           ├── InstructionHook.java
│   │   │   │           ├── InterruptHook.java
│   │   │   │           ├── InvalidInstructionHook.java
│   │   │   │           ├── M68kConst.java
│   │   │   │           ├── MemHook.java
│   │   │   │           ├── MemRegion.java
│   │   │   │           ├── MipsConst.java
│   │   │   │           ├── MmioReadHandler.java
│   │   │   │           ├── MmioWriteHandler.java
│   │   │   │           ├── OutHook.java
│   │   │   │           ├── PpcConst.java
│   │   │   │           ├── RiscvConst.java
│   │   │   │           ├── S390xConst.java
│   │   │   │           ├── SparcConst.java
│   │   │   │           ├── SyscallHook.java
│   │   │   │           ├── TcgOpcodeHook.java
│   │   │   │           ├── TlbFillHook.java
│   │   │   │           ├── TranslationBlock.java
│   │   │   │           ├── TriCoreConst.java
│   │   │   │           ├── Unicorn.java
│   │   │   │           ├── UnicornConst.java
│   │   │   │           ├── UnicornException.java
│   │   │   │           ├── X86Const.java
│   │   │   │           ├── X86_Float80.java
│   │   │   │           ├── X86_MMR.java
│   │   │   │           └── X86_MSR.java
│   │   │   └── test/
│   │   │       └── java/
│   │   │           ├── samples/
│   │   │           │   ├── SampleNetworkAuditing.java
│   │   │           │   ├── Sample_arm.java
│   │   │           │   ├── Sample_arm64.java
│   │   │           │   ├── Sample_ctl.java
│   │   │           │   ├── Sample_m68k.java
│   │   │           │   ├── Sample_mips.java
│   │   │           │   ├── Sample_mmu.java
│   │   │           │   ├── Sample_ppc.java
│   │   │           │   ├── Sample_riscv.java
│   │   │           │   ├── Sample_s390x.java
│   │   │           │   ├── Sample_sparc.java
│   │   │           │   ├── Sample_tricore.java
│   │   │           │   ├── Sample_x86.java
│   │   │           │   ├── Sample_x86_mmr.java
│   │   │           │   ├── Shellcode.java
│   │   │           │   └── Utils.java
│   │   │           └── tests/
│   │   │               ├── FunctionalityTests.java
│   │   │               ├── HookTests.java
│   │   │               ├── MemTests.java
│   │   │               ├── RegTests.java
│   │   │               ├── RegressionTests.java
│   │   │               └── TestSamples.java
│   │   └── unicorn_Unicorn.c
│   ├── pascal/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── examples/
│   │   │   ├── x86.lpi
│   │   │   ├── x86.lpr
│   │   │   └── x86.lps
│   │   └── unicorn/
│   │       ├── Arm64Const.pas
│   │       ├── ArmConst.pas
│   │       ├── M68kConst.pas
│   │       ├── MipsConst.pas
│   │       ├── PpcConst.pas
│   │       ├── RiscvConst.pas
│   │       ├── S390xConst.pas
│   │       ├── SparcConst.pas
│   │       ├── TriCoreConst.pas
│   │       ├── UnicornConst.pas
│   │       ├── Unicorn_dyn.pas
│   │       └── X86Const.pas
│   ├── python/
│   │   ├── MANIFEST.in
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── prebuilt/
│   │   │   └── .gitkeep
│   │   ├── pyproject.toml
│   │   ├── setup.py
│   │   ├── tests/
│   │   │   ├── test_arm.py
│   │   │   ├── test_arm64.py
│   │   │   ├── test_arm64eb.py
│   │   │   ├── test_armeb.py
│   │   │   ├── test_ctl.py
│   │   │   ├── test_m68k.py
│   │   │   ├── test_mips.py
│   │   │   ├── test_network_auditing.py
│   │   │   ├── test_ppc.py
│   │   │   ├── test_riscv.py
│   │   │   ├── test_s390x.py
│   │   │   ├── test_shellcode.py
│   │   │   ├── test_sparc.py
│   │   │   ├── test_tricore.py
│   │   │   └── test_x86.py
│   │   └── unicorn/
│   │       ├── __init__.py
│   │       ├── arm64_const.py
│   │       ├── arm_const.py
│   │       ├── m68k_const.py
│   │       ├── mips_const.py
│   │       ├── ppc_const.py
│   │       ├── py.typed
│   │       ├── riscv_const.py
│   │       ├── s390x_const.py
│   │       ├── sparc_const.py
│   │       ├── tricore_const.py
│   │       ├── unicorn.py
│   │       ├── unicorn_const.py
│   │       ├── unicorn_py2.py
│   │       ├── unicorn_py3/
│   │       │   ├── __init__.py
│   │       │   ├── arch/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── arm.py
│   │       │   │   ├── arm64.py
│   │       │   │   ├── intel.py
│   │       │   │   └── types.py
│   │       │   └── unicorn.py
│   │       └── x86_const.py
│   ├── ruby/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── sample_arm.rb
│   │   ├── sample_arm64.rb
│   │   ├── sample_m68k.rb
│   │   ├── sample_mips.rb
│   │   ├── sample_sparc.rb
│   │   ├── sample_x86.rb
│   │   ├── sample_x86_gdt.rb
│   │   ├── test_hook_gc.rb
│   │   └── unicorn_gem/
│   │       ├── Gemfile
│   │       ├── Rakefile
│   │       ├── ext/
│   │       │   ├── extconf.rb
│   │       │   ├── types.h
│   │       │   ├── unicorn.c
│   │       │   └── unicorn.h
│   │       ├── lib/
│   │       │   └── unicorn_engine/
│   │       │       ├── arm64_const.rb
│   │       │       ├── arm_const.rb
│   │       │       ├── m68k_const.rb
│   │       │       ├── mips_const.rb
│   │       │       ├── ppc_const.rb
│   │       │       ├── riscv_const.rb
│   │       │       ├── s390x_const.rb
│   │       │       ├── sparc_const.rb
│   │       │       ├── tricore_const.rb
│   │       │       ├── unicorn_const.rb
│   │       │       ├── version.rb
│   │       │       └── x86_const.rb
│   │       ├── pkg/
│   │       │   └── .gitignore
│   │       └── unicorn-engine.gemspec
│   ├── rust/
│   │   ├── sys/
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── bindings.rs
│   │   │       └── lib.rs
│   │   └── unicorn-engine/
│   │       ├── COPYING
│   │       ├── Cargo.toml
│   │       ├── README.md
│   │       └── src/
│   │           ├── ffi.rs
│   │           ├── hook.rs
│   │           ├── lib.rs
│   │           ├── tests/
│   │           │   ├── arm.rs
│   │           │   ├── arm64.rs
│   │           │   ├── ctl.rs
│   │           │   ├── m68k.rs
│   │           │   ├── mem.rs
│   │           │   ├── mips.rs
│   │           │   ├── mod.rs
│   │           │   ├── ppc.rs
│   │           │   ├── riscv.rs
│   │           │   └── s390x.rs
│   │           └── unicorn_const.rs
│   ├── vb6/
│   │   ├── .gitattributes
│   │   ├── Apache_2.0_License.txt
│   │   ├── CMemRegion.cls
│   │   ├── Form1.frm
│   │   ├── Project1.vbp
│   │   ├── Project1.vbw
│   │   ├── README.txt
│   │   ├── example_output.txt
│   │   ├── main.cpp
│   │   ├── misc.bas
│   │   ├── msvbvm60.tlh
│   │   ├── msvbvm60.tli
│   │   ├── ucIntel32.cls
│   │   ├── uc_def.bas
│   │   ├── ucvbshim.sln
│   │   └── ucvbshim.vcproj
│   └── zig/
│       ├── README.md
│       ├── sample/
│       │   └── sample_riscv_zig.zig
│       ├── tools/
│       │   ├── zigcc.cmd
│       │   └── zigcc.sh
│       └── unicorn/
│           ├── arm64_const.zig
│           ├── arm_const.zig
│           ├── m68k_const.zig
│           ├── mips_const.zig
│           ├── ppc_const.zig
│           ├── riscv_const.zig
│           ├── s390x_const.zig
│           ├── sparc_const.zig
│           ├── tricore_const.zig
│           ├── unicorn.zig
│           ├── unicorn_const.zig
│           └── x86_const.zig
├── build.rs
├── build.zig
├── build.zig.zon
├── cmake/
│   ├── bundle_static.cmake
│   ├── mingw-w64.cmake
│   └── zig.cmake
├── docs/
│   ├── COMPILE.md
│   ├── FAQ.md
│   ├── Hooks.md
│   ├── OPENBSD-NOTES.md
│   ├── README.md
│   ├── Testing.md
│   └── unicorn1-logo.txt
├── format.sh
├── glib_compat/
│   ├── README
│   ├── garray.c
│   ├── garray.h
│   ├── ghash.h
│   ├── glib_compat.c
│   ├── glib_compat.h
│   ├── glist.c
│   ├── glist.h
│   ├── gmacros.h
│   ├── gmem.c
│   ├── gmem.h
│   ├── gmessages.h
│   ├── gnode.h
│   ├── gpattern.c
│   ├── gpattern.h
│   ├── grand.c
│   ├── grand.h
│   ├── gslice.c
│   ├── gslice.h
│   ├── gtestutils.c
│   ├── gtestutils.h
│   ├── gtree.c
│   ├── gtree.h
│   └── gtypes.h
├── go.mod
├── include/
│   ├── list.h
│   ├── qemu.h
│   ├── uc_priv.h
│   └── unicorn/
│       ├── arm.h
│       ├── arm64.h
│       ├── m68k.h
│       ├── mips.h
│       ├── platform.h
│       ├── ppc.h
│       ├── riscv.h
│       ├── s390x.h
│       ├── sparc.h
│       ├── tricore.h
│       ├── unicorn.h
│       └── x86.h
├── list.c
├── msvc/
│   ├── aarch64-softmmu/
│   │   └── config-target.h
│   ├── aarch64eb-softmmu/
│   │   └── config-target.h
│   ├── arm-softmmu/
│   │   └── config-target.h
│   ├── armeb-softmmu/
│   │   └── config-target.h
│   ├── config-host.h
│   ├── m68k-softmmu/
│   │   └── config-target.h
│   ├── mips-softmmu/
│   │   └── config-target.h
│   ├── mips64-softmmu/
│   │   └── config-target.h
│   ├── mips64el-softmmu/
│   │   └── config-target.h
│   ├── mipsel-softmmu/
│   │   └── config-target.h
│   ├── ppc-softmmu/
│   │   └── config-target.h
│   ├── ppc64-softmmu/
│   │   └── config-target.h
│   ├── riscv32-softmmu/
│   │   └── config-target.h
│   ├── riscv64-softmmu/
│   │   └── config-target.h
│   ├── s390x-softmmu/
│   │   └── config-target.h
│   ├── sparc-softmmu/
│   │   └── config-target.h
│   ├── sparc64-softmmu/
│   │   └── config-target.h
│   ├── tricore-softmmu/
│   │   └── config-target.h
│   ├── unicorn/
│   │   └── dllmain.cpp
│   └── x86_64-softmmu/
│       └── config-target.h
├── qemu/
│   ├── .editorconfig
│   ├── CODING_STYLE.rst
│   ├── COPYING
│   ├── COPYING.LIB
│   ├── LICENSE
│   ├── MAINTAINERS
│   ├── VERSION
│   ├── aarch64.h
│   ├── accel/
│   │   └── tcg/
│   │       ├── atomic_template.h
│   │       ├── cpu-exec-common.c
│   │       ├── cpu-exec.c
│   │       ├── cputlb.c
│   │       ├── tcg-all.c
│   │       ├── tcg-runtime-gvec.c
│   │       ├── tcg-runtime.c
│   │       ├── tcg-runtime.h
│   │       ├── translate-all.c
│   │       ├── translate-all.h
│   │       └── translator.c
│   ├── arm.h
│   ├── configure
│   ├── crypto/
│   │   ├── aes.c
│   │   └── init.c
│   ├── exec-vary.c
│   ├── exec.c
│   ├── fpu/
│   │   ├── softfloat-specialize.inc.c
│   │   └── softfloat.c
│   ├── hw/
│   │   ├── core/
│   │   │   └── cpu.c
│   │   ├── i386/
│   │   │   └── x86.c
│   │   ├── ppc/
│   │   │   ├── ppc.c
│   │   │   └── ppc_booke.c
│   │   └── s390x/
│   │       └── s390-skeys.c
│   ├── include/
│   │   ├── crypto/
│   │   │   ├── aes.h
│   │   │   ├── init.h
│   │   │   └── random.h
│   │   ├── elf.h
│   │   ├── exec/
│   │   │   ├── cpu-all.h
│   │   │   ├── cpu-common.h
│   │   │   ├── cpu-defs.h
│   │   │   ├── cpu_ldst.h
│   │   │   ├── cputlb.h
│   │   │   ├── exec-all.h
│   │   │   ├── gen-icount.h
│   │   │   ├── helper-gen.h
│   │   │   ├── helper-head.h
│   │   │   ├── helper-proto.h
│   │   │   ├── helper-tcg.h
│   │   │   ├── hwaddr.h
│   │   │   ├── ioport.h
│   │   │   ├── memattrs.h
│   │   │   ├── memop.h
│   │   │   ├── memory-internal.h
│   │   │   ├── memory.h
│   │   │   ├── memory_ldst.inc.h
│   │   │   ├── memory_ldst_cached.inc.h
│   │   │   ├── memory_ldst_phys.inc.h
│   │   │   ├── poison.h
│   │   │   ├── ram_addr.h
│   │   │   ├── ramblock.h
│   │   │   ├── ramlist.h
│   │   │   ├── softmmu-semi.h
│   │   │   ├── target_page.h
│   │   │   ├── tb-context.h
│   │   │   ├── tb-hash.h
│   │   │   ├── tb-lookup.h
│   │   │   └── translator.h
│   │   ├── fpu/
│   │   │   ├── softfloat-helpers.h
│   │   │   ├── softfloat-macros.h
│   │   │   ├── softfloat-types.h
│   │   │   └── softfloat.h
│   │   ├── hw/
│   │   │   ├── core/
│   │   │   │   └── cpu.h
│   │   │   ├── i386/
│   │   │   │   └── topology.h
│   │   │   ├── mips/
│   │   │   │   └── cpudevs.h
│   │   │   ├── ppc/
│   │   │   │   └── ppc.h
│   │   │   ├── registerfields.h
│   │   │   └── s390x/
│   │   │       ├── ebcdic.h
│   │   │       ├── ioinst.h
│   │   │       ├── sclp.h
│   │   │       └── storage-keys.h
│   │   ├── libdecnumber/
│   │   │   ├── dconfig.h
│   │   │   ├── decContext.h
│   │   │   ├── decDPD.h
│   │   │   ├── decNumber.h
│   │   │   ├── decNumberLocal.h
│   │   │   └── dpd/
│   │   │       ├── decimal128.h
│   │   │       ├── decimal128Local.h
│   │   │       ├── decimal32.h
│   │   │       └── decimal64.h
│   │   ├── qemu/
│   │   │   ├── atomic.h
│   │   │   ├── atomic128.h
│   │   │   ├── bitmap.h
│   │   │   ├── bitops.h
│   │   │   ├── bswap.h
│   │   │   ├── compiler.h
│   │   │   ├── cpuid.h
│   │   │   ├── crc32c.h
│   │   │   ├── ctype.h
│   │   │   ├── cutils.h
│   │   │   ├── guest-random.h
│   │   │   ├── host-utils.h
│   │   │   ├── int128.h
│   │   │   ├── log.h
│   │   │   ├── osdep.h
│   │   │   ├── processor.h
│   │   │   ├── qdist.h
│   │   │   ├── qht.h
│   │   │   ├── queue.h
│   │   │   ├── range.h
│   │   │   ├── rcu_queue.h
│   │   │   ├── thread-posix.h
│   │   │   ├── thread-win32.h
│   │   │   ├── thread.h
│   │   │   ├── timer.h
│   │   │   ├── typedefs.h
│   │   │   ├── units.h
│   │   │   └── xxhash.h
│   │   ├── qemu-common.h
│   │   ├── sysemu/
│   │   │   ├── cpus.h
│   │   │   ├── memory_mapping.h
│   │   │   ├── os-win32.h
│   │   │   ├── sysemu.h
│   │   │   └── tcg.h
│   │   └── tcg/
│   │       ├── tcg-apple-jit.h
│   │       ├── tcg-gvec-desc.h
│   │       ├── tcg-mo.h
│   │       ├── tcg-op-gvec.h
│   │       ├── tcg-op.h
│   │       ├── tcg-opc.h
│   │       └── tcg.h
│   ├── libdecnumber/
│   │   ├── decContext.c
│   │   ├── decNumber.c
│   │   └── dpd/
│   │       ├── decimal128.c
│   │       ├── decimal32.c
│   │       └── decimal64.c
│   ├── m68k.h
│   ├── memory_ldst.inc.c
│   ├── mips.h
│   ├── mips64.h
│   ├── mips64el.h
│   ├── mipsel.h
│   ├── ppc.h
│   ├── ppc64.h
│   ├── riscv32.h
│   ├── riscv64.h
│   ├── rules.mak
│   ├── s390x.h
│   ├── scripts/
│   │   └── create_config
│   ├── softmmu/
│   │   ├── cpus.c
│   │   ├── ioport.c
│   │   ├── memory.c
│   │   ├── memory_mapping.c
│   │   ├── unicorn_vtlb.c
│   │   └── vl.c
│   ├── sparc.h
│   ├── sparc64.h
│   ├── target/
│   │   ├── arm/
│   │   │   ├── README
│   │   │   ├── arm-powerctl.c
│   │   │   ├── arm-powerctl.h
│   │   │   ├── arm-semi.c
│   │   │   ├── arm_ldst.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu64.c
│   │   │   ├── crypto_helper.c
│   │   │   ├── debug_helper.c
│   │   │   ├── decode-a32-uncond.inc.c
│   │   │   ├── decode-a32.inc.c
│   │   │   ├── decode-sve.inc.c
│   │   │   ├── decode-t16.inc.c
│   │   │   ├── decode-t32.inc.c
│   │   │   ├── decode-vfp-uncond.inc.c
│   │   │   ├── decode-vfp.inc.c
│   │   │   ├── helper-a64.c
│   │   │   ├── helper-a64.h
│   │   │   ├── helper-sve.h
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── internals.h
│   │   │   ├── iwmmxt_helper.c
│   │   │   ├── kvm-consts.h
│   │   │   ├── m_helper.c
│   │   │   ├── neon_helper.c
│   │   │   ├── op_addsub.h
│   │   │   ├── op_helper.c
│   │   │   ├── pauth_helper.c
│   │   │   ├── psci.c
│   │   │   ├── sve_helper.c
│   │   │   ├── tlb_helper.c
│   │   │   ├── translate-a64.c
│   │   │   ├── translate-a64.h
│   │   │   ├── translate-sve.c
│   │   │   ├── translate-vfp.inc.c
│   │   │   ├── translate.c
│   │   │   ├── translate.h
│   │   │   ├── unicorn.h
│   │   │   ├── unicorn_aarch64.c
│   │   │   ├── unicorn_arm.c
│   │   │   ├── vec_helper.c
│   │   │   └── vfp_helper.c
│   │   ├── i386/
│   │   │   ├── TODO
│   │   │   ├── arch_memory_mapping.c
│   │   │   ├── bpt_helper.c
│   │   │   ├── cc_helper.c
│   │   │   ├── cc_helper_template.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── int_helper.c
│   │   │   ├── machine.c
│   │   │   ├── mem_helper.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mpx_helper.c
│   │   │   ├── ops_sse.h
│   │   │   ├── ops_sse_header.h
│   │   │   ├── seg_helper.c
│   │   │   ├── shift_helper_template.h
│   │   │   ├── smm_helper.c
│   │   │   ├── svm.h
│   │   │   ├── svm_helper.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   └── xsave_helper.c
│   │   ├── m68k/
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── op_helper.c
│   │   │   ├── qregs.def
│   │   │   ├── softfloat.c
│   │   │   ├── softfloat.h
│   │   │   ├── softfloat_fpsp_tables.h
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── mips/
│   │   │   ├── TODO
│   │   │   ├── cp0_helper.c
│   │   │   ├── cp0_timer.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── dsp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── internal.h
│   │   │   ├── lmi_helper.c
│   │   │   ├── mips-defs.h
│   │   │   ├── msa_helper.c
│   │   │   ├── op_helper.c
│   │   │   ├── translate.c
│   │   │   ├── translate_init.inc.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── ppc/
│   │   │   ├── compat.c
│   │   │   ├── cpu-models.c
│   │   │   ├── cpu-models.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── dfp_helper.c
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.h
│   │   │   ├── helper_regs.h
│   │   │   ├── int_helper.c
│   │   │   ├── internal.h
│   │   │   ├── kvm_ppc.h
│   │   │   ├── machine.c
│   │   │   ├── mem_helper.c
│   │   │   ├── mfrom_table.inc.c
│   │   │   ├── mfrom_table_gen.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mmu-book3s-v3.c
│   │   │   ├── mmu-book3s-v3.h
│   │   │   ├── mmu-hash32.c
│   │   │   ├── mmu-hash32.h
│   │   │   ├── mmu-hash64.c
│   │   │   ├── mmu-hash64.h
│   │   │   ├── mmu-radix64.c
│   │   │   ├── mmu-radix64.h
│   │   │   ├── mmu_helper.c
│   │   │   ├── timebase_helper.c
│   │   │   ├── translate/
│   │   │   │   ├── dfp-impl.inc.c
│   │   │   │   ├── dfp-ops.inc.c
│   │   │   │   ├── fp-impl.inc.c
│   │   │   │   ├── fp-ops.inc.c
│   │   │   │   ├── spe-impl.inc.c
│   │   │   │   ├── spe-ops.inc.c
│   │   │   │   ├── vmx-impl.inc.c
│   │   │   │   ├── vmx-ops.inc.c
│   │   │   │   ├── vsx-impl.inc.c
│   │   │   │   └── vsx-ops.inc.c
│   │   │   ├── translate.c
│   │   │   ├── translate_init.inc.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── riscv/
│   │   │   ├── README
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu_bits.h
│   │   │   ├── cpu_helper.c
│   │   │   ├── cpu_user.h
│   │   │   ├── csr.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.h
│   │   │   ├── insn_trans/
│   │   │   │   ├── trans_privileged.inc.c
│   │   │   │   ├── trans_rva.inc.c
│   │   │   │   ├── trans_rvd.inc.c
│   │   │   │   ├── trans_rvf.inc.c
│   │   │   │   ├── trans_rvi.inc.c
│   │   │   │   └── trans_rvm.inc.c
│   │   │   ├── instmap.h
│   │   │   ├── op_helper.c
│   │   │   ├── pmp.c
│   │   │   ├── pmp.h
│   │   │   ├── riscv32/
│   │   │   │   ├── decode_insn16.inc.c
│   │   │   │   └── decode_insn32.inc.c
│   │   │   ├── riscv64/
│   │   │   │   ├── decode_insn16.inc.c
│   │   │   │   └── decode_insn32.inc.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── s390x/
│   │   │   ├── cc_helper.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu_features.c
│   │   │   ├── cpu_features.h
│   │   │   ├── cpu_features_def.h
│   │   │   ├── cpu_features_def.inc.h
│   │   │   ├── cpu_models.c
│   │   │   ├── cpu_models.h
│   │   │   ├── crypto_helper.c
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── gen-features.c
│   │   │   ├── gen-features.h
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── insn-data.def
│   │   │   ├── insn-format.def
│   │   │   ├── int_helper.c
│   │   │   ├── internal.h
│   │   │   ├── interrupt.c
│   │   │   ├── ioinst.c
│   │   │   ├── mem_helper.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mmu_helper.c
│   │   │   ├── s390-tod.h
│   │   │   ├── sigp.c
│   │   │   ├── tcg-stub.c
│   │   │   ├── tcg_s390x.h
│   │   │   ├── translate.c
│   │   │   ├── translate_vx.inc.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   ├── vec.h
│   │   │   ├── vec_fpu_helper.c
│   │   │   ├── vec_helper.c
│   │   │   ├── vec_int_helper.c
│   │   │   └── vec_string_helper.c
│   │   ├── sparc/
│   │   │   ├── asi.h
│   │   │   ├── cc_helper.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── fop_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── int32_helper.c
│   │   │   ├── int64_helper.c
│   │   │   ├── ldst_helper.c
│   │   │   ├── mmu_helper.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   ├── unicorn64.c
│   │   │   ├── vis_helper.c
│   │   │   └── win_helper.c
│   │   └── tricore/
│   │       ├── cpu-param.h
│   │       ├── cpu-qom.h
│   │       ├── cpu.c
│   │       ├── cpu.h
│   │       ├── csfr.def
│   │       ├── fpu_helper.c
│   │       ├── helper.c
│   │       ├── helper.h
│   │       ├── op_helper.c
│   │       ├── translate.c
│   │       ├── tricore-defs.h
│   │       ├── tricore-opcodes.h
│   │       ├── unicorn.c
│   │       └── unicorn.h
│   ├── tcg/
│   │   ├── README
│   │   ├── aarch64/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── arm/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── i386/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── loongarch64/
│   │   │   ├── tcg-insn-defs.c.inc
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── mips/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── optimize.c
│   │   ├── ppc/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── riscv/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── s390/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── sparc/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── tcg-ldst.inc.c
│   │   ├── tcg-op-gvec.c
│   │   ├── tcg-op-vec.c
│   │   ├── tcg-op.c
│   │   ├── tcg-pool.inc.c
│   │   └── tcg.c
│   ├── trace/
│   │   ├── mem-internal.h
│   │   └── mem.h
│   ├── tricore.h
│   ├── unicorn_common.h
│   ├── util/
│   │   ├── bitmap.c
│   │   ├── bitops.c
│   │   ├── cacheinfo.c
│   │   ├── crc32c.c
│   │   ├── cutils.c
│   │   ├── getauxval.c
│   │   ├── guest-random.c
│   │   ├── host-utils.c
│   │   ├── osdep.c
│   │   ├── oslib-posix.c
│   │   ├── oslib-win32.c
│   │   ├── pagesize.c
│   │   ├── qdist.c
│   │   ├── qemu-thread-posix.c
│   │   ├── qemu-thread-win32.c
│   │   ├── qemu-timer-common.c
│   │   ├── qemu-timer.c
│   │   ├── qht.c
│   │   ├── range.c
│   │   └── setjmp-wrapper-win32.asm
│   ├── vl.h
│   └── x86_64.h
├── samples/
│   ├── Makefile
│   ├── mem_apis.c
│   ├── sample_all.sh
│   ├── sample_arm.c
│   ├── sample_arm64.c
│   ├── sample_batch_reg.c
│   ├── sample_ctl.c
│   ├── sample_m68k.c
│   ├── sample_mips.c
│   ├── sample_mmu.c
│   ├── sample_ppc.c
│   ├── sample_riscv.c
│   ├── sample_s390x.c
│   ├── sample_sparc.c
│   ├── sample_tricore.c
│   ├── sample_x86.c
│   ├── sample_x86_32_gdt_and_seg_regs.c
│   └── shellcode.c
├── symbols.sh
├── tests/
│   ├── README.md
│   ├── benchmarks/
│   │   └── cow/
│   │       ├── Makefile
│   │       ├── benchmark.c
│   │       └── binary.S
│   ├── fuzz/
│   │   ├── Makefile
│   │   ├── dlcorpus.sh
│   │   ├── fuzz_emu.options
│   │   ├── fuzz_emu_arm64_arm.c
│   │   ├── fuzz_emu_arm64_armbe.c
│   │   ├── fuzz_emu_arm_arm.c
│   │   ├── fuzz_emu_arm_armbe.c
│   │   ├── fuzz_emu_arm_thumb.c
│   │   ├── fuzz_emu_m68k_be.c
│   │   ├── fuzz_emu_mips_32be.c
│   │   ├── fuzz_emu_mips_32le.c
│   │   ├── fuzz_emu_s390x_be.c
│   │   ├── fuzz_emu_sparc_32be.c
│   │   ├── fuzz_emu_x86_16.c
│   │   ├── fuzz_emu_x86_32.c
│   │   ├── fuzz_emu_x86_64.c
│   │   ├── gentargets.sh
│   │   ├── onedir.c
│   │   └── onefile.c
│   ├── regress/
│   │   ├── .gitignore
│   │   ├── 001-bad_condition_code_0xe.c
│   │   ├── 002-qemu__fatal__unimplemented_control_register_write_0xffb___0x0.c
│   │   ├── 003-qemu__fatal__wdebug_not_implemented.c
│   │   ├── 004-segmentation_fault_1.c
│   │   ├── 005-qemu__fatal__illegal_instruction__0000___00000404.c
│   │   ├── 006-qemu__fatal__illegal_instruction__0421___00040026.c
│   │   ├── 00opcode_uc_crash.c
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── arm64_reg_rw_w0_w30.py
│   │   ├── arm_bx_unmapped.py
│   │   ├── arm_bxeq_hang.py
│   │   ├── arm_enable_vfp.c
│   │   ├── arm_fp_vfp_disabled.py
│   │   ├── arm_init_input_crash.py
│   │   ├── arm_memcpy_neon.py
│   │   ├── arm_movr12_hang.py
│   │   ├── arm_vldr_invalid.py
│   │   ├── arm_wfi_first_insn_of_tb.py
│   │   ├── bad_ram.py
│   │   ├── block_test.c
│   │   ├── callback-pc.py
│   │   ├── core_ctl.py
│   │   ├── crash_tb.py
│   │   ├── deadlock_1.py
│   │   ├── eflags_noset.c
│   │   ├── eflags_nosync.c
│   │   ├── emu_clear_errors.c
│   │   ├── emu_clear_errors.py
│   │   ├── emu_stop_in_hook_overrun.c
│   │   ├── emu_stop_segfault.py
│   │   ├── ensure_typedef_consts_generated.py
│   │   ├── fpu_ip.py
│   │   ├── fpu_mem_write.py
│   │   ├── hang.py
│   │   ├── high_mem.py
│   │   ├── hook_add_crash.py
│   │   ├── hook_code_add_del.py
│   │   ├── hook_code_stop_emu.py
│   │   ├── hook_extrainvoke.c
│   │   ├── hook_raises_exception.py
│   │   ├── hook_readonly_write_local.py
│   │   ├── init.py
│   │   ├── invalid_insn.py
│   │   ├── invalid_read_in_cpu_tb_exec.c
│   │   ├── invalid_read_in_tb_flush_x86_64.c
│   │   ├── invalid_write.py
│   │   ├── invalid_write_in_cpu_tb_exec_x86_64.c
│   │   ├── jmp_ebx_hang.py
│   │   ├── jumping.py
│   │   ├── leaked_refs.py
│   │   ├── map_crash.c
│   │   ├── map_write.c
│   │   ├── memmap.py
│   │   ├── memmap_segfault.py
│   │   ├── mips64.py
│   │   ├── mips_branch_delay.py
│   │   ├── mips_branch_likely_issue.c
│   │   ├── mips_cp1.py
│   │   ├── mips_delay_slot_code_hook.c
│   │   ├── mips_except.py
│   │   ├── mips_invalid_read_of_size_4_when_tracing.c
│   │   ├── mips_kernel_mmu.py
│   │   ├── mips_kseg0_1.c
│   │   ├── mips_single_step_sp.py
│   │   ├── mips_syscall_pc.py
│   │   ├── mov_gs_eax.py
│   │   ├── movsd.py
│   │   ├── nr_mem_test.c
│   │   ├── osx_qemu_thread_create_crash.py
│   │   ├── potential_memory_leak.py
│   │   ├── pshufb.py
│   │   ├── reg_write_sign_extension.py
│   │   ├── regress.py
│   │   ├── regress.sh
│   │   ├── rep_hook.py
│   │   ├── rep_movsb.c
│   │   ├── ro_mem_test.c
│   │   ├── run_across_bb.py
│   │   ├── rw_hookstack.c
│   │   ├── segfault_on_stop.py
│   │   ├── sigill.c
│   │   ├── sigill2.c
│   │   ├── sparc64.py
│   │   ├── sparc_jump_to_zero.c
│   │   ├── sparc_reg.py
│   │   ├── sysenter_hook_x86.c
│   │   ├── tcg_liveness_analysis_bug_issue-287.py
│   │   ├── test_old_ctl.py
│   │   ├── threaded_emu_start.c
│   │   ├── timeout_segfault.c
│   │   ├── translator_buffer.py
│   │   ├── vld.py
│   │   ├── write_before_map.py
│   │   ├── wrong_rip.py
│   │   ├── wrong_rip_arm.py
│   │   ├── wrong_sp_arm.py
│   │   ├── x86_16_segfault.c
│   │   ├── x86_64_conditional_jump.py
│   │   ├── x86_64_eflags.py
│   │   ├── x86_64_msr.py
│   │   ├── x86_eflags.py
│   │   ├── x86_fldt_fsqrt.py
│   │   ├── x86_gdt.py
│   │   ├── x86_ld_crash.py
│   │   ├── x86_self_modifying.elf
│   │   ├── x86_self_modifying.py
│   │   ├── x86_self_modifying.s
│   │   ├── x86_set_ip.py
│   │   ├── x86_vex
│   │   └── x86_vex.c
│   └── unit/
│       ├── acutest.h
│       ├── test_arm.c
│       ├── test_arm64.c
│       ├── test_ctl.c
│       ├── test_m68k.c
│       ├── test_mem.c
│       ├── test_mips.c
│       ├── test_ppc.c
│       ├── test_riscv.c
│       ├── test_s390x.c
│       ├── test_sparc.c
│       ├── test_tricore.c
│       ├── test_x86.c
│       └── unicorn_test.h
└── uc.c

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
BasedOnStyle: LLVM
IndentWidth: 4
UseTab: Never
BreakBeforeBraces: Linux
AllowShortIfStatementsOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortBlocksOnASingleLine: Empty
AllowShortFunctionsOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
IndentCaseLabels: false
ColumnLimit: 80
SortIncludes: false
AllowShortLambdasOnASingleLine: Inline
AlwaysBreakBeforeMultilineStrings: false
BreakStringLiterals: true
PointerAlignment: Right


================================================
FILE: .github/workflows/Crate-publishing.yml
================================================
name: Crate 📦 Distribution

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

on:
  push:
    paths-ignore:
      - ".gitignore"
      - "docs/**"
      - "README"
      - "CREDITS.TXT"
      - "COPYING_GLIB"
      - "COPYING.LGPL2"
      - "AUTHORS.TXT"
      - "CHANGELOG"
      - "COPYING"
  pull_request:

env:
  UNICORN_VERSION: dev

jobs:
  build:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - { os: windows-2022, arch: x64, name: "Windows x86_64" }
          - { os: windows-2022, arch: x86, name: "Windows x86" }
          - { os: ubuntu-latest, arch: x64, name: "Ubuntu x86_64" }
          - { os: macos-latest, arch: x64, name: "macOS x86_64" }
    steps:
      - uses: actions/checkout@v4

      - name: Set up Rust
        uses: actions-rust-lang/setup-rust-toolchain@v1

      - name: "🛠️ Activate Developer Command Prompt"
        if: contains(matrix.config.os, 'win')
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: ${{ matrix.config.arch }}

      - name: "🛠️ Win build dependencies"
        if: contains(matrix.config.os, 'win')
        shell: bash
        run: |
          choco install ninja

      - name: "🚧 Cargo test"
        if: "!startsWith(github.ref, 'refs/tags')"
        run: |
          cargo test

      - name: Publish crates to Crates.io
        if: startsWith(github.ref, 'refs/tags') && !startsWith(github.ref, 'refs/tags/v') && contains(matrix.config.os, 'ubuntu')
        env:
          TOKEN: ${{ secrets.cratesio_token }}
        run: |
          cargo login $TOKEN && cargo publish -p unicorn-engine-sys && cd bindings/rust/unicorn-engine && cargo publish -p unicorn-engine


================================================
FILE: .github/workflows/Nuget-publishing.yml
================================================
name: Nuget 📦 Distribution

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true


on:
  push:
    paths-ignore:
      - ".gitignore"
      - "docs/**"
      - "README"
      - "CREDITS.TXT"
      - "COPYING_GLIB"
      - "COPYING.LGPL2"
      - "AUTHORS.TXT"
      - "CHANGELOG"
      - "COPYING"
  workflow_dispatch:
    inputs:
      forceRelease:
        description: 'Force release'
        required: false
        default: ''
        type: choice
        options:
          - '0'
          - '1'

permissions:
  packages: write

jobs:
  Windows:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: true
      matrix:
        config:
          - {
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MSVC 64bit shared',
            msvc-arch: x64,
            artifact: 'windows-msvc64-shared.7z',
            shared: 'yes',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
          - {
            os: windows-2022,
            arch: x86,
            name: 'windows-x86 MSVC 32bit shared',
            msvc-arch: x86,
            artifact: 'windows-msvc32-shared.7z',
            shared: 'yes',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4

      - name: '🛠️ Win MSVC 64 setup'
        if: contains(matrix.config.name, 'MSVC 64')
        uses: microsoft/setup-msbuild@v2

      - name: '🛠️ Win MSVC 64 dev cmd setup'
        if: contains(matrix.config.name, 'MSVC 64')
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x64

      - name: '🚧 Win MSVC 64 build'
        if: contains(matrix.config.name, 'MSVC 64')
        shell: bash
        run: |
          choco install ninja
          ninja --version
          cmake --version
          mkdir build
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_C_FLAGS="//MT" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ matrix.config.build_type }}
          cmake --install . --strip --config ${{ matrix.config.build_type }}
          ctest -VV -C ${{ matrix.config.build_type }}
          mv Release instdir

      - name: '🛠️ Win MSVC 32 setup'
        if: contains(matrix.config.name, 'MSVC 32')
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x86

      - name: '🚧 Win MSVC 32 build'
        if: contains(matrix.config.name, 'MSVC 32')
        shell: bash
        run: |
          choco install ninja cmake
          ninja --version
          cmake --version
          mkdir build
          cmake \
            -S . \
            -B . \
            -A "win32" \
            -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_C_FLAGS="//MT" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ matrix.config.build_type }}
          cmake --install . --strip --config ${{ matrix.config.build_type }}
          ctest -VV -C ${{ matrix.config.build_type }}
          mv Release instdir

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  Macos:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
    strategy:
      fail-fast: true
      matrix:
        config:
          - {
            os: macos-latest,
            arch: x64,
            name: 'macos-x64 cmake shared',
            shared: 'yes',
            artifact: 'macos-cmake-shared-x64.7z',
            build_type: 'Release',
            archiver: '7za a',
            generators: 'Ninja'
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4

      - name: '🚧 Mac build'
        if: contains(matrix.config.name, 'macos-x64')
        shell: bash
        run: |
          ninja --version
          cmake --version
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ matrix.config.build_type }}
          cmake --install . --strip
          ctest -VV -C ${{ matrix.config.build_type }}

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  Linux:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            os: ubuntu-latest,
            arch: x64,
            name: 'ubuntu-x64 cmake shared',
            shared: 'yes',
            artifact: 'ubuntu-cmake-shared-x64.7z',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86,
            name: 'ubuntu-x86 cmake shared',
            shared: 'yes',
            artifact: 'ubuntu-cmake-shared-x86.7z',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-24.04-arm,
            arch: aarch64,
            name: 'ubuntu-aarch64 cmake',
            artifact: 'ubuntu-cmake-aarch64.7z',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu24.04
          }
          - {
            os: ubuntu-22.04,
            arch: ppc64le,
            name: 'ubuntu-ppc64le cmake',
            artifact: 'ubuntu-cmake-ppc64le.7z',
            build_type: 'Release',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu22.04
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4

      - name: '🚧 Linux x64/x86 build'
        if: contains(matrix.config.arch, 'x64') || contains(matrix.config.arch, 'x86')
        shell: bash
        run: |
          if [ ${{ matrix.config.arch }} == 'x64' ]; then
                sudo apt update -q -y
                sudo apt install -q -y libcmocka-dev ninja-build
          else
                export CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386"
                sudo dpkg --add-architecture i386
                sudo apt update -q -y
                sudo apt install -q -y lib32ncurses-dev lib32z1-dev lib32gcc-9-dev libc6-dev-i386 gcc-multilib \
                  libcmocka-dev:i386 libcmocka0:i386 libc6:i386 libgcc-s1:i386 ninja-build
          fi
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ matrix.config.build_type }}
          cmake --install . --strip
          ctest -VV -C ${{ matrix.config.build_type }}

      - name: '🚧 Linux aarch64 build'
        if: contains(matrix.config.arch, 'aarch64')
        shell: bash
        run: |
          sudo apt-get update -q -y
          sudo apt-get install -q -y git cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir
          cmake --build . --config ${{ matrix.config.build_type }}
          cmake --install . --strip
          ctest -VV -C ${{ matrix.config.build_type }}

      - name: '🚧 Linux ppc64le build'
        if: contains(matrix.config.arch, 'ppc64le')
        uses: uraimo/run-on-arch-action@v3
        with:
          arch: ${{ matrix.config.arch }}
          distro: ${{ matrix.config.distro }}
          setup: |
            mkdir -p "${PWD}/instdir"
          dockerRunArgs: |
            --volume "${PWD}/instdir:/instdir"
          shell: /bin/sh
          install: |
            apt-get update -q -y
            apt-get install -q -y git cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
          run: |
            mkdir build
            cmake \
              -S . \
              -B . \
              -DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
              -G "${{ matrix.config.generators }}" \
              -DCMAKE_INSTALL_PREFIX:PATH=/instdir
            cmake --build . --config ${{ matrix.config.build_type }}
            cmake --install . --strip
            ctest -VV -C ${{ matrix.config.build_type }}

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  publish:
    needs: [ "Windows", "Macos", "Linux" ]
    if: ${{ needs.Windows.result == 'success' && needs.Macos.result == 'success' && needs.Linux.result == 'success' }}
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: 🛠️ Download artifacts
        uses: actions/download-artifact@v4
        with:
          path: artifacts

      - name: 🛠️ Extract artifacts
        shell: python
        run: |
          import subprocess
          import os

          artifactPath = os.path.join(os.getcwd(), "artifacts")
          bindingsPath = os.path.join(os.getcwd(), "bindings", "dotnet", "UnicornEngine")

          ARTIFACT_CONFIG = {
            "ubuntu-cmake-aarch64.7z": {
              "sourceDir": "lib/",
              "sourceFile": "libunicorn.so.*",
              "destDir": "runtimes/linux-arm64/native",
              "destFile": "libunicorn.so"
            },
            "ubuntu-cmake-ppc64le.7z": {
              "sourceDir": "lib/",
              "sourceFile": "libunicorn.so.*",
              "destDir": "runtimes/linux-ppc64le/native",
              "destFile": "libunicorn.so"
            },
            "ubuntu-cmake-shared-x86.7z": {
              "sourceDir": "lib/",
              "sourceFile": "libunicorn.so.*",
              "destDir": "runtimes/linux-x64/native",
              "destFile": "libunicorn.so"
            },
            "macos-cmake-shared-x64.7z": {
              "sourceDir": "lib/",
              "sourceFile": "libunicorn.*.dylib",
              "destDir": "runtimes/osx-x64/native",
              "destFile": "libunicorn.dylib"
            },
            "windows-msvc64-shared.7z": {
              "sourceDir": "",
              "sourceFile": "unicorn.dll",
              "destDir": "runtimes/win-x64/native",
              "destFile": "unicorn.dll"
            },
            "windows-msvc32-shared.7z": {
              "sourceDir": "",
              "sourceFile": "unicorn.dll",
              "destDir": "runtimes/win-x86/native",
              "destFile": "unicorn.dll"
            }
          }

          if len(os.listdir(artifactPath)) < len(ARTIFACT_CONFIG.keys()):
            print("Some artifacts are missing. Aborting.")
            exit(1)

          for artifact in os.listdir(artifactPath):
            if artifact in ARTIFACT_CONFIG.keys():
              print("Working on:", artifact)
              config = ARTIFACT_CONFIG[artifact]
              destDir = os.path.join(bindingsPath, config["destDir"])
              print("Creating dir:", destDir)
              os.makedirs(destDir, exist_ok=True)

              print(f"Extracting library from 7z file to: {config['destDir']}/{config['sourceFile']}")
              result = subprocess.run(["7z", "e", f"-o{destDir}/", os.path.join(artifactPath, artifact), f"{config['sourceDir']}{config['sourceFile']}"])
              result.check_returncode()

              if config["sourceFile"] != config["destFile"]:
                output = subprocess.run(["ls", destDir], stdout=subprocess.PIPE)
                sourceFile = output.stdout.decode().strip()
                print(f"Renaming {sourceFile} to {config['destFile']}")
                os.rename(os.path.join(destDir, sourceFile), os.path.join(destDir, config["destFile"]))

          print("Done!")

      - name: 🛠️ Get short sha
        id: git_short_sha
        run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT

      - uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 6.0.x

      - name: 🛠️ Authenticate to Github Packages
        working-directory: bindings/dotnet/UnicornEngine
        run: dotnet nuget add source --username "${{ github.repository_owner }}" --password "${{ secrets.GITHUB_TOKEN }}" --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"

      - name: 🛠️ List all native libraries
        working-directory: bindings/dotnet/UnicornEngine
        run: find ./runtimes -type f -print

      - name: 🚧 Package .NET distribution
        working-directory: bindings/dotnet/UnicornEngine
        run: |
          [[ "${{ github.ref_name }}" == "master" ]] \
            && dotnet pack -c Release \
            || dotnet pack -c Release --version-suffix="${{ steps.git_short_sha.outputs.result }}"

      - name: '📤 Upload artifact'
        uses: actions/upload-artifact@v4
        with:
          path: ${{ github.workspace }}/bindings/dotnet/UnicornEngine/bin/Release/UnicornEngine.Unicorn.*.nupkg

      # We always reach billing limit, allow it fails
      - name: 📦 Publish to Github Packages
        if: (inputs.forceRelease != '' && inputs.forceRelease == 1) || (startsWith(github.ref, 'refs/tags') && !startsWith(github.ref, 'refs/tags/v'))
        continue-on-error: true
        working-directory: bindings/dotnet/UnicornEngine
        run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" --source "github" --api-key "${{ secrets.GHPR_TOKEN }}"

      - name: 📦 Publish Nuget package
        if: (inputs.forceRelease != '' && inputs.forceRelease == 1) || (startsWith(github.ref, 'refs/tags') && !startsWith(github.ref, 'refs/tags/v'))
        working-directory: bindings/dotnet/UnicornEngine
        run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" -k "$NUGET_AUTH_TOKEN" -s https://api.nuget.org/v3/index.json
        env:
          NUGET_AUTH_TOKEN: ${{ secrets.NUGET_KEY }}


================================================
FILE: .github/workflows/build-uc2.yml
================================================
name: Build UC2

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

on:
  workflow_dispatch:
    inputs:
      buildType:
        description: 'Build Type'
        required: false
        default: ''
        type: choice
        options:
          - 'Debug'
          - 'Release'
  push:
    paths-ignore:
      - ".gitignore"
      - "AUTHORS.TXT"
      - "COPYING"
      - "COPYING.LGPL2"
      - "COPYING_GLIB"
      - "CREDITS.TXT"
      - "ChangeLog"
      - "README.md"
      - "docs/**"
  pull_request:

env:
  # Specify build type either according to the tag release or manual override
  BUILD_TYPE: ${{ inputs.buildType != '' && inputs.buildType || startsWith(github.ref, 'refs/tags') && 'Release' || 'Debug' }}

jobs:
  Windows:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MINGW64 shared',
            shared: 'yes',
            mingw: MINGW64,
            mingw-arch: x86_64,
            artifact: 'windows-mingw64-shared.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MINGW64 static',
            shared: 'no',
            mingw: MINGW64,
            mingw-arch: x86_64,
            artifact: 'windows-mingw64-static.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - { # This fails randomly which can't be reproduced.
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MINGW32 shared',
            shared: "yes",
            mingw: MINGW32,
            mingw-arch: i686,
            artifact: 'windows-mingw32-shared.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - { # This fails randomly which can't be reproduced.
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MINGW32 static',
            shared: "no",
            mingw: MINGW32,
            mingw-arch: i686,
            artifact: 'windows-mingw32-static.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MSVC 64bit shared',
            msvc-arch: x64,
            artifact: 'windows-msvc64-shared.7z',
            shared: 'yes',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
          - {
            os: windows-2022,
            arch: x86,
            name: 'windows-x86 MSVC 32bit shared',
            msvc-arch: x86,
            artifact: 'windows-msvc32-shared.7z',
            shared: 'yes',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
          - {
            os: windows-2022,
            arch: x64,
            name: 'windows-x64 MSVC 64bit static',
            msvc-arch: x64,
            artifact: 'windows-msvc64-static.7z',
            shared: 'no',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
          - {
            os: windows-2022,
            arch: x86,
            name: 'windows-x86 MSVC 32bit static',
            msvc-arch: x86,
            artifact: 'windows-msvc32-static.7z',
            shared: 'no',
            archiver: '7z a',
            generators: 'Visual Studio 17 2022'
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4

      - name: '🛠️ Win MINGW setup'
        if: contains(matrix.config.mingw, 'MINGW')
        uses: msys2/setup-msys2@v2
        with:
          msystem: ${{ matrix.config.mingw }}
          install: >-
            mingw-w64-${{ matrix.config.mingw-arch }}-cmake
            mingw-w64-${{ matrix.config.mingw-arch }}-ninja
            mingw-w64-${{ matrix.config.mingw-arch }}-cmocka
            mingw-w64-${{ matrix.config.mingw-arch }}-${{ matrix.compiler }}
            mingw-w64-${{ matrix.config.mingw-arch }}-toolchain

      - name: '🛠️ Win MSVC 64 setup'
        if: contains(matrix.config.name, 'MSVC 64')
        uses: microsoft/setup-msbuild@v2

      - name: '🛠️ Win MSVC 64 dev cmd setup'
        if: contains(matrix.config.name, 'MSVC 64')
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x64

      - name: '🚧 Win MSVC 64 build'
        if: contains(matrix.config.name, 'MSVC 64')
        shell: bash
        run: |
          choco install ninja
          ninja --version
          cmake --version
          mkdir build
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip --config ${{ env.BUILD_TYPE }}
          ctest -VV -C ${{ env.BUILD_TYPE }}
          mv ${{ env.BUILD_TYPE }} instdir

      - name: '🛠️ Win MSVC 32 setup'
        if: contains(matrix.config.name, 'MSVC 32')
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x86

      - name: '🚧 Win MSVC 32 build'
        if: contains(matrix.config.name, 'MSVC 32')
        shell: bash
        run: |
          choco install ninja
          ninja --version
          cmake --version
          mkdir build
          cmake \
            -S . \
            -B . \
            -A "win32" \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip --config ${{ env.BUILD_TYPE }}
          ctest -VV -C ${{ env.BUILD_TYPE }}
          mv ${{ env.BUILD_TYPE }} instdir

      - name: '🚧 Win MINGW build'
        if: contains(matrix.config.mingw, 'MINGW')
        shell: msys2 {0}
        run: |
          if [ ${{ matrix.config.mingw }} == 'MINGW32' ]; then
            export CPPFLAGS=-D__USE_MINGW_ANSI_STDIO=1
            #export CC=i686-w64-mingw32-gcc
            export AR=gcc-ar
            export RANLIB=gcc-ranlib
            export CFLAGS="-m32 -static"
            export LDFLAGS="-m32"
            export LDFLAGS_STATIC="-m32"
            export UNICORN_QEMU_FLAGS="--cpu=i386"
          fi
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DCMAKE_C_FLAGS:STRING="-static" \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip
          ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  Macos:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            os: macos-13, # x64
            arch: x64,
            name: 'macos-x64 cmake shared',
            shared: 'yes',
            artifact: 'macos-x64-cmake-shared-x64.7z',
            archiver: '7za a',
            generators: 'Ninja'
          }
          - {
            os: macos-13,
            arch: x64,
            name: 'macos-x64 cmake static',
            shared: 'no',
            artifact: 'macos-x64-cmake-static-x64.7z',
            archiver: '7za a',
            generators: 'Ninja'
          }
          - {
            os: macos-14, # arm64
            arch: arm64,
            name: 'macos-arm64 cmake shared',
            shared: 'yes',
            artifact: 'macos-arm64-cmake-shared-x64.7z',
            archiver: '7za a',
            generators: 'Ninja'
          }
          - {
            os: macos-14,
            arch: arm64,
            name: 'macos-arm64 cmake static',
            shared: 'no',
            artifact: 'macos-arm64-cmake-static-x64.7z',
            archiver: '7za a',
            generators: 'Ninja'
          }
          - {
            os: macos-13,
            arch: x86_64,
            name: 'android cmake',
            artifact: 'Android-x86_64.7z',
            archiver: '7za a',
            generators: 'Ninja'
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4
      - name: '🚧 Mac build'
        if: contains(matrix.config.name, 'macos')
        shell: bash
        run: |
          ninja --version
          cmake --version
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip
          ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '🚧 Android x86_64 build'
        if: contains(matrix.config.name, 'android')
        shell: bash
        run: |
          mkdir build
          mkdir instdir
          cmake . -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
          	-DANDROID_PLATFORM=android-28 \
            -DANDROID_NDK="$ANDROID_NDK" \
            -DANDROID_ABI=${{ matrix.config.arch }} \
            -DOLP_SDK_ENABLE_TESTING=NO \
            -DOLP_SDK_BUILD_EXAMPLES=ON \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip

      - name: '🚧 AVD Cache'
        if: contains(matrix.config.name, 'android')
        uses: actions/cache@v4
        id: avd-cache
        with:
          path: |
            ~/.android/avd/*
            ~/.android/adb*
          key: avd-28

      - name: '🚧 Create x86_64 tests environment'
        if: contains(matrix.config.name, 'android') && steps.avd-cache.outputs.cache-hit != 'true'
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 28
          arch: ${{ matrix.config.arch }}
          force-avd-creation: false
          disable-animations: false
          target: default
          profile: Nexus 6
          emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -verbose -show-kernel
          script: echo "Generated AVD snapshot for caching."

      - name: '🚧 Android x86_64 tests'
        if: contains(matrix.config.name, 'android')
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 28
          force-avd-creation: false
          disable-animations: true
          arch: ${{ matrix.config.arch }}
          target: default
          profile: Nexus 6
          emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -verbose -show-kernel
          script: bash ./adb.sh

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  Linux:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            os: ubuntu-latest,
            arch: x64,
            name: 'ubuntu-x64 cmake shared',
            shared: 'yes',
            artifact: 'ubuntu-cmake-shared-x64.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86,
            name: 'ubuntu-x86 cmake shared',
            shared: 'yes',
            artifact: 'ubuntu-cmake-shared-x86.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x64,
            name: 'ubuntu-x64 cmake static',
            shared: 'no',
            artifact: 'ubuntu-cmake-static-x64.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86,
            name: 'ubuntu-x86 cmake static',
            shared: 'no',
            artifact: 'ubuntu-cmake-static-x86.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-24.04-arm,
            arch: aarch64,
            name: 'ubuntu-aarch64 cmake',
            artifact: 'ubuntu-cmake-aarch64.7z',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu24.04
          }
          - {
            os: ubuntu-22.04,
            arch: ppc64le,
            name: 'ubuntu-ppc64le cmake',
            artifact: 'ubuntu-cmake-ppc64le.7z',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu22.04
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4
      - name: '🚧 Linux x64/x86 build'
        if: contains(matrix.config.arch, 'x64') || contains(matrix.config.arch, 'x86')
        shell: bash
        run: |
          if [ ${{ matrix.config.arch }} == 'x64' ]; then
                sudo apt-get update -q -y
                sudo apt install -q -y libcmocka-dev ninja-build 
          else
                export CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386" 
                sudo dpkg --add-architecture i386
                sudo apt-get update -q -y
                sudo apt install -q -y lib32ncurses-dev lib32z1-dev lib32gcc-9-dev libc6-dev-i386 gcc-multilib \
                  libcmocka-dev:i386 libcmocka0:i386 libc6:i386 libgcc-s1:i386 ninja-build
          fi
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip
          ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '🚧 Linux aarch64 build'
        if: contains(matrix.config.arch, 'aarch64')
        shell: bash
        run: |
          sudo apt-get update -q -y
          sudo apt-get install -q -y cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip
          ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '🚧 Linux ppc64le build'
        if: contains(matrix.config.arch, 'ppc64le')
        uses: uraimo/run-on-arch-action@v3
        with:
          arch: ${{ matrix.config.arch }}
          distro: ${{ matrix.config.distro }}
          setup: |
            mkdir -p "${PWD}/instdir"
          dockerRunArgs: |
            --volume "${PWD}/instdir:/instdir"
          shell: /bin/sh
          install: |
            apt-get update -q -y
            apt-get install -q -y cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
          run: |
            mkdir build
            cmake \
              -S . \
              -B . \
              -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
              -G "${{ matrix.config.generators }}" \
              -DCMAKE_INSTALL_PREFIX:PATH=/instdir
            cmake --build . --config ${{ env.BUILD_TYPE }}
            cmake --install . --strip
            ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}

  AlpineLinux:
    runs-on: ${{ matrix.config.os }}
    name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
    strategy:
      fail-fast: false
      matrix:
        config:
          - {
            os: ubuntu-latest,
            arch: x86_64,
            name: 'alpine-x86_64 cmake shared',
            shared: 'yes',
            artifact: 'alpine-cmake-shared-x86_64.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86_64,
            name: 'alpine-x86_64 cmake static',
            shared: 'no',
            artifact: 'alpine-cmake-static-x86_64.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86,
            name: 'alpine-x86 cmake shared',
            shared: 'yes',
            artifact: 'alpine-cmake-shared-x86.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: x86,
            name: 'alpine-x86 cmake static',
            shared: 'no',
            artifact: 'alpine-cmake-static-x86.7z',
            archiver: '7z a',
            generators: 'Ninja'
          }
          - {
            os: ubuntu-latest,
            arch: aarch64,
            name: 'alpine-aarch64 cmake',
            artifact: 'alpine-cmake-aarch64.7z',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu24.04
          }
          - {
            os: ubuntu-latest,
            arch: ppc64le,
            name: 'alpine-ppc64le cmake',
            artifact: 'alpine-cmake-ppc64le.7z',
            archiver: '7z a',
            generators: 'Ninja',
            distro: ubuntu24.04
          }
        compiler: [ gcc ]
    steps:
      - uses: actions/checkout@v4

      - name: '🚧 Setup Alpine Linux'
        uses: jirutka/setup-alpine@v1
        with:
          arch: ${{ matrix.config.arch }}
          packages: cmake build-base automake cmocka-dev pkgconfig ${{ matrix.compiler }} ninja linux-headers

      - name: '🚧 Linux Alpine build'
        shell: alpine.sh --root {0}
        run: |
          mkdir build
          mkdir instdir
          cmake \
            -S . \
            -B . \
            -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
            -G "${{ matrix.config.generators }}" \
            -DCMAKE_INSTALL_PREFIX:PATH=instdir \
            -DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
          cmake --build . --config ${{ env.BUILD_TYPE }}
          cmake --install . --strip
          ctest -VV -C ${{ env.BUILD_TYPE }}

      - name: '📦 Pack artifact'
        if: always()
        shell: bash
        working-directory: instdir
        run: |
          ls -laR
          ${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*

      - name: '📤 Upload artifact'
        if: always()
        uses: actions/upload-artifact@v4
        with:
          path: ./${{ matrix.config.artifact }}
          name: ${{ matrix.config.artifact }}


================================================
FILE: .github/workflows/build-wheels-publish.yml
================================================
name: Build and publish wheels with cibuildwheel

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

on:
  workflow_dispatch:
    inputs:
      debugMode:
        description: 'Debug Mode'
        required: false
        default: ''
        type: choice
        options:
          - '0'
          - '1'
  push:
    paths-ignore:
      - ".gitignore"
      - "AUTHORS.TXT"
      - "COPYING"
      - "COPYING.LGPL2"
      - "COPYING_GLIB"
      - "CREDITS.TXT"
      - "ChangeLog"
      - "README.md"
      - "docs/**"
  pull_request:

env:
  # Enable DEBUG flag either according to the tag release or manual override
  UNICORN_DEBUG: ${{ inputs.debugMode != '' && inputs.debugMode || (startsWith(github.ref, 'refs/tags') && !startsWith(github.ref, 'refs/tags/v')) && '0' || contains(github.event.head_commit.message, 'CI(release)') && '0' || '1' }}

jobs:
  # job to be executed for every push - testing purpose
  build_and_test_wheels:
    name: Building on ${{ matrix.os }} - ${{ matrix.arch }} - ${{ matrix.cibw_build }}
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          # NOTE: Doing this to parallelize and speed up workflow
          # i686 - manylinux
          - { os: ubuntu-latest, arch: i686, cibw_build: 'cp*-manylinux*', cibw_skip: 'cp36*' }
          # i686 - musllinux
          - { os: ubuntu-latest, arch: i686, cibw_build: 'cp*-musllinux*', cibw_skip: 'cp36*' }
          # x86_64 - manylinux
          - { os: ubuntu-latest, arch: x86_64, cibw_build: 'cp*-manylinux*', cibw_skip: 'cp36*' }
          # x86_64 - musllinux
          - { os: ubuntu-latest, arch: x86_64, cibw_build: 'cp*-musllinux*', cibw_skip: 'cp36*' }
          # aarch64 - manylinux
          - { os: ubuntu-24.04-arm, arch: aarch64, cibw_build: 'cp*-manylinux*', cibw_skip: 'cp36*' }
          # aarch64 - musllinux
          - { os: ubuntu-24.04-arm, arch: aarch64, cibw_build: 'cp*-musllinux*', cibw_skip: 'cp36*' }
          - { os: macos-13, arch: x86_64, cibw_build: 'cp*', cibw_skip: 'cp36*' }
          - { os: macos-14, arch: arm64, cibw_build: 'cp*', cibw_skip: 'cp36* cp37*' }
          - { os: windows-2022, arch: AMD64, cibw_build: 'cp*', cibw_skip: 'cp36*' }
          - { os: windows-2022, arch: x86, cibw_build: 'cp*', cibw_skip: 'cp36*' }

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      # https://github.com/actions/upload-artifact/issues/22
      - name: Prepare a unique name for Artifacts
        shell: bash
        run: |
          # replace not-allowed chars with dash
          name="cibw-wheels-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.cibw_build }}"
          name=$(echo -n "$name" | sed -e 's/[ \t:\/\\"<>|*?]/-/g' -e 's/--*/-/g' | sed -e 's/\-$//')
          echo "ARTIFACT_NAME=$name" >> $GITHUB_ENV

      - name: "Increase pagefile to avoid OOM"
        if: runner.os == 'Windows'
        uses: al-cheb/configure-pagefile-action@v1.4
        with:
          minimum-size: 8GB
          disk-root: "C:"

      - name: '🛠️ Add msbuild to PATH'
        if: runner.os == 'Windows'
        uses: microsoft/setup-msbuild@v2
        with:
          vs-version: '17'

      # https://cibuildwheel.pypa.io/en/stable/faq/#macos-building-cpython-38-wheels-on-arm64
      - uses: actions/setup-python@v5
        if: runner.os == 'macOS' && runner.arch == 'ARM64'
        with:
          python-version: 3.8

      - name: '🛠️ Win MSVC 32 dev cmd setup'
        if: runner.os == 'Windows' && matrix.arch == 'x86'
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x86

      - name: '🛠️ Win MSVC 64 dev cmd setup'
        if: runner.os == 'Windows' && matrix.arch == 'AMD64'
        uses: ilammy/msvc-dev-cmd@v1
        with:
          arch: x64

      - name: '🛠️ Set up QEMU'
        if: runner.os == 'Linux' && matrix.arch == 'i686'
        uses: docker/setup-qemu-action@v3

      - name: '🚧 cibuildwheel run'
        uses: pypa/cibuildwheel@v2.23.3
        env:
          CIBW_BUILD_FRONTEND: build
          CIBW_BUILD: ${{ matrix.cibw_build }}
          CIBW_SKIP: ${{ matrix.cibw_skip }}
          CIBW_ARCHS: ${{ matrix.arch }}
          CIBW_ENVIRONMENT: DEBUG=${{ env.UNICORN_DEBUG }} GENERATORS='Visual Studio 17 2022'
          CIBW_ENVIRONMENT_PASS_LINUX: DEBUG
          CIBW_TEST_EXTRAS: test
          CIBW_TEST_COMMAND: 'python -m unittest discover -v {project}/tests/regress "*.py"'
          # https://github.com/pypa/cibuildwheel/pull/1169
          CIBW_TEST_SKIP: "cp38-macosx_*:arm64"
        with:
          package-dir: bindings/python
          output-dir: wheelhouse

      # we re-tag cp38 wheel (just an old one) with py2 tag. Hacky but it works...
      - name: '🚧 Python 2.7 wheels re-tagging'
        env:
          PIP_BREAK_SYSTEM_PACKAGES: 1
        shell: bash
        run: |
          python3 -m pip install -U pip wheel
          python3 -m wheel tags --python-tag='py2' --abi-tag=none wheelhouse/*cp37*.whl

      - uses: LizardByte/actions/actions/setup_python@v2025.715.25226
        if: (runner.os == 'Linux' && (matrix.arch == 'x86_64' || matrix.arch == 'aarch64') && matrix.cibw_build == 'cp*-manylinux*') || (runner.os == 'macOS' && matrix.arch == 'arm64') || (runner.os == 'Windows' && matrix.arch == 'AMD64')
        with:
          python-version: 2.7

      # we install and test python2.7 wheels only on native arch
      - name: 'Python 2.7 tests - Windows'
        if: runner.os == 'Windows' && matrix.arch == 'AMD64'
        shell: bash
        run: |
          C:/Python27/python.exe -m pip install capstone==4.0.2 wheelhouse/*py2*.whl
          C:/Python27/python.exe -m unittest discover tests/regress "*.py"

      # NOTE: no python2.7 support for macos-13: https://github.com/LizardByte/setup-python-action/issues/2
      - name: 'Python 2.7 tests - Non-Windows'
        if: (runner.os == 'Linux' && (matrix.arch == 'x86_64' || matrix.arch == 'aarch64') && matrix.cibw_build == 'cp*-manylinux*') || (runner.os == 'macOS' && matrix.arch == 'arm64')
        run: |
          python2 -m pip install capstone==4.0.2 wheelhouse/*py2*.whl
          python2 -m unittest discover tests/regress "*.py"

      - uses: actions/upload-artifact@v4
        with:
          name: ${{ env.ARTIFACT_NAME }}
          path: ./wheelhouse/*.whl

  make_sdist:
    name: Make SDist
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Build SDist
        run: |
          python3 -m pip install -U pip build
          python3 -m build --sdist bindings/python
          python3 -m pip install bindings/python/dist/*.tar.gz
          python3 -c 'import unicorn; print(f"Unicorn version installed from sdist: {unicorn.__version__}")'

      - uses: actions/upload-artifact@v4
        with:
          name: sdist-archive
          path: bindings/python/dist/*.tar.gz

  publish:
    needs: [ build_and_test_wheels, make_sdist ]
    environment: pypi
    permissions:
      id-token: write
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags') && !startsWith(github.ref, 'refs/tags/v')
    steps:
      - uses: actions/download-artifact@v4
        with:
          merge-multiple: true
          path: dist

      - name: Show downloaded artifacts
        run: ls -laR dist

      - name: '📦 Publish distribution to PyPI'
        uses: pypa/gh-action-pypi-publish@release/v1
        with:
          user: __token__
          password: ${{ secrets.pypi_pass }}


================================================
FILE: .github/workflows/prerelease.yml
================================================
on:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

name: Upload Prerelease Assets

jobs:
  build:
    name: Upload Release Assets
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: true
          prerelease: true
                
      - name: create artifacts directory
        run: mkdir artifact
        working-directory: ./

      - uses: dawidd6/action-download-artifact@v2
        id: download-artifact
        with:
          workflow: build-uc2.yml
          workflow_conclusion: success
          branch: master
          path: artifact

      - name: Display structure of downloaded files
        run: ls -R
        working-directory: artifact


      - name: Upload Release Assets
        id: upload-release-assets
        uses: dwenegar/upload-release-assets@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          release_id: ${{ steps.create_release.outputs.id }}
          assets_path: artifact

================================================
FILE: .github/workflows/release.yml
================================================
on:
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

name: Upload Release Assets

jobs:
  build:
    name: Upload Release Assets
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ github.ref }}
          release_name: Release ${{ github.ref }}
          draft: true
          prerelease: false
                
      - name: create artifacts directory
        run: mkdir artifact
        working-directory: ./

      - uses: dawidd6/action-download-artifact@v6
        id: download-artifact
        with:
          workflow: build-uc2.yml
          workflow_conclusion: success
          branch: master
          path: artifact

      - name: Display structure of downloaded files
        run: ls -R
        working-directory: artifact


      - name: Upload Release Assets
        id: upload-release-assets
        uses: dwenegar/upload-release-assets@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          release_id: ${{ steps.create_release.outputs.id }}
          assets_path: artifact

================================================
FILE: .github/workflows/zigbuild.yml
================================================
name: Zig Build

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

on:
  push:
    paths-ignore:
      - ".gitignore"
      - "docs/**"
      - "README"
      - "CREDITS.TXT"
      - "COPYING_GLIB"
      - "COPYING.LGPL2"
      - "AUTHORS.TXT"
      - "CHANGELOG"
      - "COPYING"
  pull_request:

jobs:
  build-ubuntu:
    strategy:
      fail-fast: false
      matrix:
        runs-on: [ubuntu-latest]
    runs-on: ${{ matrix.runs-on }}
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - uses: mlugg/setup-zig@v1
        with:
          version: 0.14.0
      - uses: lukka/get-cmake@latest
        with:
          cmakeVersion: latest
          ninjaVersion: latest

      - name: CMake Build
        run: zig build cmake
      
      - name: Build Summary
        run: zig build --summary all -freference-trace
  build-macos:
    strategy:
      fail-fast: false
      matrix:
        runs-on: [macos-latest]
    runs-on: ${{ matrix.runs-on }}
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: recursive
          fetch-depth: 0
      - uses: mlugg/setup-zig@v1
        with:
          version: 0.14.0
      - uses: lukka/get-cmake@latest
        with:
          cmakeVersion: latest
          ninjaVersion: latest

        # MacOS has a hard process limit that we will hit if we do a
        # parallel build, so disable parallel cmake build (manual
        # option set in `build.zig`)
      - name: CMake Build
        run: zig build -Dparallel=false cmake

      - name: Build Summary
        run: zig build --summary all -freference-trace
# ===================================================================  
  # zig-mingw:
  #   runs-on: windows-latest
  #   strategy:
  #     fail-fast: false
  #     matrix:
  #       include: [{ msystem: CLANG64, arch: x86_64, prefix: /clang64 }, { msystem: CLANG32, arch: i686, prefix: /clang32 }, { msystem: CLANGARM64, arch: aarch64, prefix: /clangarm64 }]
  #   steps:
  #     - uses: actions/checkout@v4
  #       with:
  #         path: temp
  #         submodules: recursive
  #         fetch-depth: 0
  #     - uses: goto-bus-stop/setup-zig@v2
  #       with:
  #         version: master
  #     - uses: msys2/setup-msys2@v2
  #       with:
  #         msystem: ${{ matrix.msystem }}
  #         path-type: inherit
  #         location: D:\
  #         install: git mingw-w64-clang-${{ matrix.arch }}-cmake
  #         update: true
      
  #     - name: Move Checkout
  #       run: |
  #         Copy-Item -Path ".\temp" -Destination "C:\_" -Recurse

  #     - name: Build Summary - ${{ matrix.arch }}
  #       shell: msys2 {0}
  #       run: |
  #           cd /C/_
  #           zig build cmake
  #           if [${{ matrix.config.arch }} == 'i686' ]; then
  #             zig build --summary all -freference-trace -Dtarget=x86-windows
  #           else
  #             zig build --summary all -freference-trace -Dtarget=${{ matrix.arch }}-windows
  #           fi
  


================================================
FILE: .gitignore
================================================
.DS_Store
*.swp
*.d
*.o
*.a
*.dSYM
*.so
*.so.*
*.exe
*.dll
*.class
*.jar
*.gem
*~

qemu/*-softmmu/

tags
qemu/config-host.ld
qemu/config.log
qemu/config.status
qemu/config-host.h
qemu/config-host.h-timestamp
qemu/config-host.mak

libunicorn*.dll
libunicorn*.so
libunicorn*.dylib

unicorn.pc

unicorn.lib
unicorn.dll
unicorn.exp
unicorn.def
unicorn_*.lib
unicorn_*.exp
unicorn_*.dll

.gdb_history
*.tgz
*.zip
*.pyc
_*.txt
_*.diff
tmp/

bindings/python/build/
bindings/python/dist/
bindings/python/src/
bindings/python/unicorn.egg-info/
bindings/python/unicorn/lib/
bindings/python/unicorn/include/
bindings/python/MANIFEST
/target/
Cargo.lock
config.log


#################
## Visual Studio
#################

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# vscode
.vscode
.vscode/

# User-specific files
*.opensdf
*.sdf
*.suo
*.user
*.sln.docstates

# Build results

[Dd]ebug/
[Rr]elease/
x64/
Win32/
build/
build_*
rust_build
[Bb]in/
[Oo]bj/
packages/
cmocka/
zig-cache/
zig-out/
.cache

##################
## PyCharm Project
##################

.idea/


================================================
FILE: .gitmodules
================================================
[submodule "docs/Unicorn_Engine_Documentation"]
	path = docs/Unicorn_Engine_Documentation
	url = https://github.com/kabeor/Unicorn-Engine-Documentation


================================================
FILE: AUTHORS.TXT
================================================
Nguyen Anh Quynh <aquynh -at- gmail.com>
Dang Hoang Vu <dang.hvu -at- gmail.com>


================================================
FILE: CMakeLists.txt
================================================
# CMake setup for Unicorn 2.
# By Huitao Chen & Nguyen Anh Quynh, 2019-2020

cmake_minimum_required(VERSION 3.5...3.20)

# Only required for MSVC, but we can't know the compiler at this point because we haven't
# called enable_language() or project(), and if we did that it would lock in the old
# policy. Setting these policies is harmless for non-MSVC though, so just enable them
# always.
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.15")
    # Set explicitly the policies we want rather than raising the base to the current
    # version. This prevents unintended behavior changes as CMake evolves and provides a
    # consistent experience across different CMake versions.
    # CMP0091: prevent msvcrt flags being added to default CMAKE_<LANG>_FLAGS_<CONFIG>
    cmake_policy(SET CMP0091 NEW)
    # CMP0092: prevent warning flags being added to default CMAKE_<LANG>_FLAGS for MSVC
    cmake_policy(SET CMP0092 NEW)
endif()

# Honor visibility properties for all target types.
cmake_policy(SET CMP0063 NEW)

option(ZIG_BUILD "Enable zig build" OFF)
if(ZIG_BUILD)
    include(cmake/zig.cmake)
endif()

# Workaround to fix wrong compiler on macos.
if(APPLE AND NOT CMAKE_C_COMPILER)
    set(CMAKE_C_COMPILER "/usr/bin/cc")
endif()

# Source: https://github.com/capstone-engine/capstone/blob/next/CMakeLists.txt
# If building for OSX it's best to allow CMake to handle building both architectures
if(APPLE)
    # The cibuildwheel on Github Actions sets this env variable
    # with the architecture flags it wants to build for.
    if(DEFINED ENV{ARCHFLAGS})
        if("$ENV{ARCHFLAGS}" STREQUAL "-arch arm64 -arch x86_64")
            set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
        elseif("$ENV{ARCHFLAGS}" STREQUAL "-arch arm64")
            set(CMAKE_OSX_ARCHITECTURES "arm64")
        elseif("$ENV{ARCHFLAGS}" STREQUAL "-arch x86_64")
            set(CMAKE_OSX_ARCHITECTURES "x86_64")
        endif()
    else()
        set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64")
    endif()
endif()

# Detect if unicorn is compiled as the top-level project
set(PROJECT_IS_TOP_LEVEL OFF)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
    set(PROJECT_IS_TOP_LEVEL ON)

    # Enable folder support
    set_property(GLOBAL PROPERTY USE_FOLDERS ON)
endif()

project(unicorn C)

# We depend on the availability of the CMAKE_MSVC_RUNTIME_LIBRARY, which is only
# available in CMake 3.15 and above (see also the comments above in regards to policy
# CMP0091).
if(MSVC AND CMAKE_VERSION VERSION_LESS "3.15")
    message(FATAL_ERROR "Please update CMake to 3.15 or greater.")
endif()

# mainline qemu mostly just uses compiler default
set(CMAKE_C_STANDARD 11)

set(UNICORN_VERSION_MAJOR 2)
set(UNICORN_VERSION_MINOR 1)
set(UNICORN_VERSION_PATCH 4)

include(cmake/bundle_static.cmake)

# Even though we generate shared lib and static archive at the same time, we still support
# using unicorn as a subdirectory so we have to respect BUILD_SHARED_LIBS.
#
# Also we would like users to link a native cmake target, instead of a custom target for better
# compatability.
option(BUILD_SHARED_LIBS "Build shared instead of static library" ${PROJECT_IS_TOP_LEVEL})
option(UNICORN_LEGACY_STATIC_ARCHIVE "Enable Unicorn v1 style all-in-one objects archive for libunicorn.a" ${PROJECT_IS_TOP_LEVEL})
option(UNICORN_FUZZ "Enable fuzzing" OFF)
option(UNICORN_LOGGING "Enable logging" OFF)
option(UNICORN_BUILD_TESTS "Build unicorn tests" ${PROJECT_IS_TOP_LEVEL})
option(UNICORN_INSTALL "Enable unicorn installation" ${PROJECT_IS_TOP_LEVEL})
set(UNICORN_ARCH "x86;arm;aarch64;riscv;mips;sparc;m68k;ppc;s390x;tricore" CACHE STRING "Enabled unicorn architectures")
option(UNICORN_TRACER "Trace unicorn execution" OFF)

foreach(ARCH_LOOP ${UNICORN_ARCH})
    string(TOUPPER "${ARCH_LOOP}" ARCH_LOOP)
    set(UNICORN_HAS_${ARCH_LOOP} TRUE)
endforeach()

if(MSVC)
    include_directories(
        ${CMAKE_CURRENT_SOURCE_DIR}/msvc
    )
else()
    include_directories(
        ${CMAKE_BINARY_DIR}
    )
endif()

include_directories(
    glib_compat
    qemu
    qemu/include
    include
    qemu/tcg
)

# QEMU logging facility
if (UNICORN_LOGGING)
    add_compile_options(-DUNICORN_LOGGING)
endif()

# Some distributions on some rare architecures don't auto link atomic for us and
# we do this manually by adding flags.
set(ATOMIC_LINKAGE_FIX FALSE)
if(MSVC)
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
        set(MSVC_FLAG  -D__x86_64__)
    elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
        set(MSVC_FLAG  -D__i386__)
    else()
        message(FATAL_ERROR "Neither WIN64 or WIN32!")
    endif()

    add_compile_options(
        -Dinline=__inline
        -D__func__=__FUNCTION__
        -D_CRT_SECURE_NO_WARNINGS
        -DWIN32_LEAN_AND_MEAN
        ${MSVC_FLAG}
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/tcg/i386
    )

    # Disable some warnings
    add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4018>)
    add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4098>)
    add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4244>)
    add_compile_options($<$<COMPILE_LANGUAGE:C>:/wd4267>)

    # handle msvcrt setting being passed in CMAKE_C_FLAGS
    if(CMAKE_C_FLAGS MATCHES "[/-]M[TD]d?")
        # ensure CMAKE_MSVC_RUNTIME_LIBRARY is not already defined
        if(DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
            message(FATAL_ERROR "please set the runtime library via either CMAKE_C_FLAGS or CMAKE_MSVC_RUNTIME_LIBRARY, not both")
        endif()

        if(CMAKE_C_FLAGS MATCHES "[/-]MTd")
            set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebug")
        elseif(CMAKE_C_FLAGS MATCHES "[/-]MDd")
            set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDebugDLL")
        elseif(CMAKE_C_FLAGS MATCHES "[/-]MT")
            set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
        elseif(CMAKE_C_FLAGS MATCHES "[/-]MD")
            set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreadedDLL")
        endif()

        # prevent the arg from occurring more than once (not a big deal, just to keep tidy)
        string(REGEX REPLACE "[/-]M[TD]d?" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
    endif()
else()
    if(MINGW)
        execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine
            OUTPUT_VARIABLE UC_COMPILER_VERSION)

        if(UC_COMPILER_VERSION MATCHES "^i686.*")
            set(UNICORN_TARGET_ARCH "i386")
            set(UNICORN_CFLAGS -m32 -static-libgcc) # Workaround for github action bugs
            set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m32")
            set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m32")
        elseif(UC_COMPILER_VERSION MATCHES "^x86_64.*")
            set(UNICORN_TARGET_ARCH "i386")
            set(UNICORN_CFLAGS -m64 -mcx16)
            set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
            set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
        elseif(UC_COMPILER_VERSION MATCHES "^aarch64.*")
            set(UNICORN_TARGET_ARCH "aarch64")
        endif()
    elseif(ANDROID_ABI)
        string(FIND "${ANDROID_ABI}" "arm64" UC_RET)
        file(WRITE ${CMAKE_BINARY_DIR}/adb.sh "#!/bin/bash\n\n# Auto-generated by CMakeLists.txt\n\nadb shell mkdir -p /data/local/tmp/build\n")

        if(${UC_RET} GREATER_EQUAL "0")
            set(UNICORN_TARGET_ARCH "aarch64")
        else()
            string(FIND "${ANDROID_ABI}" "armeabi" UC_RET)

            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "arm")
            else()
                set(UNICORN_TARGET_ARCH "i386")
            endif()
        endif()
    else()
        execute_process(COMMAND ${CMAKE_C_COMPILER} -dM -E -
            INPUT_FILE /dev/null
            OUTPUT_VARIABLE UC_COMPILER_MACRO)

        while(TRUE)
            string(FIND "${UC_COMPILER_MACRO}" "__x86_64__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "i386")
                string(FIND "${UC_COMPILER_MACRO}" "__ILP32__" UC_RET)
                if(${UC_RET} GREATER_EQUAL "0")
                    set(UNICORN_CFLAGS -mx32)
                    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -mx32")
                    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -mx32")
                else()
                    set(UNICORN_CFLAGS -m64 -mcx16)
                    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
                    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m64")
                endif()
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__i386__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "i386")
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__arm__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "arm")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__aarch64__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "aarch64")
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__mips__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "mips")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__sparc__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "sparc")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__ia64__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "ia64")
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "_ARCH_PPC" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "ppc")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__riscv" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "riscv")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND "${UC_COMPILER_MACRO}" "__s390__" UC_RET)
            if(${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "s390")
                set(ATOMIC_LINKAGE_FIX TRUE)
                break()
            endif()
            string(FIND ${UC_COMPILER_MACRO} "__tricore__" UC_RET)
            if (${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "tricore")
                break()
            endif()
            string(FIND ${UC_COMPILER_MACRO} "loongarch64" UC_RET)
            if (${UC_RET} GREATER_EQUAL "0")
                set(UNICORN_TARGET_ARCH "loongarch64")
                break()
            endif()
            message(FATAL_ERROR "Unknown host compiler: ${CMAKE_C_COMPILER}.")
        endwhile(TRUE)
    endif()

    set(EXTRA_CFLAGS "--extra-cflags=")
    if(UNICORN_HAS_X86)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_X86 ")
    endif()
    if(UNICORN_HAS_ARM)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_ARM ")
    endif()
    if(UNICORN_HAS_AARCH64)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_ARM64 ")
    endif()
    if(UNICORN_HAS_M68K)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_M68K ")
    endif()
    if(UNICORN_HAS_MIPS)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_MIPS -DUNICORN_HAS_MIPSEL -DUNICORN_HAS_MIPS64 -DUNICORN_HAS_MIPS64EL ")
    endif()
    if(UNICORN_HAS_SPARC)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_SPARC ")
    endif()
    if(UNICORN_HAS_PPC)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_PPC ")
    endif()
    if(UNICORN_HAS_RISCV)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_RISCV ")
    endif()
    if (UNICORN_HAS_S390X)
        set (EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_S390X ")
    endif()
    if (UNICORN_HAS_TRICORE)
        set (EXTRA_CFLAGS "${EXTRA_CFLAGS}-DUNICORN_HAS_TRICORE ")
    endif()

    set(EXTRA_CFLAGS "${EXTRA_CFLAGS}-fPIC")
    if(ANDROID_ABI)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS} --target=${CMAKE_C_COMPILER_TARGET}")
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS} --sysroot=${CMAKE_SYSROOT}")
    endif()
    if(UNICORN_FUZZ)
        set(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${CMAKE_C_FLAGS}")
    endif()
    if(UNICORN_TRACER)
        set (EXTRA_CFLAGS "${EXTRA_CFLAGS} -DUNICORN_TRACER")
    endif()
    if (ATOMIC_LINKAGE_FIX)
        set (EXTRA_CFLAGS "${EXTRA_CFLAGS} -latomic")
    endif()
    if (CMAKE_OSX_SYSROOT)
        # https://github.com/unicorn-engine/unicorn/issues/1917
        set (EXTRA_CFLAGS "${EXTRA_CFLAGS} -isysroot ${CMAKE_OSX_SYSROOT} ")
    endif()

    set(TARGET_LIST "--target-list=")
    if(UNICORN_HAS_X86)
        set(TARGET_LIST "${TARGET_LIST}x86_64-softmmu, ")
    endif()
    if(UNICORN_HAS_ARM)
        set(TARGET_LIST "${TARGET_LIST}arm-softmmu, ")
    endif()
    if(UNICORN_HAS_AARCH64)
        set(TARGET_LIST "${TARGET_LIST}aarch64-softmmu, ")
    endif()
    if(UNICORN_HAS_M68K)
        set(TARGET_LIST "${TARGET_LIST}m68k-softmmu, ")
    endif()
    if(UNICORN_HAS_MIPS)
        set(TARGET_LIST "${TARGET_LIST}mips-softmmu, mipsel-softmmu, mips64-softmmu, mips64el-softmmu, ")
    endif()
    if(UNICORN_HAS_SPARC)
        set(TARGET_LIST "${TARGET_LIST}sparc-softmmu, sparc64-softmmu, ")
    endif()
    if(UNICORN_HAS_PPC)
        set(TARGET_LIST "${TARGET_LIST}ppc-softmmu, ppc64-softmmu, ")
    endif()
    if(UNICORN_HAS_RISCV)
        set(TARGET_LIST "${TARGET_LIST}riscv32-softmmu, riscv64-softmmu, ")
    endif()
    if(UNICORN_HAS_S390X)
        set(TARGET_LIST "${TARGET_LIST}s390x-softmmu, ")
    endif()
    if (UNICORN_HAS_TRICORE)
        set (TARGET_LIST "${TARGET_LIST}tricore-softmmu, ")
    endif()
    set(TARGET_LIST "${TARGET_LIST} ")

    # GEN config-host.mak & target directories
    # MESSAGE(STATUS "sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/configure
    #     --cc=${CMAKE_C_COMPILER}
    #     ${EXTRA_CFLAGS}
    #     ${TARGET_LIST}
    #     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}"
    # )
    execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/configure
        --cc=${CMAKE_C_COMPILER}
        ${EXTRA_CFLAGS}
        ${TARGET_LIST}
        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    )
    execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
        INPUT_FILE ${CMAKE_BINARY_DIR}/config-host.mak
        OUTPUT_FILE ${CMAKE_BINARY_DIR}/config-host.h
    )
    if(UNICORN_HAS_X86)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/x86_64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/x86_64-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_ARM)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/arm-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/arm-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_AARCH64)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/aarch64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/aarch64-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_M68K)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/m68k-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/m68k-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_MIPS)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/mips-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/mips-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/mipsel-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/mipsel-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/mips64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/mips64-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/mips64el-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/mips64el-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_SPARC)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/sparc-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/sparc-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/sparc64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/sparc64-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_PPC)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/ppc-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/ppc-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/ppc64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/ppc64-softmmu/config-target.h
        )
    endif()
    if(UNICORN_HAS_RISCV)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/riscv32-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/riscv32-softmmu/config-target.h
        )
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/riscv64-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/riscv64-softmmu/config-target.h
        )
    endif()
    if (UNICORN_HAS_S390X)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/s390x-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/s390x-softmmu/config-target.h
        )
    endif()
    if (UNICORN_HAS_TRICORE)
        execute_process(COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/qemu/scripts/create_config
            INPUT_FILE ${CMAKE_BINARY_DIR}/tricore-softmmu/config-target.mak
            OUTPUT_FILE ${CMAKE_BINARY_DIR}/tricore-softmmu/config-target.h
        )
    endif()
    add_compile_options(
        ${UNICORN_CFLAGS}
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/tcg/${UNICORN_TARGET_ARCH}
        -D_GNU_SOURCE
        -D_FILE_OFFSET_BITS=64
        -D_LARGEFILE_SOURCE
        -Wall
        -fPIC
    )
    if (ATOMIC_LINKAGE_FIX)
        add_compile_options(
            -latomic
        )
    endif()
    if(APPLE)
        # This warning is disabled by default for gcc and doesn't cause any bug.
        add_compile_options(
            -Wno-missing-braces
        )
    endif()
endif()

set(UNICORN_ARCH_COMMON
    qemu/exec.c
    qemu/exec-vary.c

    qemu/softmmu/cpus.c
    qemu/softmmu/ioport.c
    qemu/softmmu/memory.c
    qemu/softmmu/memory_mapping.c

    qemu/fpu/softfloat.c

    qemu/tcg/optimize.c
    qemu/tcg/tcg.c
    qemu/tcg/tcg-op.c
    qemu/tcg/tcg-op-gvec.c
    qemu/tcg/tcg-op-vec.c

    qemu/accel/tcg/cpu-exec.c
    qemu/accel/tcg/cpu-exec-common.c
    qemu/accel/tcg/cputlb.c
    qemu/accel/tcg/tcg-all.c
    qemu/accel/tcg/tcg-runtime.c
    qemu/accel/tcg/tcg-runtime-gvec.c
    qemu/accel/tcg/translate-all.c
    qemu/accel/tcg/translator.c

    qemu/softmmu/unicorn_vtlb.c
)

if(UNICORN_HAS_X86)
add_library(x86_64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/hw/i386/x86.c

    qemu/target/i386/arch_memory_mapping.c
    qemu/target/i386/bpt_helper.c
    qemu/target/i386/cc_helper.c
    qemu/target/i386/cpu.c
    qemu/target/i386/excp_helper.c
    qemu/target/i386/fpu_helper.c
    qemu/target/i386/helper.c
    qemu/target/i386/int_helper.c
    qemu/target/i386/machine.c
    qemu/target/i386/mem_helper.c
    qemu/target/i386/misc_helper.c
    qemu/target/i386/mpx_helper.c
    qemu/target/i386/seg_helper.c
    qemu/target/i386/smm_helper.c
    qemu/target/i386/svm_helper.c
    qemu/target/i386/translate.c
    qemu/target/i386/xsave_helper.c
    qemu/target/i386/unicorn.c
)

if(MSVC)
    target_compile_options(x86_64-softmmu PRIVATE
        -DNEED_CPU_H
        /FIx86_64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/x86_64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/i386
    )
else()
    target_compile_options(x86_64-softmmu PRIVATE
        -DNEED_CPU_H
        -include x86_64.h
        -I${CMAKE_BINARY_DIR}/x86_64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/i386
    )

    # Log and pow
    target_link_libraries(x86_64-softmmu PRIVATE m)
endif()

if(UNICORN_TRACER)
    target_compile_options(x86_64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_ARM)
add_library(arm-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/arm/cpu.c
    qemu/target/arm/crypto_helper.c
    qemu/target/arm/debug_helper.c
    qemu/target/arm/helper.c
    qemu/target/arm/iwmmxt_helper.c
    qemu/target/arm/m_helper.c
    qemu/target/arm/neon_helper.c
    qemu/target/arm/op_helper.c
    qemu/target/arm/psci.c
    qemu/target/arm/tlb_helper.c
    qemu/target/arm/translate.c
    qemu/target/arm/vec_helper.c
    qemu/target/arm/vfp_helper.c
    qemu/target/arm/unicorn_arm.c
)

if(MSVC)
    target_compile_options(arm-softmmu PRIVATE
        -DNEED_CPU_H
        /FIarm.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/arm-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/arm
    )
else()
    target_compile_options(arm-softmmu PRIVATE
        -DNEED_CPU_H
        -include arm.h
        -I${CMAKE_BINARY_DIR}/arm-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/arm
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(arm-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_AARCH64)
add_library(aarch64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/arm/cpu64.c
    qemu/target/arm/cpu.c
    qemu/target/arm/crypto_helper.c
    qemu/target/arm/debug_helper.c
    qemu/target/arm/helper-a64.c
    qemu/target/arm/helper.c
    qemu/target/arm/iwmmxt_helper.c
    qemu/target/arm/m_helper.c
    qemu/target/arm/neon_helper.c
    qemu/target/arm/op_helper.c
    qemu/target/arm/pauth_helper.c
    qemu/target/arm/psci.c
    qemu/target/arm/sve_helper.c
    qemu/target/arm/tlb_helper.c
    qemu/target/arm/translate-a64.c
    qemu/target/arm/translate.c
    qemu/target/arm/translate-sve.c
    qemu/target/arm/vec_helper.c
    qemu/target/arm/vfp_helper.c
    qemu/target/arm/unicorn_aarch64.c
)

if(MSVC)
    target_compile_options(aarch64-softmmu PRIVATE
        -DNEED_CPU_H
        /FIaarch64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/aarch64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/arm
    )
else()
    target_compile_options(aarch64-softmmu PRIVATE
        -DNEED_CPU_H
        -include aarch64.h
        -I${CMAKE_BINARY_DIR}/aarch64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/arm
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(aarch64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_M68K)
add_library(m68k-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/m68k/cpu.c
    qemu/target/m68k/fpu_helper.c
    qemu/target/m68k/helper.c
    qemu/target/m68k/op_helper.c
    qemu/target/m68k/softfloat.c
    qemu/target/m68k/translate.c
    qemu/target/m68k/unicorn.c
)

if(MSVC)
    target_compile_options(m68k-softmmu PRIVATE
        -DNEED_CPU_H
        /FIm68k.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/m68k-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/m68k
    )
else()
    target_compile_options(m68k-softmmu PRIVATE
        -DNEED_CPU_H
        -include m68k.h
        -I${CMAKE_BINARY_DIR}/m68k-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/m68k
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(m68k-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_MIPS)
add_library(mips-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/mips/cp0_helper.c
    qemu/target/mips/cp0_timer.c
    qemu/target/mips/cpu.c
    qemu/target/mips/dsp_helper.c
    qemu/target/mips/fpu_helper.c
    qemu/target/mips/helper.c
    qemu/target/mips/lmi_helper.c
    qemu/target/mips/msa_helper.c
    qemu/target/mips/op_helper.c
    qemu/target/mips/translate.c
    qemu/target/mips/unicorn.c
)

if(MSVC)
    target_compile_options(mips-softmmu PRIVATE
        -DNEED_CPU_H
        /FImips.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/mips-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
else()
    target_compile_options(mips-softmmu PRIVATE
        -DNEED_CPU_H
        -include mips.h
        -I${CMAKE_BINARY_DIR}/mips-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(mips-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(mipsel-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/mips/cp0_helper.c
    qemu/target/mips/cp0_timer.c
    qemu/target/mips/cpu.c
    qemu/target/mips/dsp_helper.c
    qemu/target/mips/fpu_helper.c
    qemu/target/mips/helper.c
    qemu/target/mips/lmi_helper.c
    qemu/target/mips/msa_helper.c
    qemu/target/mips/op_helper.c
    qemu/target/mips/translate.c
    qemu/target/mips/unicorn.c
)

if(MSVC)
    target_compile_options(mipsel-softmmu PRIVATE
        -DNEED_CPU_H
        /FImipsel.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/mipsel-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
else()
    target_compile_options(mipsel-softmmu PRIVATE
        -DNEED_CPU_H
        -include mipsel.h
        -I${CMAKE_BINARY_DIR}/mipsel-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(mipsel-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(mips64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/mips/cp0_helper.c
    qemu/target/mips/cp0_timer.c
    qemu/target/mips/cpu.c
    qemu/target/mips/dsp_helper.c
    qemu/target/mips/fpu_helper.c
    qemu/target/mips/helper.c
    qemu/target/mips/lmi_helper.c
    qemu/target/mips/msa_helper.c
    qemu/target/mips/op_helper.c
    qemu/target/mips/translate.c
    qemu/target/mips/unicorn.c
)

if(MSVC)
    target_compile_options(mips64-softmmu PRIVATE
        -DNEED_CPU_H
        /FImips64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/mips64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
else()
    target_compile_options(mips64-softmmu PRIVATE
        -DNEED_CPU_H
        -include mips64.h
        -I${CMAKE_BINARY_DIR}/mips64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(mips64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(mips64el-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/mips/cp0_helper.c
    qemu/target/mips/cp0_timer.c
    qemu/target/mips/cpu.c
    qemu/target/mips/dsp_helper.c
    qemu/target/mips/fpu_helper.c
    qemu/target/mips/helper.c
    qemu/target/mips/lmi_helper.c
    qemu/target/mips/msa_helper.c
    qemu/target/mips/op_helper.c
    qemu/target/mips/translate.c
    qemu/target/mips/unicorn.c
)

if(MSVC)
    target_compile_options(mips64el-softmmu PRIVATE
        -DNEED_CPU_H
        /FImips64el.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/mips64el-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
else()
    target_compile_options(mips64el-softmmu PRIVATE
        -DNEED_CPU_H
        -include mips64el.h
        -I${CMAKE_BINARY_DIR}/mips64el-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/mips
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(mips64el-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_SPARC)
add_library(sparc-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/sparc/cc_helper.c
    qemu/target/sparc/cpu.c
    qemu/target/sparc/fop_helper.c
    qemu/target/sparc/helper.c
    qemu/target/sparc/int32_helper.c
    qemu/target/sparc/ldst_helper.c
    qemu/target/sparc/mmu_helper.c
    qemu/target/sparc/translate.c
    qemu/target/sparc/win_helper.c
    qemu/target/sparc/unicorn.c
)

if(MSVC)
    target_compile_options(sparc-softmmu PRIVATE
        -DNEED_CPU_H
        /FIsparc.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/sparc-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/sparc
    )
else()
    target_compile_options(sparc-softmmu PRIVATE
        -DNEED_CPU_H
        -include sparc.h
        -I${CMAKE_BINARY_DIR}/sparc-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/sparc
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(sparc-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(sparc64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/sparc/cc_helper.c
    qemu/target/sparc/cpu.c
    qemu/target/sparc/fop_helper.c
    qemu/target/sparc/helper.c
    qemu/target/sparc/int64_helper.c
    qemu/target/sparc/ldst_helper.c
    qemu/target/sparc/mmu_helper.c
    qemu/target/sparc/translate.c
    qemu/target/sparc/vis_helper.c
    qemu/target/sparc/win_helper.c
    qemu/target/sparc/unicorn64.c
)

if(MSVC)
    target_compile_options(sparc64-softmmu PRIVATE
        -DNEED_CPU_H
        /FIsparc64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/sparc64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/sparc
    )
else()
    target_compile_options(sparc64-softmmu PRIVATE
        -DNEED_CPU_H
        -include sparc64.h
        -I${CMAKE_BINARY_DIR}/sparc64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/sparc
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(sparc64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_PPC)
add_library(ppc-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/hw/ppc/ppc.c
    qemu/hw/ppc/ppc_booke.c

    qemu/libdecnumber/decContext.c
    qemu/libdecnumber/decNumber.c
    qemu/libdecnumber/dpd/decimal128.c
    qemu/libdecnumber/dpd/decimal32.c
    qemu/libdecnumber/dpd/decimal64.c

    qemu/target/ppc/cpu.c
    qemu/target/ppc/cpu-models.c
    qemu/target/ppc/dfp_helper.c
    qemu/target/ppc/excp_helper.c
    qemu/target/ppc/fpu_helper.c
    qemu/target/ppc/int_helper.c
    qemu/target/ppc/machine.c
    qemu/target/ppc/mem_helper.c
    qemu/target/ppc/misc_helper.c
    qemu/target/ppc/mmu-hash32.c
    qemu/target/ppc/mmu_helper.c
    qemu/target/ppc/timebase_helper.c
    qemu/target/ppc/translate.c
    qemu/target/ppc/unicorn.c
)

if(MSVC)
    target_compile_options(ppc-softmmu PRIVATE
        -DNEED_CPU_H
        /FIppc.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/ppc-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/ppc
    )
else()
    target_compile_options(ppc-softmmu PRIVATE
        -DNEED_CPU_H
        -include ppc.h
        -I${CMAKE_BINARY_DIR}/ppc-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/ppc
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(ppc-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(ppc64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/hw/ppc/ppc.c
    qemu/hw/ppc/ppc_booke.c

    qemu/libdecnumber/decContext.c
    qemu/libdecnumber/decNumber.c
    qemu/libdecnumber/dpd/decimal128.c
    qemu/libdecnumber/dpd/decimal32.c
    qemu/libdecnumber/dpd/decimal64.c

    qemu/target/ppc/compat.c
    qemu/target/ppc/cpu.c
    qemu/target/ppc/cpu-models.c
    qemu/target/ppc/dfp_helper.c
    qemu/target/ppc/excp_helper.c
    qemu/target/ppc/fpu_helper.c
    qemu/target/ppc/int_helper.c
    qemu/target/ppc/machine.c
    qemu/target/ppc/mem_helper.c
    qemu/target/ppc/misc_helper.c
    qemu/target/ppc/mmu-book3s-v3.c
    qemu/target/ppc/mmu-hash32.c
    qemu/target/ppc/mmu-hash64.c
    qemu/target/ppc/mmu_helper.c
    qemu/target/ppc/mmu-radix64.c
    qemu/target/ppc/timebase_helper.c
    qemu/target/ppc/translate.c
    qemu/target/ppc/unicorn.c
)

if(MSVC)
    target_compile_options(ppc64-softmmu PRIVATE
        -DNEED_CPU_H
        /FIppc64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/ppc64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/ppc
    )
else()
    target_compile_options(ppc64-softmmu PRIVATE
        -DNEED_CPU_H
        -include ppc64.h
        -I${CMAKE_BINARY_DIR}/ppc64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/ppc
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(ppc64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if(UNICORN_HAS_RISCV)
add_library(riscv32-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/riscv/cpu.c
    qemu/target/riscv/cpu_helper.c
    qemu/target/riscv/csr.c
    qemu/target/riscv/fpu_helper.c
    qemu/target/riscv/op_helper.c
    qemu/target/riscv/pmp.c
    qemu/target/riscv/translate.c
    qemu/target/riscv/unicorn.c
)

if(MSVC)
    target_compile_options(riscv32-softmmu PRIVATE
        -DNEED_CPU_H
        /FIriscv32.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/riscv32-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/riscv
    )
else()
    target_compile_options(riscv32-softmmu PRIVATE
        -DNEED_CPU_H
        -include riscv32.h
        -I${CMAKE_BINARY_DIR}/riscv32-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/riscv
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(riscv32-softmmu PRIVATE -DUNICORN_TRACER)
endif()

add_library(riscv64-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/riscv/cpu.c
    qemu/target/riscv/cpu_helper.c
    qemu/target/riscv/csr.c
    qemu/target/riscv/fpu_helper.c
    qemu/target/riscv/op_helper.c
    qemu/target/riscv/pmp.c
    qemu/target/riscv/translate.c
    qemu/target/riscv/unicorn.c
)

if(MSVC)
    target_compile_options(riscv64-softmmu PRIVATE
        -DNEED_CPU_H
        /FIriscv64.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/riscv64-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/riscv
    )
else()
    target_compile_options(riscv64-softmmu PRIVATE
        -DNEED_CPU_H
        -include riscv64.h
        -I${CMAKE_BINARY_DIR}/riscv64-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/riscv
    )
endif()

if(UNICORN_TRACER)
    target_compile_options(riscv64-softmmu PRIVATE -DUNICORN_TRACER)
endif()

endif()

if (UNICORN_HAS_S390X)
add_library(s390x-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/hw/s390x/s390-skeys.c

    qemu/target/s390x/cc_helper.c
    qemu/target/s390x/cpu.c
    qemu/target/s390x/cpu_features.c
    qemu/target/s390x/cpu_models.c
    qemu/target/s390x/crypto_helper.c
    qemu/target/s390x/excp_helper.c
    qemu/target/s390x/fpu_helper.c
    qemu/target/s390x/helper.c
    qemu/target/s390x/interrupt.c
    qemu/target/s390x/int_helper.c
    qemu/target/s390x/ioinst.c
    qemu/target/s390x/mem_helper.c
    qemu/target/s390x/misc_helper.c
    qemu/target/s390x/mmu_helper.c
    qemu/target/s390x/sigp.c
    qemu/target/s390x/tcg-stub.c
    qemu/target/s390x/translate.c
    qemu/target/s390x/vec_fpu_helper.c
    qemu/target/s390x/vec_helper.c
    qemu/target/s390x/vec_int_helper.c
    qemu/target/s390x/vec_string_helper.c
    qemu/target/s390x/unicorn.c
)

if(MSVC)
    target_compile_options(s390x-softmmu PRIVATE
        -DNEED_CPU_H
        /FIs390x.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/s390x-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/s390x
    )
else()
    target_compile_options(s390x-softmmu PRIVATE
        -DNEED_CPU_H
        -include s390x.h
        -I${CMAKE_BINARY_DIR}/s390x-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/s390x
    )
endif()
endif()


if (UNICORN_HAS_TRICORE)
add_library(tricore-softmmu STATIC
    ${UNICORN_ARCH_COMMON}

    qemu/target/tricore/cpu.c
    qemu/target/tricore/fpu_helper.c
    qemu/target/tricore/helper.c
    qemu/target/tricore/op_helper.c
    qemu/target/tricore/translate.c
    qemu/target/tricore/unicorn.c
)

if(MSVC)
    target_compile_options(tricore-softmmu PRIVATE
        -DNEED_CPU_H
        /FItricore.h
        /I${CMAKE_CURRENT_SOURCE_DIR}/msvc/tricore-softmmu
        /I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/tricore
    )
else()
    target_compile_options(tricore-softmmu PRIVATE
        -DNEED_CPU_H
        -include tricore.h
        -I${CMAKE_BINARY_DIR}/tricore-softmmu
        -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/target/tricore
    )
endif()
endif()


set(UNICORN_SRCS
    uc.c

    qemu/softmmu/vl.c

    qemu/hw/core/cpu.c
)

set(UNICORN_COMMON_SRCS

    list.c

    glib_compat/glib_compat.c
    glib_compat/gtestutils.c
    glib_compat/garray.c
    glib_compat/gtree.c
    glib_compat/grand.c
    glib_compat/glist.c
    glib_compat/gmem.c
    glib_compat/gpattern.c
    glib_compat/gslice.c

    qemu/util/bitmap.c
    qemu/util/bitops.c
    qemu/util/crc32c.c
    qemu/util/cutils.c
    qemu/util/getauxval.c
    qemu/util/guest-random.c
    qemu/util/host-utils.c
    qemu/util/osdep.c
    qemu/util/qdist.c
    qemu/util/qemu-timer.c
    qemu/util/qemu-timer-common.c
    qemu/util/range.c
    qemu/util/qht.c
    qemu/util/pagesize.c
    qemu/util/cacheinfo.c

    qemu/crypto/aes.c
)

# A workaround to avoid circle dependency between unicorn and *-softmmu
if(MSVC)
    set(UNICORN_COMMON_SRCS
        ${UNICORN_COMMON_SRCS}
        qemu/util/oslib-win32.c
        qemu/util/qemu-thread-win32.c
    )
    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
        if(MSVC_VERSION LESS 1600 AND MSVC_IDE)
            add_custom_command(OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/build/setjmp-wrapper-win32.dir/setjmp-wrapper-win32.obj"
                COMMAND ml64 /c /nologo /Fo"${CMAKE_CURRENT_SOURCE_DIR}/build/setjmp-wrapper-win32.dir/setjmp-wrapper-win32.obj" /W3 /errorReport:prompt /Ta"${CMAKE_CURRENT_SOURCE_DIR}/qemu/util/setjmp-wrapper-win32.asm"
                DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/qemu/util/setjmp-wrapper-win32.asm"
            )
            set(UNICORN_SRCS ${UNICORN_SRCS} "${CMAKE_CURRENT_SOURCE_DIR}/build/setjmp-wrapper-win32.dir/setjmp-wrapper-win32.obj")
        else()
            enable_language(ASM_MASM)
        endif()
        set(UNICORN_COMMON_SRCS ${UNICORN_COMMON_SRCS} qemu/util/setjmp-wrapper-win32.asm)
        set_property(SOURCE qemu/util/setjmp-wrapper-win32.asm PROPERTY LANGUAGE ASM_MASM)
    endif()
else()
    set(UNICORN_COMMON_SRCS
        ${UNICORN_COMMON_SRCS}
        qemu/util/oslib-posix.c
        qemu/util/qemu-thread-posix.c
    )
endif()

add_library(unicorn-common STATIC
    ${UNICORN_COMMON_SRCS}
)

set_target_properties(unicorn-common
                      PROPERTIES
                      C_VISIBILITY_PRESET
                      hidden)

if(NOT MSVC AND NOT ANDROID_ABI)
    target_link_libraries(unicorn-common PRIVATE pthread)
endif()

add_library(unicorn ${UNICORN_SRCS})
# For static archive
if (BUILD_SHARED_LIBS)
    add_library(unicorn_static STATIC ${UNICORN_SRCS})
endif()

if(BUILD_SHARED_LIBS)
    if(ANDROID_ABI)
        file(APPEND ${CMAKE_BINARY_DIR}/adb.sh "adb push ./libunicorn.so /data/local/tmp/build/\n")
    endif()
endif()

set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} unicorn-common)
if (ATOMIC_LINKAGE_FIX)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -latomic)
endif()
if(UNICORN_HAS_X86)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_X86)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} x86_64-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_x86 sample_x86_32_gdt_and_seg_regs sample_batch_reg mem_apis shellcode sample_mmu)
    target_link_libraries(x86_64-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_x86)
endif()
if(UNICORN_HAS_ARM)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_ARM)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} arm-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_arm)
    target_link_libraries(arm-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_arm)
endif()
if(UNICORN_HAS_AARCH64)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_ARM64)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} aarch64-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_arm64)
    target_link_libraries(aarch64-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_arm64)
endif()
if(UNICORN_HAS_M68K)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_M68K)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} m68k-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_m68k)
    target_link_libraries(m68k-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_m68k)
endif()
if(UNICORN_HAS_MIPS)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_MIPS -DUNICORN_HAS_MIPSEL -DUNICORN_HAS_MIPS64 -DUNICORN_HAS_MIPS64EL)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} mips-softmmu mipsel-softmmu mips64-softmmu mips64el-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_mips)
    target_link_libraries(mips-softmmu PRIVATE unicorn-common)
    target_link_libraries(mipsel-softmmu PRIVATE unicorn-common)
    target_link_libraries(mips64-softmmu PRIVATE unicorn-common)
    target_link_libraries(mips64el-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_mips)
endif()
if(UNICORN_HAS_SPARC)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_SPARC)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} sparc-softmmu sparc64-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_sparc)
    target_link_libraries(sparc-softmmu PRIVATE unicorn-common)
    target_link_libraries(sparc64-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_sparc)
endif()
if(UNICORN_HAS_PPC)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_PPC)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} ppc-softmmu ppc64-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_ppc)
    target_link_libraries(ppc-softmmu PRIVATE unicorn-common)
    target_link_libraries(ppc64-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_ppc)
endif()
if(UNICORN_HAS_RISCV)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_RISCV)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} riscv32-softmmu riscv64-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_riscv)
    target_link_libraries(riscv32-softmmu PRIVATE unicorn-common)
    target_link_libraries(riscv64-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_riscv)
endif()
if (UNICORN_HAS_S390X)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_S390X)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} s390x-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_s390x)
    target_link_libraries(s390x-softmmu PRIVATE unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_s390x)
endif()
if (UNICORN_HAS_TRICORE)
    set(UNICORN_COMPILE_OPTIONS ${UNICORN_COMPILE_OPTIONS} -DUNICORN_HAS_TRICORE)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} tricore-softmmu)
    set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_tricore)
    target_link_libraries(tricore-softmmu unicorn-common)
    set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_tricore)
endif()

# Extra tests
set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_mem)
set(UNICORN_TEST_FILE ${UNICORN_TEST_FILE} test_ctl)
set(UNICORN_SAMPLE_FILE ${UNICORN_SAMPLE_FILE} sample_ctl)

if(UNICORN_TRACER)
    target_compile_options(unicorn-common PRIVATE -DUNICORN_TRACER)
    target_compile_options(unicorn PRIVATE -DUNICORN_TRACER)
endif()

target_compile_options(unicorn-common PRIVATE
    ${UNICORN_COMPILE_OPTIONS}
)

target_compile_options(unicorn PRIVATE
    ${UNICORN_COMPILE_OPTIONS}
)

# For static archive
if (BUILD_SHARED_LIBS)
    target_compile_options(unicorn_static PRIVATE
        ${UNICORN_COMPILE_OPTIONS}
    )
endif()

if(MINGW)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} pthread)
endif()

if(ATOMIC_LINKAGE_FIX)
    set(UNICORN_LINK_LIBRARIES ${UNICORN_LINK_LIBRARIES} atomic)
endif()

if(MSVC)
    if(BUILD_SHARED_LIBS)
        target_compile_options(unicorn PRIVATE
            -DUNICORN_SHARED
        )

        # For static archive
        target_link_libraries(unicorn_static PRIVATE
            ${UNICORN_LINK_LIBRARIES}
        )
    endif()

    target_link_libraries(unicorn PRIVATE
        ${UNICORN_LINK_LIBRARIES}
    )

    set_target_properties(unicorn PROPERTIES
        VERSION "${UNICORN_VERSION_MAJOR}.${UNICORN_VERSION_MINOR}"
    )
else()
    target_link_libraries(unicorn PRIVATE
        ${UNICORN_LINK_LIBRARIES}
        m
    )

    target_link_libraries(unicorn PUBLIC
        m
    )

    # For static archive
    if (BUILD_SHARED_LIBS)
        target_link_libraries(unicorn_static PUBLIC
            m
        )

        target_link_libraries(unicorn_static PRIVATE
            ${UNICORN_LINK_LIBRARIES}
            m
        )
    endif()

    set_target_properties(unicorn PROPERTIES
        VERSION ${UNICORN_VERSION_MAJOR}
        SOVERSION ${UNICORN_VERSION_MAJOR}
    )
endif()

if(MSVC)
    set(SAMPLES_LIB
        unicorn
    )
elseif(NOT ANDROID_ABI)
    set(SAMPLES_LIB
        unicorn
        pthread
    )
else()
    set(SAMPLES_LIB
        unicorn
    )
endif()

if(ATOMIC_LINKAGE_FIX)
    set(SAMPLES_LIB
        ${SAMPLES_LIB}
        atomic
    )
endif()

target_include_directories(unicorn PUBLIC
    include
)

# For static archive
if (BUILD_SHARED_LIBS)
    target_include_directories(unicorn_static PUBLIC
        include
    )
endif()

# Black magic for generating static archives...
if (UNICORN_LEGACY_STATIC_ARCHIVE)
    if (BUILD_SHARED_LIBS)
        if (MSVC)
            # Avoid the import lib built by MVSC clash with our archive.
            set_target_properties(unicorn PROPERTIES ARCHIVE_OUTPUT_NAME "unicorn-import")
        endif()
        bundle_static_library(unicorn_static unicorn_archive unicorn)
    else()
        # Rename the "static" lib to avoid filename clash.
        set_target_properties(unicorn PROPERTIES OUTPUT_NAME "unicorn-static")
        bundle_static_library(unicorn unicorn_archive unicorn)
    endif()
endif()

if(UNICORN_FUZZ)
    set(UNICORN_FUZZ_SUFFIX "arm_arm;arm_armbe;arm_thumb;arm64_arm;arm64_armbe;m68k_be;mips_32be;mips_32le;sparc_32be;x86_16;x86_32;x86_64;s390x_be")
    if (NOT APPLE)
        set(SAMPLES_LIB ${SAMPLES_LIB} rt)
    endif()
    foreach(SUFFIX ${UNICORN_FUZZ_SUFFIX})
        add_executable(fuzz_emu_${SUFFIX}
            ${CMAKE_CURRENT_SOURCE_DIR}/tests/fuzz/fuzz_emu_${SUFFIX}.c
            ${CMAKE_CURRENT_SOURCE_DIR}/tests/fuzz/onedir.c
        )
        target_link_libraries(fuzz_emu_${SUFFIX} PRIVATE
            ${SAMPLES_LIB}
        )
    endforeach()
endif()

if(UNICORN_BUILD_TESTS)
    enable_testing()
    foreach(SAMPLE_FILE ${UNICORN_SAMPLE_FILE})
        add_executable(${SAMPLE_FILE}
            ${CMAKE_CURRENT_SOURCE_DIR}/samples/${SAMPLE_FILE}.c
        )
        target_link_libraries(${SAMPLE_FILE} PRIVATE
            ${SAMPLES_LIB}
        )
        endforeach()

        foreach(TEST_FILE ${UNICORN_TEST_FILE})
        add_executable(${TEST_FILE}
            ${CMAKE_CURRENT_SOURCE_DIR}/tests/unit/${TEST_FILE}.c
        )
        target_compile_options(${TEST_FILE} PRIVATE
            ${UNICORN_COMPILE_OPTIONS}
        )
        target_link_libraries(${TEST_FILE} PRIVATE
            ${SAMPLES_LIB}
        )
        add_test(${TEST_FILE} ${TEST_FILE})
        if(ANDROID_ABI)
            file(APPEND ${CMAKE_BINARY_DIR}/adb.sh "adb push ${TEST_FILE} /data/local/tmp/build/\n")
            file(APPEND ${CMAKE_BINARY_DIR}/adb.sh "adb shell \"chmod +x /data/local/tmp/build/${TEST_FILE}\"\n")
            file(APPEND ${CMAKE_BINARY_DIR}/adb.sh "adb shell \'LD_LIBRARY_PATH=/data/local/tmp/build:$LD_LIBRARY_PATH /data/local/tmp/build/${TEST_FILE}\' || exit -1\n")
        endif()
        if (UNICORN_TARGET_ARCH STREQUAL "aarch64" OR UNICORN_TARGET_ARCH STREQUAL "ppc")
            target_compile_definitions(${TEST_FILE} PRIVATE TARGET_READ_INLINED)
        endif()
    endforeach()
endif()


if(UNICORN_INSTALL)
    include("GNUInstallDirs")
    file(GLOB UNICORN_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/include/unicorn/*.h)
    if (BUILD_SHARED_LIBS)
        install(TARGETS unicorn
            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        )
    endif()
    if (UNICORN_LEGACY_STATIC_ARCHIVE)
        install(FILES $<TARGET_FILE:unicorn_archive> DESTINATION ${CMAKE_INSTALL_LIBDIR})
        install(FILES $<TARGET_FILE_DIR:unicorn_archive>/$<TARGET_PROPERTY:unicorn_archive,SYMLINK_NAME> DESTINATION ${CMAKE_INSTALL_LIBDIR})
    endif()
    install(FILES ${UNICORN_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/unicorn)
    if (ATOMIC_LINKAGE_FIX)
        set(ATOMIC_LINK_PKG_CONFIG " -latomic")
    else()
        set(ATOMIC_LINK_PKG_CONFIG "")
    endif()
    file(WRITE ${CMAKE_BINARY_DIR}/unicorn.pc "Name: unicorn\n\
Description: Unicorn emulator engine\n\
Version: ${UNICORN_VERSION_MAJOR}.${UNICORN_VERSION_MINOR}.${UNICORN_VERSION_PATCH}\n\
libdir=${CMAKE_INSTALL_FULL_LIBDIR}\n\
includedir=${CMAKE_INSTALL_FULL_INCLUDEDIR}\n\
Libs: -L\$\{libdir\} -lunicorn\n\
Libs.private: -lpthread -lm${ATOMIC_LINK_PKG_CONFIG}\n\
Cflags: -I\$\{includedir\}\n"
    )
    install(FILES ${CMAKE_BINARY_DIR}/unicorn.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()


================================================
FILE: COPYING
================================================
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: COPYING.LGPL2
================================================
                  GNU LIBRARY GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1991 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the library GPL.  It is
 numbered 2 because it goes with version 2 of the ordinary GPL.]

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it.  You can use it for
your libraries, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.

  Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library.  If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software.  To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.

  Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs.  This
license, the GNU Library General Public License, applies to certain
designated libraries.  This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.

  The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it.  Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program.  However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.

  Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries.  We
concluded that weaker conditions might promote sharing better.

  However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves.  This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them.  (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.)  The hope is that this
will lead to faster development of free libraries.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, while the latter only
works together with the library.

  Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.

                  GNU LIBRARY GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License").  Each licensee is
addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.
  
  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    c) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    d) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                            NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

                     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!


================================================
FILE: COPYING_GLIB
================================================
		  GNU LIBRARY GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1991 Free Software Foundation, Inc.
    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the library GPL.  It is
 numbered 2 because it goes with version 2 of the ordinary GPL.]

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it.  You can use it for
your libraries, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.

  Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library.  If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software.  To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.

  Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs.  This
license, the GNU Library General Public License, applies to certain
designated libraries.  This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.

  The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it.  Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program.  However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.

  Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries.  We
concluded that weaker conditions might promote sharing better.

  However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves.  This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them.  (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.)  The hope is that this
will lead to faster development of free libraries.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, while the latter only
works together with the library.

  Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.

		  GNU LIBRARY GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License").  Each licensee is
addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.
  
  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    c) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    d) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

			    NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

		     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the 
    Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
    Boston, MA  02111-1307  USA.

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!


================================================
FILE: CREDITS.TXT
================================================
This file credits all the contributors of the Unicorn engine project.


Key developers
==============
Nguyen Anh Quynh <aquynh -at- gmail.com>
Dang Hoang Vu <dang.hvu -at- gmail.com>
Huitao Chen (chenhuitao)
Ziqiao Kong (lazymio)
KaiJernLau (xwings)


Beta testers (in no particular order)
==============================
Nguyen Tan Cong
Loi Anh Tuan
Edgar Barbosa
Joxean Koret
Chris Eagle
Jay Little, Trail of Bits
Jeong Wook Oh
Luis Miras
Yan Shoshitaishvili, Shellphish & UC Santa Barbara
Erik Fischer
Darel Griffin, NCC Group
Anton Cherepanov
Mohamed Saher (halsten)
Tyler Colgan
Jonathon Reinhart
Blue Skeye
Chris Maixner
Sergi Alvarez, aka pancake (author of radare)
Ryan Hileman
Tim "diff" Strazzere
WanderingGlitch of the Zero Day Initiative
Sascha Schirra
François Serman
Sean Heelan
Luke Burnett
Parker Thompson
Daniel Godas-Lopez
Antonio "s4tan" Parata
Corey Kallenberg
Shift
Gabriel Quadros
Fabian Yamaguchi
Ralf-Philipp Weinmann
Mike Guidry
Joshua "posixninja" Hill


Contributors (in no particular order)
=====================================
(Please let us know if you want to have your name here)

Nguyen Tan Cong
Loi Anh Tuan
Shaun Wheelhouse: Homebrew package
Kamil Rytarowski: Pkgsrc package
Zak Escano: MSVC support.
Chris Eagle: Java binding
Ryan Hileman: Go binding
Antonio Parata: .NET binding
Jonathon Reinhart: C unit test
Sascha Schirra: Ruby binding
Adrian Herrera: Haskell binding
practicalswift: Various cool bugs found by fuzzing
farmdve: Memory leaking fix
Andrew Dutcher: uc_context_{save, restore} API.
Stephen Groat: improved CI setup.
David Zimmer: VB6 binding.
zhangwm: ARM & ARM64 big endian.
Mohamed Osama: FreePascal/Delphi binding.
Philippe Antoine (Catena cyber): fuzzing 
Huitao Chen (chenhuitao) & KaiJern Lau (xwings): Cmake support
Huitao Chen (chenhuitao) & KaiJern Lau (xwings): Python3 support for building
Kevin Foo (chfl4gs): Travis-CI migration
Simon Gorchakov: PowerPC target
Stuart Dootson (studoot): MSVC compatibility with PowerPC target support
Ziqiao Kong (lazymio): uc_context_free() API and various bug fix & improvement.
Sven Almgren (blindmatrix): bug fix
Chenxu Wu (kabeor): Documentation
Philipp Takacs: virtual tlb, memory snapshots


================================================
FILE: Cargo.toml
================================================
[workspace]
members = ["bindings/rust/unicorn-engine"]
resolver = "2"

[workspace.package]
rust-version = "1.85.0"
version = "2.1.5"
authors = ["Ziqiao Kong <mio@lazym.io>", "Lukas Seidel", "Amaan Qureshi <amaanq12@gmail.com>"]
keywords = ["unicorn", "cpu", "emulator", "bindings"]
categories = ["api-bindings", "emulators", "no-std", "virtualization"]
documentation = "https://github.com/unicorn-engine/unicorn/wiki"
edition = "2024"
license = "GPL-2.0"
readme = "./bindings/rust/sys/README.md"
repository = "https://github.com/unicorn-engine/unicorn"
description = "Rust bindings for the Unicorn emulator with utility functions"

[workspace.lints.clippy]
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_sign_loss = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
similar_names = "allow"
unreadable_literal = "allow"
use_self = "allow"
pedantic = { level = "warn", priority = -1 }
nursery = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }

# Root package
[package]
name = "unicorn-engine-sys"
version.workspace = true
authors.workspace = true
keywords.workspace = true
categories = [
	"api-bindings",
	"emulators",
	"external-ffi-bindings",
	"no-std",
	"virtualization",
]
documentation.workspace = true
edition.workspace = true
license.workspace = true
readme = "README.md"
repository.workspace = true
description.workspace = true
links = "unicorn"
# Cargo package --list
exclude = [
    "/docs",
    "/bindings/dotnet",
    "/bindings/go",
    "/bindings/haskell",
    "/bindings/java",
    "/bindings/pascal",
    "/bindings/python",
    "/bindings/ruby",
    "/bindings/vb6",
    "/bindings/zig",
    "/samples",
    "/tests",
]

[lib]
path = "bindings/rust/sys/src/lib.rs"

[lints]
workspace = true

[build-dependencies]
bindgen = "0.71.1"
cc = { version = "1.2.17" }
cmake = { version = "0.1.54" }
heck = "0.5.0"
pkg-config = { version = "0.3.32" }

[features]
default = ["arch_all"]
dynamic_linkage = []
arch_all = [
	"arch_x86",
	"arch_arm",
	"arch_aarch64",
	"arch_riscv",
	"arch_mips",
	"arch_sparc",
	"arch_m68k",
	"arch_ppc",
	"arch_s390x",
	"arch_tricore",
]
arch_x86 = []
arch_arm = []
arch_aarch64 = ["arch_arm"]
arch_riscv = []
arch_mips = []
arch_sparc = []
arch_m68k = []
arch_ppc = []
arch_s390x = []
arch_tricore = []


================================================
FILE: ChangeLog
================================================
This file details the changelog of Unicorn Engine.

-------------------------------
[Version 2.1.4]: September 9th, 2025

Hello everyone. It has been a while since last release and we are releasing Unicorn 2.1.4. Though it is a patch release, there are some highlights worth mentioning.

The very first thing is that, Unicorn (finally!) offers consistent PC guarantee in all cases. Well, it might sound weird that why it was not. Generally QEMU is not designed to keep PC synced in all cases for performance and Unicorn once put necessary hacks but those hacks were too hard to maintain. Now we have architecture agnostic mechanism to offer the PC guarantee.

In addition, we offer a standalone unicorn Rust crate `unicorn-engine-sys` to allows users to build their own bindings since v2.1.4. There are also lots of bindings improvements contained in this release.

We also fix the building and distribution issues for macos ARM and distribute wheels again. Our friend @patryk4815 from pwndbg helps sort this out. Kudos to him!

For 2.2.0, personally I wish I could work it out before the end of this year, by merging lots of pending big PRs but my time budget is relatively limited recently. Please aware that 2.2.0 would probably bump QEMU version to 5.1.0 or even higher so semantics could be changed. Any help is highly welcome and please contact @wtdcode if you are keen.

Lastly, I would like to express my deep gratitude to all contributors that help make this release happen, specifically @Evian-Zhang for Rust improvements and unicornafl integration, @Antelox for consistent contributions on our workflows, @amaanq for various huge work, reviews and Rust bindings split, @PhilippTakacs for PR reviews and fix. Again, thanks for every contributor!

Below goes the auto generated release notes. Starting from this tag, the release note will switch to a short passage plus Github generated contents because this makes it easier to follow big changes.

## What's Changed
* bindings/zig: Fix sample_riscv_zig partial writes and logging by @fervagar in https://github.com/unicorn-engine/unicorn/pull/2133
* Fix physical address truncation on 32-bit systems with addressing extensions by @ExhoAR22 in https://github.com/unicorn-engine/unicorn/pull/2139
* refactor(lib): mark pointers as const where possible by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2140
* bindings: ruby: fix unexpected uc_query result pointer type by @anthraxx in https://github.com/unicorn-engine/unicorn/pull/1962
* bindings: ruby: fix version identifier to 2.1.3 by @anthraxx in https://github.com/unicorn-engine/unicorn/pull/2142
* feat(arm): add an `ESR` register by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2155
* fix(rust): watch all source and header files by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2159
* feat(rust): improve ARM CP register ergonomics by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2160
* fix(m68k): correct SR register read by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2161
* fix(python): catch `BaseException` in wrappers instead of `Exception` by @amaanq in https://github.com/unicorn-engine/unicorn/pull/2163
* Remove the size limit for memory read and write (revamped) by @rliebig in https://github.com/unicorn-engine/unicorn/pull/2144
* Loongarch port by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2164
* S390x registers by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2167
* Add from_handle_with_data method by @Evian-Zhang in https://github.com/unicorn-engine/unicorn/pull/2169
* Make Unicorn struct clone-able by @Evian-Zhang in https://github.com/unicorn-engine/unicorn/pull/2170
* Add Display and Error impl for uc_error for Rust bindings by @Evian-Zhang in https://github.com/unicorn-engine/unicorn/pull/2171
* Add edge generated callback by @Evian-Zhang in https://github.com/unicorn-engine/unicorn/pull/2176
* Correctly restore skip_sync_pc_on_exit by @Evian-Zhang in https://github.com/unicorn-engine/unicorn/pull/2181
* Added CFG check and standalone flag for .NET binding by @AdvDebug in https://github.com/unicorn-engine/unicorn/pull/2182
* qemu/configure: make strings command can be redefined by ${STRINGS} by @clan in https://github.com/unicorn-engine/unicorn/pull/2186
* fix x86 pc by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2187
* Patch from Saferewrite by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2188
* fix incorrect ret of trampoline `closure` in `alloc_code_gen_buffer` by @HyperSine in https://github.com/unicorn-engine/unicorn/pull/2197
* reset invalid_error before ram_block_add by @PhilippTakacs in https://github.com/unicorn-engine/unicorn/pull/2189
* add uc_mem_read_virtual by @PhilippTakacs in https://github.com/unicorn-engine/unicorn/pull/2121
* Minor fixes for vmem apis by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2199
* glib_compat/glib_compact: Clear the buffer in g_hash_table_resize by @MarsDoge in https://github.com/unicorn-engine/unicorn/pull/2219
* Enable install for rust bindings by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2224
* Remove ninja installation from macos runners by @scribam in https://github.com/unicorn-engine/unicorn/pull/2225
* Fix `read_sprr_perm` for Apple real CPUs and GitHub Actions; enable Apple ARM64 wheel builds on PyPI. Fixes #2033. by @patryk4815 in https://github.com/unicorn-engine/unicorn/pull/2227
* Bump cmake minimum required version to 3.10 by @scribam in https://github.com/unicorn-engine/unicorn/pull/2226
* Add support for clangarm64 by @scribam in https://github.com/unicorn-engine/unicorn/pull/2228
* Revert "glib_compat/glib_compact: Clear the buffer in g_hash_table_resize" by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2220
* Python bindings: Use ABI3 wheels by @Antelox in https://github.com/unicorn-engine/unicorn/pull/2223
* concurrent control by @wtdcode in https://github.com/unicorn-engine/unicorn/pull/2235

## New Contributors
* @fervagar made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2133
* @ExhoAR22 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2139
* @anthraxx made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1962
* @rliebig made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2144
* @AdvDebug made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2182
* @HyperSine made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2197
* @MarsDoge made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2219
* @patryk4815 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2227

**Full Changelog**: https://github.com/unicorn-engine/unicorn/compare/v2.1.3...v2.1.4

-------------------------------
[Version 2.1.3]: March 7th, 2025

2.1.3 includes a few fixes for distribution and stability issues. We urge users to update their versions as previous version contains security vulnerabilities.

Fix & Improvements

- Several security issues fixes. @PhilippTakacs 
- Add alpine workflow and fix several distribution issues. @Antelox 
- Introduce importlib_resources for py3.8 (EOL already) @Arusekk @Antelox 
- Mips64 improvemtns. @OBarronCS 
- mips related fixes and implement a few registers.
- x86 default cpu model is changed to `UC_CPU_X86_HASWELL` and remove a few quirks.
- Fix CR4 implementation.
- Fix python bindings break changes by adding back `ctl_tlb_mode`. @Antelox 

New Contributors
* @OBarronCS made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2111

Full Changelog: https://github.com/unicorn-engine/unicorn/compare/2.1.2...2.1.3

-------------------------------
[Version 2.1.2]: Feb 13rd, 2025
2.1.2 is a patch release to mainly resolve the stability issue of the 2.1.0 release series and fix a few distribution issues. All users of Unicorn are expected to upgrade. 

Highlights

- macOS arm64 no longer provides binary wheels due to a feature missing from Github Action runners.
- py3.8 support is brought back, python2 wheels are built and test as well and we migrate to cibuildwheel! @Antelox 
- Several polish to python bindings and implement new API. @elicn  @droe 
- Revert previous break changes that return UC_ERR_ARG for non-existing registers. Now this prints a warning. We urge all users relying on this behavior to fix code as soon as possible.
- Fix several segment faults, including a few long-standing random segfault issues.
- Revive previous unicorn 1 test suite and related refactoring. @elicn @Antelox 
- Optimize memory handling and notdirty writes for faster memory access and snapshots, especially useful for fuzzing. @PhilippTakacs 
- RISC-V API updates. @apparentlymart 
- fix UC_HOOK_MEM_READ on aarch64. @glennsec 
- Support UC_TCG_OP_FLAG_CMP for ARM @dotCirill 
- An alternative tag prefixed with "v" is added for golang compatibility.

Fix & Improvements

- Implement UC_ARM64_REG_WSP
- Several fixes on arm64 macos @tbodt 
- reg_read_batch and reg_write_batch @hsa1as 
- Fix pc sync issue for SPARC, MIPS, x86. This also fixes PC sync issue within UC_HOOK_BLOCK hooks.
- Allow cmake to install files on Windows and allow cmake not to generate Unicorn 1 style all-in-one objects archive 
- Make i386 instructions RDTSC and RDTSCP hookable @t0rr3sp3dr0 
- Allow Statically Linking in Go @t0rr3sp3dr0 
- Rust bindings improvements @Sanae6 
- Patch multiple UC_HOOK_MEM callbacks for unaligned access @Michael-c0de 
- Fix UC_MEM_FETCH_PROT for data read
- Remove more Unicorn 1 hacks to improve performance.
- Docs & unit test updates. @saicao 
- Allow uc_ctl_set_page_size() for arm64 @droe 
- Musl builds @clan 
- mips16 fix @ZakDanger 
- Fix UC_HOOK_MEM on arm32 @xndcn 
- Fix heap buffer overflow in op_cksm function @Shivam7-1 


New Contributors
* @droe made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2023
* @Antelox made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2026
* @tbodt made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2049
* @hsa1as made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2060
* @t0rr3sp3dr0 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2066
* @Sanae6 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2069
* @Michael-c0de made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2063
* @Evian-Zhang made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2064
* @glennsec made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2028
* @clan made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2085
* @xndcn made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2091
* @Shivam7-1 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2096
* @amaanq made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2099

Full Changelog: https://github.com/unicorn-engine/unicorn/compare/2.1.1...2.1.2

As usual, thanks to all contributors and sorry if I missed your name here (please tell me @wtdcode !).

Lastly and personally, I would like to express my big thanks to @Antelox @elicn and @PhilippTakacs for spending lots of time improving Unicorn Engine. Also, there are a few big pull requests adding new architectures (RH850, TCI,  LoongArch64, AVR) and I will actively push them to 2.2.0.

-------------------------------
[Version 2.1.1]: Sept 26th, 2024

This is a small release to fix a few urgent issues.

- Remove pkg_resources usage
- Fix wheels distribution for x86_64 macos
- Fix redundant wheel hacks
- Support musllinux distribution

-------------------------------
[Version 2.1.0]: Sept 22nd, 2024

It has been a while since the last release, and 2.1.0 brings several exciting features. Below is the changelog from the latest to the oldest (though not strictly).

Highlights

- Revive QEMU logs, now we have `-DUNICORN_LOGGING=yes` to enable all qemu logs. @BitMaskMixer 
- Faster (up to 40x) write performance by not always doing `store_helper` and cleaning page locks. @tunz @boborjan2
- Brand new python bindings, with strongly typed and many improvements. @elicn 
- Fix to a long-standing MinGW random segfault bug.
- We bring python2 compatibility back.
- We now fully support M1, both building and a pre-built wheel.
- We support snapshot memory now, with a very low overhead copy-on-write fashion. @PhilippTakacs 
- An option to bypass MMU is also added, check our FAQ. @PhilippTakacs 
- A brand new (and modern) java bindings. We are also working to publish it to maven. @nneonneo
- We have zig integrated. @kassane @atipls 
- Now Unicorn no longer allocates 2GB memory for every instance. The memory will be only committed once used and the upper limit can be adjusted with `uc_ctl`.
- New DotNet binding, with published to both Github and Nuget. @TSRBerry 
- The release will attach all binaries, thanks to @marameref 

Fixes & Improvements

- RISCV improvements, but we still have a long way to go. @apparentlymart @ks0777 
- cmake improvements @scribam @es3n1n 
- Various python bindings fix and improvements @bet4it @rhelmot 
- Docs. @gerph @BitMaskMixer 
- Rust bindings. @lockbox @mlgiraud @deadash
- TCG backend fixes. @redoste @StalkR @dglynos 
- PPC32 fixes. @dotCirill 
- Haiku fixes. @kallisti5 
- Improvements to avoid simulator detection. @mrexodia 

New Contributors

* @ks0777 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1736
* @LG3696 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1764
* @PhilippTakacs made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1765
* @edsky made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1754
* @tunz made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1790
* @kassane made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1809
* @Xeonacid made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1807
* @nneonneo made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1830
* @lockbox made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1847
* @mlgiraud made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1849
* @basavesh made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1861
* @hamarituc made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1886
* @StalkR made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1907
* @dotCirill made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1910
* @marameref made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1897
* @redoste made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1922
* @xclusivor made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1929
* @elicn made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1629
* @nganhkhoa made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1942
* @es3n1n made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1960
* @BitMaskMixer made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1977
* @apparentlymart made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1995
* @atipls made their first contribution in https://github.com/unicorn-engine/unicorn/pull/1985
* @omer54463 made their first contribution in https://github.com/unicorn-engine/unicorn/pull/2005

Full Changelog: https://github.com/unicorn-engine/unicorn/compare/2.0.1...2.1.0


Again, thanks for all contributors and sorry if I missed your name here (please tell me @wtdcode !). 2.1.1 is also coming because we expect some minor break changes to fix.

-------------------------------
[Version 2.0.1.post1]: Nov 22nd, 2022

This is a small release to complement the previous 2.0.1 release.

Fix:

- Fix the endianness detection in tests.
- Fix the version number in CMakeLists.txt.

-------------------------------
[Version 2.0.1]: Nov 1st, 2022

Unicorn2 makes the first step to [Debian packages](https://tracker.debian.org/pkg/unicorn-engine) and [vcpkg](https://github.com/microsoft/vcpkg/pull/26101)! Thanks @roehling and @LilyWangL !

Features:

- Support building & running on BE hosts. #1710 
- Fix and support `clang-cl` on Windows. #1687 
- Fix python `sdist` and add aarch64 Linux wheels. Note `pip` can build Unicorn2 on M1 now!
- C# binding is refined and upgraded to .Net 6. #1723 

Fix/Improvements:

- Various bindings improvements. #1723
- Improvements for tests. #1684 #1683 #1691 #1711 
- Fail explicitly when VEX.L is set. #1658 
- Fix endianness when writing PPC32 CR register. #1659 
- Fix a bug in `uc_ctl_set_cpu_model` check.
- Fix Tricore PC not updating. #1668 
- Fix the mapping not updated if users modify the mappings in the hooks.
- Handle pathological cases consistently. #1651 
- Fix memory leaks in PPC target. #1680 
- Fix memory leaks in Tricore target. #1681
- Fix MSVC handling in cmake. #1693  
- Fix PC sync-ing problems for `UC_HOOK_BLOCK` hooks.
- Fix PC sync-ed twice when users request a soft restart.
- Prevent overflow with pre-allocated RAM blocks. #1712 
- Add FPCR and FPSR registers #1722 
- Fix ARM CPU state not deep copied.
- Fix PC not sync-ed for memory operation on aarch64.
- Exit invalid store operations early to avoid the target registers being overwritten.
- Improve the support for ARM BE32.

Thanks:

@roehling @LilyWangL @mrexodia @zachriggle @Yu3H0 @rhelmot @relapids @sh4w1 @TSRBerry

-------------------------------
[Version 2.0.0]: July 7th, 2022

Features:

- TriCore Support (#1568)

Fixes/Improvements:

- Build both shared library and static archive as unicorn1 does.
- Misc bindings improvements. #1569 #1600 #1609  #1613 #1616
- Make sure setjmp-setjmp-wrapper-win32 participates in the build. #1604 
- Improve Rust bindings build logic.
- Fix wrong python binding for UC_CTL_TB_REMOVE_CACHE
- Flush translation blocks when the count hook is removed.
- Fix unicorn crash when nested `uc_emu_start` deletes a hook
- Fix CPU not fully resumed when writing PC.
- Don't quit TB if `uc_mem_protect` doesn't change the protection of current TB memory.
- Add type annotations for python bindings.
- Add CPUID hook for python bindings. #1618 
- Don't repeat memory hooks if there is already an unhandled error. #1618 
- Support reads and writes over all Arm SIMD registers #1621
- Fix wrong registers range in python bindings.
- Fix uc_mem_protect on mmio regions
- Fix a UAF caused by hook cache.
- Fix the value collision between UC_MODE_ARMBE8 and UC_MODE_ARM926

Thanks:

@AfoHT @mrexodia @bet4it @lowlyw @ekilmer @ondryaso @QDucasse @PalumboN @uberwoozle

----------------------------------
[Version 2.0.0 rc7]: April 17, 2022

This release is expected to be the real last RC release of Unicorn2. ;)

Features:

- Correctly generate static archives for the static build and have CI auto-tested.
- Rust bindings revised. #1584 
- Compatible with clang-cl compiler. #1581 
- Implement UC_HOOK_INSN for aarch64 MRS/MSR/SYS/SYSL

Fixes/Improvements:

- Several corner cases on our API. #1587 #1595 
- Fix the codegen buffer leak. 
- Rust bindins improvements. #1574 #1575 
- Add "holes" to allow unicorn lib as a drop-in replacement for older ones. #1572 
- s390x backports. #1570 
- Fix exits wrongly removed in nested uc_emu_start
- Fix a possible endless loop for only one translation block in a multithreaded environment.
- Fix wrong PC without `UC_HOOK_CODE` installed.
- Update vb6 bindings license. #1563 
- Fix buffer allocation failure on M1. #1559 
- Fix wrong EFLAGS on startup.
- Fix wrong internal states on nested uc_emu_start.
- Remove armeb-softmmu and aarcheb-softmmu which are usermode targets.
- Advance PPC32 PC. #1558 
- Support UC_PPC_REG_CR.
- Update CI to windows-2019

Thanks:

@shuffle2 @liyansong2018 @rose4096 @nviennot @n1tram1 @iii-i @dzzie @yr
Download .txt
gitextract_7lagk856/

├── .clang-format
├── .github/
│   └── workflows/
│       ├── Crate-publishing.yml
│       ├── Nuget-publishing.yml
│       ├── build-uc2.yml
│       ├── build-wheels-publish.yml
│       ├── prerelease.yml
│       ├── release.yml
│       └── zigbuild.yml
├── .gitignore
├── .gitmodules
├── AUTHORS.TXT
├── CMakeLists.txt
├── COPYING
├── COPYING.LGPL2
├── COPYING_GLIB
├── CREDITS.TXT
├── Cargo.toml
├── ChangeLog
├── README.md
├── SECURITY.md
├── TODO
├── bindings/
│   ├── Makefile
│   ├── README
│   ├── const_generator.py
│   ├── dotnet/
│   │   ├── README.md
│   │   ├── UnicornDotNet.sln
│   │   ├── UnicornEngine/
│   │   │   ├── Binding/
│   │   │   │   ├── BindingFactory.fs
│   │   │   │   ├── IBinding.fs
│   │   │   │   ├── MockBinding.fs
│   │   │   │   └── NativeBinding.fs
│   │   │   ├── Const/
│   │   │   │   ├── Arm.fs
│   │   │   │   ├── Arm64.fs
│   │   │   │   ├── Common.fs
│   │   │   │   ├── M68k.fs
│   │   │   │   ├── Mips.fs
│   │   │   │   ├── Ppc.fs
│   │   │   │   ├── Riscv.fs
│   │   │   │   ├── S390x.fs
│   │   │   │   ├── Sparc.fs
│   │   │   │   ├── TriCore.fs
│   │   │   │   └── X86.fs
│   │   │   ├── ConvertUtility.fs
│   │   │   ├── InternalHooks.fs
│   │   │   ├── Unicorn.fs
│   │   │   ├── UnicornEngine.fsproj
│   │   │   ├── UnicornEngineException.fs
│   │   │   └── WinNativeImport.fs
│   │   └── UnicornSamples/
│   │       ├── Program.cs
│   │       ├── ShellcodeSample.cs
│   │       ├── UnicornSamples.csproj
│   │       ├── Utils.cs
│   │       └── X86Sample32.cs
│   ├── go/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── sample.go
│   │   └── unicorn/
│   │       ├── arm64_const.go
│   │       ├── arm_const.go
│   │       ├── cgo.go
│   │       ├── cgo_dynamic.go
│   │       ├── cgo_static.go
│   │       ├── context.go
│   │       ├── context_test.go
│   │       ├── hook.c
│   │       ├── hook.go
│   │       ├── hook.h
│   │       ├── m68k_const.go
│   │       ├── mips_const.go
│   │       ├── ppc_const.go
│   │       ├── reg_batch.go
│   │       ├── riscv_const.go
│   │       ├── s390x_const.go
│   │       ├── sparc_const.go
│   │       ├── tricore_const.go
│   │       ├── uc.c
│   │       ├── uc.h
│   │       ├── unicorn.go
│   │       ├── unicorn_const.go
│   │       ├── unicorn_test.go
│   │       ├── x86.go
│   │       ├── x86_const.go
│   │       └── x86_test.go
│   ├── haskell/
│   │   ├── .gitignore
│   │   ├── README.TXT
│   │   ├── Setup.hs
│   │   ├── samples/
│   │   │   ├── SampleArm.hs
│   │   │   ├── SampleArm64.hs
│   │   │   ├── SampleBatchReg.hs
│   │   │   ├── SampleM68k.hs
│   │   │   ├── SampleMips.hs
│   │   │   ├── SampleSparc.hs
│   │   │   ├── SampleX86.hs
│   │   │   └── Shellcode.hs
│   │   ├── src/
│   │   │   ├── Unicorn/
│   │   │   │   ├── CPU/
│   │   │   │   │   ├── Arm.chs
│   │   │   │   │   ├── Arm64.chs
│   │   │   │   │   ├── M68k.chs
│   │   │   │   │   ├── Mips.chs
│   │   │   │   │   ├── Sparc.chs
│   │   │   │   │   └── X86.chs
│   │   │   │   ├── Hook.hs
│   │   │   │   └── Internal/
│   │   │   │       ├── Core.chs
│   │   │   │       ├── Hook.chs
│   │   │   │       ├── Unicorn.chs
│   │   │   │       └── Util.hs
│   │   │   ├── Unicorn.hs
│   │   │   ├── cbits/
│   │   │   │   └── unicorn_wrapper.c
│   │   │   └── include/
│   │   │       └── unicorn_wrapper.h
│   │   └── unicorn.cabal
│   ├── java/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── eclipse-formatter.xml
│   │   ├── pom.xml
│   │   ├── src/
│   │   │   ├── main/
│   │   │   │   └── java/
│   │   │   │       └── unicorn/
│   │   │   │           ├── Arm64Const.java
│   │   │   │           ├── Arm64SysHook.java
│   │   │   │           ├── Arm64_CP.java
│   │   │   │           ├── ArmConst.java
│   │   │   │           ├── Arm_CP.java
│   │   │   │           ├── BlockHook.java
│   │   │   │           ├── CodeHook.java
│   │   │   │           ├── CpuidHook.java
│   │   │   │           ├── EdgeGeneratedHook.java
│   │   │   │           ├── EventMemHook.java
│   │   │   │           ├── Hook.java
│   │   │   │           ├── InHook.java
│   │   │   │           ├── InstructionHook.java
│   │   │   │           ├── InterruptHook.java
│   │   │   │           ├── InvalidInstructionHook.java
│   │   │   │           ├── M68kConst.java
│   │   │   │           ├── MemHook.java
│   │   │   │           ├── MemRegion.java
│   │   │   │           ├── MipsConst.java
│   │   │   │           ├── MmioReadHandler.java
│   │   │   │           ├── MmioWriteHandler.java
│   │   │   │           ├── OutHook.java
│   │   │   │           ├── PpcConst.java
│   │   │   │           ├── RiscvConst.java
│   │   │   │           ├── S390xConst.java
│   │   │   │           ├── SparcConst.java
│   │   │   │           ├── SyscallHook.java
│   │   │   │           ├── TcgOpcodeHook.java
│   │   │   │           ├── TlbFillHook.java
│   │   │   │           ├── TranslationBlock.java
│   │   │   │           ├── TriCoreConst.java
│   │   │   │           ├── Unicorn.java
│   │   │   │           ├── UnicornConst.java
│   │   │   │           ├── UnicornException.java
│   │   │   │           ├── X86Const.java
│   │   │   │           ├── X86_Float80.java
│   │   │   │           ├── X86_MMR.java
│   │   │   │           └── X86_MSR.java
│   │   │   └── test/
│   │   │       └── java/
│   │   │           ├── samples/
│   │   │           │   ├── SampleNetworkAuditing.java
│   │   │           │   ├── Sample_arm.java
│   │   │           │   ├── Sample_arm64.java
│   │   │           │   ├── Sample_ctl.java
│   │   │           │   ├── Sample_m68k.java
│   │   │           │   ├── Sample_mips.java
│   │   │           │   ├── Sample_mmu.java
│   │   │           │   ├── Sample_ppc.java
│   │   │           │   ├── Sample_riscv.java
│   │   │           │   ├── Sample_s390x.java
│   │   │           │   ├── Sample_sparc.java
│   │   │           │   ├── Sample_tricore.java
│   │   │           │   ├── Sample_x86.java
│   │   │           │   ├── Sample_x86_mmr.java
│   │   │           │   ├── Shellcode.java
│   │   │           │   └── Utils.java
│   │   │           └── tests/
│   │   │               ├── FunctionalityTests.java
│   │   │               ├── HookTests.java
│   │   │               ├── MemTests.java
│   │   │               ├── RegTests.java
│   │   │               ├── RegressionTests.java
│   │   │               └── TestSamples.java
│   │   └── unicorn_Unicorn.c
│   ├── pascal/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── examples/
│   │   │   ├── x86.lpi
│   │   │   ├── x86.lpr
│   │   │   └── x86.lps
│   │   └── unicorn/
│   │       ├── Arm64Const.pas
│   │       ├── ArmConst.pas
│   │       ├── M68kConst.pas
│   │       ├── MipsConst.pas
│   │       ├── PpcConst.pas
│   │       ├── RiscvConst.pas
│   │       ├── S390xConst.pas
│   │       ├── SparcConst.pas
│   │       ├── TriCoreConst.pas
│   │       ├── UnicornConst.pas
│   │       ├── Unicorn_dyn.pas
│   │       └── X86Const.pas
│   ├── python/
│   │   ├── MANIFEST.in
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── prebuilt/
│   │   │   └── .gitkeep
│   │   ├── pyproject.toml
│   │   ├── setup.py
│   │   ├── tests/
│   │   │   ├── test_arm.py
│   │   │   ├── test_arm64.py
│   │   │   ├── test_arm64eb.py
│   │   │   ├── test_armeb.py
│   │   │   ├── test_ctl.py
│   │   │   ├── test_m68k.py
│   │   │   ├── test_mips.py
│   │   │   ├── test_network_auditing.py
│   │   │   ├── test_ppc.py
│   │   │   ├── test_riscv.py
│   │   │   ├── test_s390x.py
│   │   │   ├── test_shellcode.py
│   │   │   ├── test_sparc.py
│   │   │   ├── test_tricore.py
│   │   │   └── test_x86.py
│   │   └── unicorn/
│   │       ├── __init__.py
│   │       ├── arm64_const.py
│   │       ├── arm_const.py
│   │       ├── m68k_const.py
│   │       ├── mips_const.py
│   │       ├── ppc_const.py
│   │       ├── py.typed
│   │       ├── riscv_const.py
│   │       ├── s390x_const.py
│   │       ├── sparc_const.py
│   │       ├── tricore_const.py
│   │       ├── unicorn.py
│   │       ├── unicorn_const.py
│   │       ├── unicorn_py2.py
│   │       ├── unicorn_py3/
│   │       │   ├── __init__.py
│   │       │   ├── arch/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── arm.py
│   │       │   │   ├── arm64.py
│   │       │   │   ├── intel.py
│   │       │   │   └── types.py
│   │       │   └── unicorn.py
│   │       └── x86_const.py
│   ├── ruby/
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── sample_arm.rb
│   │   ├── sample_arm64.rb
│   │   ├── sample_m68k.rb
│   │   ├── sample_mips.rb
│   │   ├── sample_sparc.rb
│   │   ├── sample_x86.rb
│   │   ├── sample_x86_gdt.rb
│   │   ├── test_hook_gc.rb
│   │   └── unicorn_gem/
│   │       ├── Gemfile
│   │       ├── Rakefile
│   │       ├── ext/
│   │       │   ├── extconf.rb
│   │       │   ├── types.h
│   │       │   ├── unicorn.c
│   │       │   └── unicorn.h
│   │       ├── lib/
│   │       │   └── unicorn_engine/
│   │       │       ├── arm64_const.rb
│   │       │       ├── arm_const.rb
│   │       │       ├── m68k_const.rb
│   │       │       ├── mips_const.rb
│   │       │       ├── ppc_const.rb
│   │       │       ├── riscv_const.rb
│   │       │       ├── s390x_const.rb
│   │       │       ├── sparc_const.rb
│   │       │       ├── tricore_const.rb
│   │       │       ├── unicorn_const.rb
│   │       │       ├── version.rb
│   │       │       └── x86_const.rb
│   │       ├── pkg/
│   │       │   └── .gitignore
│   │       └── unicorn-engine.gemspec
│   ├── rust/
│   │   ├── sys/
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── bindings.rs
│   │   │       └── lib.rs
│   │   └── unicorn-engine/
│   │       ├── COPYING
│   │       ├── Cargo.toml
│   │       ├── README.md
│   │       └── src/
│   │           ├── ffi.rs
│   │           ├── hook.rs
│   │           ├── lib.rs
│   │           ├── tests/
│   │           │   ├── arm.rs
│   │           │   ├── arm64.rs
│   │           │   ├── ctl.rs
│   │           │   ├── m68k.rs
│   │           │   ├── mem.rs
│   │           │   ├── mips.rs
│   │           │   ├── mod.rs
│   │           │   ├── ppc.rs
│   │           │   ├── riscv.rs
│   │           │   └── s390x.rs
│   │           └── unicorn_const.rs
│   ├── vb6/
│   │   ├── .gitattributes
│   │   ├── Apache_2.0_License.txt
│   │   ├── CMemRegion.cls
│   │   ├── Form1.frm
│   │   ├── Project1.vbp
│   │   ├── Project1.vbw
│   │   ├── README.txt
│   │   ├── example_output.txt
│   │   ├── main.cpp
│   │   ├── misc.bas
│   │   ├── msvbvm60.tlh
│   │   ├── msvbvm60.tli
│   │   ├── ucIntel32.cls
│   │   ├── uc_def.bas
│   │   ├── ucvbshim.sln
│   │   └── ucvbshim.vcproj
│   └── zig/
│       ├── README.md
│       ├── sample/
│       │   └── sample_riscv_zig.zig
│       ├── tools/
│       │   ├── zigcc.cmd
│       │   └── zigcc.sh
│       └── unicorn/
│           ├── arm64_const.zig
│           ├── arm_const.zig
│           ├── m68k_const.zig
│           ├── mips_const.zig
│           ├── ppc_const.zig
│           ├── riscv_const.zig
│           ├── s390x_const.zig
│           ├── sparc_const.zig
│           ├── tricore_const.zig
│           ├── unicorn.zig
│           ├── unicorn_const.zig
│           └── x86_const.zig
├── build.rs
├── build.zig
├── build.zig.zon
├── cmake/
│   ├── bundle_static.cmake
│   ├── mingw-w64.cmake
│   └── zig.cmake
├── docs/
│   ├── COMPILE.md
│   ├── FAQ.md
│   ├── Hooks.md
│   ├── OPENBSD-NOTES.md
│   ├── README.md
│   ├── Testing.md
│   └── unicorn1-logo.txt
├── format.sh
├── glib_compat/
│   ├── README
│   ├── garray.c
│   ├── garray.h
│   ├── ghash.h
│   ├── glib_compat.c
│   ├── glib_compat.h
│   ├── glist.c
│   ├── glist.h
│   ├── gmacros.h
│   ├── gmem.c
│   ├── gmem.h
│   ├── gmessages.h
│   ├── gnode.h
│   ├── gpattern.c
│   ├── gpattern.h
│   ├── grand.c
│   ├── grand.h
│   ├── gslice.c
│   ├── gslice.h
│   ├── gtestutils.c
│   ├── gtestutils.h
│   ├── gtree.c
│   ├── gtree.h
│   └── gtypes.h
├── go.mod
├── include/
│   ├── list.h
│   ├── qemu.h
│   ├── uc_priv.h
│   └── unicorn/
│       ├── arm.h
│       ├── arm64.h
│       ├── m68k.h
│       ├── mips.h
│       ├── platform.h
│       ├── ppc.h
│       ├── riscv.h
│       ├── s390x.h
│       ├── sparc.h
│       ├── tricore.h
│       ├── unicorn.h
│       └── x86.h
├── list.c
├── msvc/
│   ├── aarch64-softmmu/
│   │   └── config-target.h
│   ├── aarch64eb-softmmu/
│   │   └── config-target.h
│   ├── arm-softmmu/
│   │   └── config-target.h
│   ├── armeb-softmmu/
│   │   └── config-target.h
│   ├── config-host.h
│   ├── m68k-softmmu/
│   │   └── config-target.h
│   ├── mips-softmmu/
│   │   └── config-target.h
│   ├── mips64-softmmu/
│   │   └── config-target.h
│   ├── mips64el-softmmu/
│   │   └── config-target.h
│   ├── mipsel-softmmu/
│   │   └── config-target.h
│   ├── ppc-softmmu/
│   │   └── config-target.h
│   ├── ppc64-softmmu/
│   │   └── config-target.h
│   ├── riscv32-softmmu/
│   │   └── config-target.h
│   ├── riscv64-softmmu/
│   │   └── config-target.h
│   ├── s390x-softmmu/
│   │   └── config-target.h
│   ├── sparc-softmmu/
│   │   └── config-target.h
│   ├── sparc64-softmmu/
│   │   └── config-target.h
│   ├── tricore-softmmu/
│   │   └── config-target.h
│   ├── unicorn/
│   │   └── dllmain.cpp
│   └── x86_64-softmmu/
│       └── config-target.h
├── qemu/
│   ├── .editorconfig
│   ├── CODING_STYLE.rst
│   ├── COPYING
│   ├── COPYING.LIB
│   ├── LICENSE
│   ├── MAINTAINERS
│   ├── VERSION
│   ├── aarch64.h
│   ├── accel/
│   │   └── tcg/
│   │       ├── atomic_template.h
│   │       ├── cpu-exec-common.c
│   │       ├── cpu-exec.c
│   │       ├── cputlb.c
│   │       ├── tcg-all.c
│   │       ├── tcg-runtime-gvec.c
│   │       ├── tcg-runtime.c
│   │       ├── tcg-runtime.h
│   │       ├── translate-all.c
│   │       ├── translate-all.h
│   │       └── translator.c
│   ├── arm.h
│   ├── configure
│   ├── crypto/
│   │   ├── aes.c
│   │   └── init.c
│   ├── exec-vary.c
│   ├── exec.c
│   ├── fpu/
│   │   ├── softfloat-specialize.inc.c
│   │   └── softfloat.c
│   ├── hw/
│   │   ├── core/
│   │   │   └── cpu.c
│   │   ├── i386/
│   │   │   └── x86.c
│   │   ├── ppc/
│   │   │   ├── ppc.c
│   │   │   └── ppc_booke.c
│   │   └── s390x/
│   │       └── s390-skeys.c
│   ├── include/
│   │   ├── crypto/
│   │   │   ├── aes.h
│   │   │   ├── init.h
│   │   │   └── random.h
│   │   ├── elf.h
│   │   ├── exec/
│   │   │   ├── cpu-all.h
│   │   │   ├── cpu-common.h
│   │   │   ├── cpu-defs.h
│   │   │   ├── cpu_ldst.h
│   │   │   ├── cputlb.h
│   │   │   ├── exec-all.h
│   │   │   ├── gen-icount.h
│   │   │   ├── helper-gen.h
│   │   │   ├── helper-head.h
│   │   │   ├── helper-proto.h
│   │   │   ├── helper-tcg.h
│   │   │   ├── hwaddr.h
│   │   │   ├── ioport.h
│   │   │   ├── memattrs.h
│   │   │   ├── memop.h
│   │   │   ├── memory-internal.h
│   │   │   ├── memory.h
│   │   │   ├── memory_ldst.inc.h
│   │   │   ├── memory_ldst_cached.inc.h
│   │   │   ├── memory_ldst_phys.inc.h
│   │   │   ├── poison.h
│   │   │   ├── ram_addr.h
│   │   │   ├── ramblock.h
│   │   │   ├── ramlist.h
│   │   │   ├── softmmu-semi.h
│   │   │   ├── target_page.h
│   │   │   ├── tb-context.h
│   │   │   ├── tb-hash.h
│   │   │   ├── tb-lookup.h
│   │   │   └── translator.h
│   │   ├── fpu/
│   │   │   ├── softfloat-helpers.h
│   │   │   ├── softfloat-macros.h
│   │   │   ├── softfloat-types.h
│   │   │   └── softfloat.h
│   │   ├── hw/
│   │   │   ├── core/
│   │   │   │   └── cpu.h
│   │   │   ├── i386/
│   │   │   │   └── topology.h
│   │   │   ├── mips/
│   │   │   │   └── cpudevs.h
│   │   │   ├── ppc/
│   │   │   │   └── ppc.h
│   │   │   ├── registerfields.h
│   │   │   └── s390x/
│   │   │       ├── ebcdic.h
│   │   │       ├── ioinst.h
│   │   │       ├── sclp.h
│   │   │       └── storage-keys.h
│   │   ├── libdecnumber/
│   │   │   ├── dconfig.h
│   │   │   ├── decContext.h
│   │   │   ├── decDPD.h
│   │   │   ├── decNumber.h
│   │   │   ├── decNumberLocal.h
│   │   │   └── dpd/
│   │   │       ├── decimal128.h
│   │   │       ├── decimal128Local.h
│   │   │       ├── decimal32.h
│   │   │       └── decimal64.h
│   │   ├── qemu/
│   │   │   ├── atomic.h
│   │   │   ├── atomic128.h
│   │   │   ├── bitmap.h
│   │   │   ├── bitops.h
│   │   │   ├── bswap.h
│   │   │   ├── compiler.h
│   │   │   ├── cpuid.h
│   │   │   ├── crc32c.h
│   │   │   ├── ctype.h
│   │   │   ├── cutils.h
│   │   │   ├── guest-random.h
│   │   │   ├── host-utils.h
│   │   │   ├── int128.h
│   │   │   ├── log.h
│   │   │   ├── osdep.h
│   │   │   ├── processor.h
│   │   │   ├── qdist.h
│   │   │   ├── qht.h
│   │   │   ├── queue.h
│   │   │   ├── range.h
│   │   │   ├── rcu_queue.h
│   │   │   ├── thread-posix.h
│   │   │   ├── thread-win32.h
│   │   │   ├── thread.h
│   │   │   ├── timer.h
│   │   │   ├── typedefs.h
│   │   │   ├── units.h
│   │   │   └── xxhash.h
│   │   ├── qemu-common.h
│   │   ├── sysemu/
│   │   │   ├── cpus.h
│   │   │   ├── memory_mapping.h
│   │   │   ├── os-win32.h
│   │   │   ├── sysemu.h
│   │   │   └── tcg.h
│   │   └── tcg/
│   │       ├── tcg-apple-jit.h
│   │       ├── tcg-gvec-desc.h
│   │       ├── tcg-mo.h
│   │       ├── tcg-op-gvec.h
│   │       ├── tcg-op.h
│   │       ├── tcg-opc.h
│   │       └── tcg.h
│   ├── libdecnumber/
│   │   ├── decContext.c
│   │   ├── decNumber.c
│   │   └── dpd/
│   │       ├── decimal128.c
│   │       ├── decimal32.c
│   │       └── decimal64.c
│   ├── m68k.h
│   ├── memory_ldst.inc.c
│   ├── mips.h
│   ├── mips64.h
│   ├── mips64el.h
│   ├── mipsel.h
│   ├── ppc.h
│   ├── ppc64.h
│   ├── riscv32.h
│   ├── riscv64.h
│   ├── rules.mak
│   ├── s390x.h
│   ├── scripts/
│   │   └── create_config
│   ├── softmmu/
│   │   ├── cpus.c
│   │   ├── ioport.c
│   │   ├── memory.c
│   │   ├── memory_mapping.c
│   │   ├── unicorn_vtlb.c
│   │   └── vl.c
│   ├── sparc.h
│   ├── sparc64.h
│   ├── target/
│   │   ├── arm/
│   │   │   ├── README
│   │   │   ├── arm-powerctl.c
│   │   │   ├── arm-powerctl.h
│   │   │   ├── arm-semi.c
│   │   │   ├── arm_ldst.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu64.c
│   │   │   ├── crypto_helper.c
│   │   │   ├── debug_helper.c
│   │   │   ├── decode-a32-uncond.inc.c
│   │   │   ├── decode-a32.inc.c
│   │   │   ├── decode-sve.inc.c
│   │   │   ├── decode-t16.inc.c
│   │   │   ├── decode-t32.inc.c
│   │   │   ├── decode-vfp-uncond.inc.c
│   │   │   ├── decode-vfp.inc.c
│   │   │   ├── helper-a64.c
│   │   │   ├── helper-a64.h
│   │   │   ├── helper-sve.h
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── internals.h
│   │   │   ├── iwmmxt_helper.c
│   │   │   ├── kvm-consts.h
│   │   │   ├── m_helper.c
│   │   │   ├── neon_helper.c
│   │   │   ├── op_addsub.h
│   │   │   ├── op_helper.c
│   │   │   ├── pauth_helper.c
│   │   │   ├── psci.c
│   │   │   ├── sve_helper.c
│   │   │   ├── tlb_helper.c
│   │   │   ├── translate-a64.c
│   │   │   ├── translate-a64.h
│   │   │   ├── translate-sve.c
│   │   │   ├── translate-vfp.inc.c
│   │   │   ├── translate.c
│   │   │   ├── translate.h
│   │   │   ├── unicorn.h
│   │   │   ├── unicorn_aarch64.c
│   │   │   ├── unicorn_arm.c
│   │   │   ├── vec_helper.c
│   │   │   └── vfp_helper.c
│   │   ├── i386/
│   │   │   ├── TODO
│   │   │   ├── arch_memory_mapping.c
│   │   │   ├── bpt_helper.c
│   │   │   ├── cc_helper.c
│   │   │   ├── cc_helper_template.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── int_helper.c
│   │   │   ├── machine.c
│   │   │   ├── mem_helper.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mpx_helper.c
│   │   │   ├── ops_sse.h
│   │   │   ├── ops_sse_header.h
│   │   │   ├── seg_helper.c
│   │   │   ├── shift_helper_template.h
│   │   │   ├── smm_helper.c
│   │   │   ├── svm.h
│   │   │   ├── svm_helper.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   └── xsave_helper.c
│   │   ├── m68k/
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── op_helper.c
│   │   │   ├── qregs.def
│   │   │   ├── softfloat.c
│   │   │   ├── softfloat.h
│   │   │   ├── softfloat_fpsp_tables.h
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── mips/
│   │   │   ├── TODO
│   │   │   ├── cp0_helper.c
│   │   │   ├── cp0_timer.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── dsp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── internal.h
│   │   │   ├── lmi_helper.c
│   │   │   ├── mips-defs.h
│   │   │   ├── msa_helper.c
│   │   │   ├── op_helper.c
│   │   │   ├── translate.c
│   │   │   ├── translate_init.inc.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── ppc/
│   │   │   ├── compat.c
│   │   │   ├── cpu-models.c
│   │   │   ├── cpu-models.h
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── dfp_helper.c
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.h
│   │   │   ├── helper_regs.h
│   │   │   ├── int_helper.c
│   │   │   ├── internal.h
│   │   │   ├── kvm_ppc.h
│   │   │   ├── machine.c
│   │   │   ├── mem_helper.c
│   │   │   ├── mfrom_table.inc.c
│   │   │   ├── mfrom_table_gen.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mmu-book3s-v3.c
│   │   │   ├── mmu-book3s-v3.h
│   │   │   ├── mmu-hash32.c
│   │   │   ├── mmu-hash32.h
│   │   │   ├── mmu-hash64.c
│   │   │   ├── mmu-hash64.h
│   │   │   ├── mmu-radix64.c
│   │   │   ├── mmu-radix64.h
│   │   │   ├── mmu_helper.c
│   │   │   ├── timebase_helper.c
│   │   │   ├── translate/
│   │   │   │   ├── dfp-impl.inc.c
│   │   │   │   ├── dfp-ops.inc.c
│   │   │   │   ├── fp-impl.inc.c
│   │   │   │   ├── fp-ops.inc.c
│   │   │   │   ├── spe-impl.inc.c
│   │   │   │   ├── spe-ops.inc.c
│   │   │   │   ├── vmx-impl.inc.c
│   │   │   │   ├── vmx-ops.inc.c
│   │   │   │   ├── vsx-impl.inc.c
│   │   │   │   └── vsx-ops.inc.c
│   │   │   ├── translate.c
│   │   │   ├── translate_init.inc.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── riscv/
│   │   │   ├── README
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu_bits.h
│   │   │   ├── cpu_helper.c
│   │   │   ├── cpu_user.h
│   │   │   ├── csr.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── helper.h
│   │   │   ├── insn_trans/
│   │   │   │   ├── trans_privileged.inc.c
│   │   │   │   ├── trans_rva.inc.c
│   │   │   │   ├── trans_rvd.inc.c
│   │   │   │   ├── trans_rvf.inc.c
│   │   │   │   ├── trans_rvi.inc.c
│   │   │   │   └── trans_rvm.inc.c
│   │   │   ├── instmap.h
│   │   │   ├── op_helper.c
│   │   │   ├── pmp.c
│   │   │   ├── pmp.h
│   │   │   ├── riscv32/
│   │   │   │   ├── decode_insn16.inc.c
│   │   │   │   └── decode_insn32.inc.c
│   │   │   ├── riscv64/
│   │   │   │   ├── decode_insn16.inc.c
│   │   │   │   └── decode_insn32.inc.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   └── unicorn.h
│   │   ├── s390x/
│   │   │   ├── cc_helper.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── cpu_features.c
│   │   │   ├── cpu_features.h
│   │   │   ├── cpu_features_def.h
│   │   │   ├── cpu_features_def.inc.h
│   │   │   ├── cpu_models.c
│   │   │   ├── cpu_models.h
│   │   │   ├── crypto_helper.c
│   │   │   ├── excp_helper.c
│   │   │   ├── fpu_helper.c
│   │   │   ├── gen-features.c
│   │   │   ├── gen-features.h
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── insn-data.def
│   │   │   ├── insn-format.def
│   │   │   ├── int_helper.c
│   │   │   ├── internal.h
│   │   │   ├── interrupt.c
│   │   │   ├── ioinst.c
│   │   │   ├── mem_helper.c
│   │   │   ├── misc_helper.c
│   │   │   ├── mmu_helper.c
│   │   │   ├── s390-tod.h
│   │   │   ├── sigp.c
│   │   │   ├── tcg-stub.c
│   │   │   ├── tcg_s390x.h
│   │   │   ├── translate.c
│   │   │   ├── translate_vx.inc.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   ├── vec.h
│   │   │   ├── vec_fpu_helper.c
│   │   │   ├── vec_helper.c
│   │   │   ├── vec_int_helper.c
│   │   │   └── vec_string_helper.c
│   │   ├── sparc/
│   │   │   ├── asi.h
│   │   │   ├── cc_helper.c
│   │   │   ├── cpu-param.h
│   │   │   ├── cpu-qom.h
│   │   │   ├── cpu.c
│   │   │   ├── cpu.h
│   │   │   ├── fop_helper.c
│   │   │   ├── helper.c
│   │   │   ├── helper.h
│   │   │   ├── int32_helper.c
│   │   │   ├── int64_helper.c
│   │   │   ├── ldst_helper.c
│   │   │   ├── mmu_helper.c
│   │   │   ├── translate.c
│   │   │   ├── unicorn.c
│   │   │   ├── unicorn.h
│   │   │   ├── unicorn64.c
│   │   │   ├── vis_helper.c
│   │   │   └── win_helper.c
│   │   └── tricore/
│   │       ├── cpu-param.h
│   │       ├── cpu-qom.h
│   │       ├── cpu.c
│   │       ├── cpu.h
│   │       ├── csfr.def
│   │       ├── fpu_helper.c
│   │       ├── helper.c
│   │       ├── helper.h
│   │       ├── op_helper.c
│   │       ├── translate.c
│   │       ├── tricore-defs.h
│   │       ├── tricore-opcodes.h
│   │       ├── unicorn.c
│   │       └── unicorn.h
│   ├── tcg/
│   │   ├── README
│   │   ├── aarch64/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── arm/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── i386/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── loongarch64/
│   │   │   ├── tcg-insn-defs.c.inc
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── mips/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── optimize.c
│   │   ├── ppc/
│   │   │   ├── tcg-target.h
│   │   │   ├── tcg-target.inc.c
│   │   │   └── tcg-target.opc.h
│   │   ├── riscv/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── s390/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── sparc/
│   │   │   ├── tcg-target.h
│   │   │   └── tcg-target.inc.c
│   │   ├── tcg-ldst.inc.c
│   │   ├── tcg-op-gvec.c
│   │   ├── tcg-op-vec.c
│   │   ├── tcg-op.c
│   │   ├── tcg-pool.inc.c
│   │   └── tcg.c
│   ├── trace/
│   │   ├── mem-internal.h
│   │   └── mem.h
│   ├── tricore.h
│   ├── unicorn_common.h
│   ├── util/
│   │   ├── bitmap.c
│   │   ├── bitops.c
│   │   ├── cacheinfo.c
│   │   ├── crc32c.c
│   │   ├── cutils.c
│   │   ├── getauxval.c
│   │   ├── guest-random.c
│   │   ├── host-utils.c
│   │   ├── osdep.c
│   │   ├── oslib-posix.c
│   │   ├── oslib-win32.c
│   │   ├── pagesize.c
│   │   ├── qdist.c
│   │   ├── qemu-thread-posix.c
│   │   ├── qemu-thread-win32.c
│   │   ├── qemu-timer-common.c
│   │   ├── qemu-timer.c
│   │   ├── qht.c
│   │   ├── range.c
│   │   └── setjmp-wrapper-win32.asm
│   ├── vl.h
│   └── x86_64.h
├── samples/
│   ├── Makefile
│   ├── mem_apis.c
│   ├── sample_all.sh
│   ├── sample_arm.c
│   ├── sample_arm64.c
│   ├── sample_batch_reg.c
│   ├── sample_ctl.c
│   ├── sample_m68k.c
│   ├── sample_mips.c
│   ├── sample_mmu.c
│   ├── sample_ppc.c
│   ├── sample_riscv.c
│   ├── sample_s390x.c
│   ├── sample_sparc.c
│   ├── sample_tricore.c
│   ├── sample_x86.c
│   ├── sample_x86_32_gdt_and_seg_regs.c
│   └── shellcode.c
├── symbols.sh
├── tests/
│   ├── README.md
│   ├── benchmarks/
│   │   └── cow/
│   │       ├── Makefile
│   │       ├── benchmark.c
│   │       └── binary.S
│   ├── fuzz/
│   │   ├── Makefile
│   │   ├── dlcorpus.sh
│   │   ├── fuzz_emu.options
│   │   ├── fuzz_emu_arm64_arm.c
│   │   ├── fuzz_emu_arm64_armbe.c
│   │   ├── fuzz_emu_arm_arm.c
│   │   ├── fuzz_emu_arm_armbe.c
│   │   ├── fuzz_emu_arm_thumb.c
│   │   ├── fuzz_emu_m68k_be.c
│   │   ├── fuzz_emu_mips_32be.c
│   │   ├── fuzz_emu_mips_32le.c
│   │   ├── fuzz_emu_s390x_be.c
│   │   ├── fuzz_emu_sparc_32be.c
│   │   ├── fuzz_emu_x86_16.c
│   │   ├── fuzz_emu_x86_32.c
│   │   ├── fuzz_emu_x86_64.c
│   │   ├── gentargets.sh
│   │   ├── onedir.c
│   │   └── onefile.c
│   ├── regress/
│   │   ├── .gitignore
│   │   ├── 001-bad_condition_code_0xe.c
│   │   ├── 002-qemu__fatal__unimplemented_control_register_write_0xffb___0x0.c
│   │   ├── 003-qemu__fatal__wdebug_not_implemented.c
│   │   ├── 004-segmentation_fault_1.c
│   │   ├── 005-qemu__fatal__illegal_instruction__0000___00000404.c
│   │   ├── 006-qemu__fatal__illegal_instruction__0421___00040026.c
│   │   ├── 00opcode_uc_crash.c
│   │   ├── LICENSE
│   │   ├── Makefile
│   │   ├── arm64_reg_rw_w0_w30.py
│   │   ├── arm_bx_unmapped.py
│   │   ├── arm_bxeq_hang.py
│   │   ├── arm_enable_vfp.c
│   │   ├── arm_fp_vfp_disabled.py
│   │   ├── arm_init_input_crash.py
│   │   ├── arm_memcpy_neon.py
│   │   ├── arm_movr12_hang.py
│   │   ├── arm_vldr_invalid.py
│   │   ├── arm_wfi_first_insn_of_tb.py
│   │   ├── bad_ram.py
│   │   ├── block_test.c
│   │   ├── callback-pc.py
│   │   ├── core_ctl.py
│   │   ├── crash_tb.py
│   │   ├── deadlock_1.py
│   │   ├── eflags_noset.c
│   │   ├── eflags_nosync.c
│   │   ├── emu_clear_errors.c
│   │   ├── emu_clear_errors.py
│   │   ├── emu_stop_in_hook_overrun.c
│   │   ├── emu_stop_segfault.py
│   │   ├── ensure_typedef_consts_generated.py
│   │   ├── fpu_ip.py
│   │   ├── fpu_mem_write.py
│   │   ├── hang.py
│   │   ├── high_mem.py
│   │   ├── hook_add_crash.py
│   │   ├── hook_code_add_del.py
│   │   ├── hook_code_stop_emu.py
│   │   ├── hook_extrainvoke.c
│   │   ├── hook_raises_exception.py
│   │   ├── hook_readonly_write_local.py
│   │   ├── init.py
│   │   ├── invalid_insn.py
│   │   ├── invalid_read_in_cpu_tb_exec.c
│   │   ├── invalid_read_in_tb_flush_x86_64.c
│   │   ├── invalid_write.py
│   │   ├── invalid_write_in_cpu_tb_exec_x86_64.c
│   │   ├── jmp_ebx_hang.py
│   │   ├── jumping.py
│   │   ├── leaked_refs.py
│   │   ├── map_crash.c
│   │   ├── map_write.c
│   │   ├── memmap.py
│   │   ├── memmap_segfault.py
│   │   ├── mips64.py
│   │   ├── mips_branch_delay.py
│   │   ├── mips_branch_likely_issue.c
│   │   ├── mips_cp1.py
│   │   ├── mips_delay_slot_code_hook.c
│   │   ├── mips_except.py
│   │   ├── mips_invalid_read_of_size_4_when_tracing.c
│   │   ├── mips_kernel_mmu.py
│   │   ├── mips_kseg0_1.c
│   │   ├── mips_single_step_sp.py
│   │   ├── mips_syscall_pc.py
│   │   ├── mov_gs_eax.py
│   │   ├── movsd.py
│   │   ├── nr_mem_test.c
│   │   ├── osx_qemu_thread_create_crash.py
│   │   ├── potential_memory_leak.py
│   │   ├── pshufb.py
│   │   ├── reg_write_sign_extension.py
│   │   ├── regress.py
│   │   ├── regress.sh
│   │   ├── rep_hook.py
│   │   ├── rep_movsb.c
│   │   ├── ro_mem_test.c
│   │   ├── run_across_bb.py
│   │   ├── rw_hookstack.c
│   │   ├── segfault_on_stop.py
│   │   ├── sigill.c
│   │   ├── sigill2.c
│   │   ├── sparc64.py
│   │   ├── sparc_jump_to_zero.c
│   │   ├── sparc_reg.py
│   │   ├── sysenter_hook_x86.c
│   │   ├── tcg_liveness_analysis_bug_issue-287.py
│   │   ├── test_old_ctl.py
│   │   ├── threaded_emu_start.c
│   │   ├── timeout_segfault.c
│   │   ├── translator_buffer.py
│   │   ├── vld.py
│   │   ├── write_before_map.py
│   │   ├── wrong_rip.py
│   │   ├── wrong_rip_arm.py
│   │   ├── wrong_sp_arm.py
│   │   ├── x86_16_segfault.c
│   │   ├── x86_64_conditional_jump.py
│   │   ├── x86_64_eflags.py
│   │   ├── x86_64_msr.py
│   │   ├── x86_eflags.py
│   │   ├── x86_fldt_fsqrt.py
│   │   ├── x86_gdt.py
│   │   ├── x86_ld_crash.py
│   │   ├── x86_self_modifying.elf
│   │   ├── x86_self_modifying.py
│   │   ├── x86_self_modifying.s
│   │   ├── x86_set_ip.py
│   │   ├── x86_vex
│   │   └── x86_vex.c
│   └── unit/
│       ├── acutest.h
│       ├── test_arm.c
│       ├── test_arm64.c
│       ├── test_ctl.c
│       ├── test_m68k.c
│       ├── test_mem.c
│       ├── test_mips.c
│       ├── test_ppc.c
│       ├── test_riscv.c
│       ├── test_s390x.c
│       ├── test_sparc.c
│       ├── test_tricore.c
│       ├── test_x86.c
│       └── unicorn_test.h
└── uc.c
Download .txt
Showing preview only (1,717K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (19704 symbols across 684 files)

FILE: bindings/const_generator.py
  function gen (line 157) | def gen(lang):
  function main (line 295) | def main():

FILE: bindings/dotnet/UnicornSamples/Program.cs
  class Program (line 5) | internal static class Program
    method Main (line 7) | private static void Main(string[] args)

FILE: bindings/dotnet/UnicornSamples/ShellcodeSample.cs
  class ShellcodeSample (line 11) | internal static class ShellcodeSample
    method X86Code32Self (line 15) | public static void X86Code32Self()
    method X86Code32 (line 28) | public static void X86Code32()
    method Run (line 40) | private static void Run(byte[] code)
    method RunTest (line 54) | private static void RunTest(byte[] code, long address)
    method CodeHookCallback (line 98) | private static void CodeHookCallback(
    method SyscallHookCallback (line 123) | private static void SyscallHookCallback(Unicorn u, object userData)
    method InterruptHookCallback (line 134) | private static void InterruptHookCallback(Unicorn u, int intNumber, ob...

FILE: bindings/dotnet/UnicornSamples/Utils.cs
  class Utils (line 7) | internal static class Utils
    method ToInt (line 9) | public static long ToInt(byte[] val)
    method Int64ToBytes (line 20) | public static byte[] Int64ToBytes(long intVal)
    method Disassemble (line 32) | public static string Disassemble(CapstoneX86Disassembler disassembler,...

FILE: bindings/dotnet/UnicornSamples/X86Sample32.cs
  class X86Sample32 (line 11) | internal static class X86Sample32
    method X86Code32 (line 15) | public static void X86Code32()
    method X86Code32InvalidMemRead (line 25) | public static void X86Code32InvalidMemRead()
    method X86Code32InvalidMemWriteWithRuntimeFix (line 35) | public static void X86Code32InvalidMemWriteWithRuntimeFix()
    method X86Code32InOut (line 45) | public static void X86Code32InOut()
    method Run (line 56) | private static void Run(byte[] code, bool raiseException = false)
    method RunTest (line 83) | private static void RunTest(byte[] code, long address, int mode)
    method InHookCallback (line 135) | private static int InHookCallback(Unicorn u, int port, int size, objec...
    method OutHookCallback (line 157) | private static void OutHookCallback(Unicorn u, int port, int size, int...
    method MemMapHookCallback (line 187) | private static bool MemMapHookCallback(Unicorn u, int eventType, long ...
    method CodeHookCallback1 (line 197) | private static void CodeHookCallback1(
    method CodeHookCallback (line 222) | private static void CodeHookCallback(
    method SyscallHookCallback (line 247) | private static void SyscallHookCallback(Unicorn u, object userData)
    method InterruptHookCallback (line 258) | private static void InterruptHookCallback(Unicorn u, int intNumber, ob...

FILE: bindings/go/sample.go
  function addHooks (line 19) | func addHooks(mu uc.Unicorn) {
  function run (line 55) | func run() error {
  function main (line 101) | func main() {

FILE: bindings/go/unicorn/arm64_const.go
  constant CPU_ARM64_A57 (line 7) | CPU_ARM64_A57 = 0
  constant CPU_ARM64_A53 (line 8) | CPU_ARM64_A53 = 1
  constant CPU_ARM64_A72 (line 9) | CPU_ARM64_A72 = 2
  constant CPU_ARM64_MAX (line 10) | CPU_ARM64_MAX = 3
  constant CPU_ARM64_ENDING (line 11) | CPU_ARM64_ENDING = 4
  constant ARM64_REG_INVALID (line 15) | ARM64_REG_INVALID = 0
  constant ARM64_REG_X29 (line 16) | ARM64_REG_X29 = 1
  constant ARM64_REG_X30 (line 17) | ARM64_REG_X30 = 2
  constant ARM64_REG_NZCV (line 18) | ARM64_REG_NZCV = 3
  constant ARM64_REG_SP (line 19) | ARM64_REG_SP = 4
  constant ARM64_REG_WSP (line 20) | ARM64_REG_WSP = 5
  constant ARM64_REG_WZR (line 21) | ARM64_REG_WZR = 6
  constant ARM64_REG_XZR (line 22) | ARM64_REG_XZR = 7
  constant ARM64_REG_B0 (line 23) | ARM64_REG_B0 = 8
  constant ARM64_REG_B1 (line 24) | ARM64_REG_B1 = 9
  constant ARM64_REG_B2 (line 25) | ARM64_REG_B2 = 10
  constant ARM64_REG_B3 (line 26) | ARM64_REG_B3 = 11
  constant ARM64_REG_B4 (line 27) | ARM64_REG_B4 = 12
  constant ARM64_REG_B5 (line 28) | ARM64_REG_B5 = 13
  constant ARM64_REG_B6 (line 29) | ARM64_REG_B6 = 14
  constant ARM64_REG_B7 (line 30) | ARM64_REG_B7 = 15
  constant ARM64_REG_B8 (line 31) | ARM64_REG_B8 = 16
  constant ARM64_REG_B9 (line 32) | ARM64_REG_B9 = 17
  constant ARM64_REG_B10 (line 33) | ARM64_REG_B10 = 18
  constant ARM64_REG_B11 (line 34) | ARM64_REG_B11 = 19
  constant ARM64_REG_B12 (line 35) | ARM64_REG_B12 = 20
  constant ARM64_REG_B13 (line 36) | ARM64_REG_B13 = 21
  constant ARM64_REG_B14 (line 37) | ARM64_REG_B14 = 22
  constant ARM64_REG_B15 (line 38) | ARM64_REG_B15 = 23
  constant ARM64_REG_B16 (line 39) | ARM64_REG_B16 = 24
  constant ARM64_REG_B17 (line 40) | ARM64_REG_B17 = 25
  constant ARM64_REG_B18 (line 41) | ARM64_REG_B18 = 26
  constant ARM64_REG_B19 (line 42) | ARM64_REG_B19 = 27
  constant ARM64_REG_B20 (line 43) | ARM64_REG_B20 = 28
  constant ARM64_REG_B21 (line 44) | ARM64_REG_B21 = 29
  constant ARM64_REG_B22 (line 45) | ARM64_REG_B22 = 30
  constant ARM64_REG_B23 (line 46) | ARM64_REG_B23 = 31
  constant ARM64_REG_B24 (line 47) | ARM64_REG_B24 = 32
  constant ARM64_REG_B25 (line 48) | ARM64_REG_B25 = 33
  constant ARM64_REG_B26 (line 49) | ARM64_REG_B26 = 34
  constant ARM64_REG_B27 (line 50) | ARM64_REG_B27 = 35
  constant ARM64_REG_B28 (line 51) | ARM64_REG_B28 = 36
  constant ARM64_REG_B29 (line 52) | ARM64_REG_B29 = 37
  constant ARM64_REG_B30 (line 53) | ARM64_REG_B30 = 38
  constant ARM64_REG_B31 (line 54) | ARM64_REG_B31 = 39
  constant ARM64_REG_D0 (line 55) | ARM64_REG_D0 = 40
  constant ARM64_REG_D1 (line 56) | ARM64_REG_D1 = 41
  constant ARM64_REG_D2 (line 57) | ARM64_REG_D2 = 42
  constant ARM64_REG_D3 (line 58) | ARM64_REG_D3 = 43
  constant ARM64_REG_D4 (line 59) | ARM64_REG_D4 = 44
  constant ARM64_REG_D5 (line 60) | ARM64_REG_D5 = 45
  constant ARM64_REG_D6 (line 61) | ARM64_REG_D6 = 46
  constant ARM64_REG_D7 (line 62) | ARM64_REG_D7 = 47
  constant ARM64_REG_D8 (line 63) | ARM64_REG_D8 = 48
  constant ARM64_REG_D9 (line 64) | ARM64_REG_D9 = 49
  constant ARM64_REG_D10 (line 65) | ARM64_REG_D10 = 50
  constant ARM64_REG_D11 (line 66) | ARM64_REG_D11 = 51
  constant ARM64_REG_D12 (line 67) | ARM64_REG_D12 = 52
  constant ARM64_REG_D13 (line 68) | ARM64_REG_D13 = 53
  constant ARM64_REG_D14 (line 69) | ARM64_REG_D14 = 54
  constant ARM64_REG_D15 (line 70) | ARM64_REG_D15 = 55
  constant ARM64_REG_D16 (line 71) | ARM64_REG_D16 = 56
  constant ARM64_REG_D17 (line 72) | ARM64_REG_D17 = 57
  constant ARM64_REG_D18 (line 73) | ARM64_REG_D18 = 58
  constant ARM64_REG_D19 (line 74) | ARM64_REG_D19 = 59
  constant ARM64_REG_D20 (line 75) | ARM64_REG_D20 = 60
  constant ARM64_REG_D21 (line 76) | ARM64_REG_D21 = 61
  constant ARM64_REG_D22 (line 77) | ARM64_REG_D22 = 62
  constant ARM64_REG_D23 (line 78) | ARM64_REG_D23 = 63
  constant ARM64_REG_D24 (line 79) | ARM64_REG_D24 = 64
  constant ARM64_REG_D25 (line 80) | ARM64_REG_D25 = 65
  constant ARM64_REG_D26 (line 81) | ARM64_REG_D26 = 66
  constant ARM64_REG_D27 (line 82) | ARM64_REG_D27 = 67
  constant ARM64_REG_D28 (line 83) | ARM64_REG_D28 = 68
  constant ARM64_REG_D29 (line 84) | ARM64_REG_D29 = 69
  constant ARM64_REG_D30 (line 85) | ARM64_REG_D30 = 70
  constant ARM64_REG_D31 (line 86) | ARM64_REG_D31 = 71
  constant ARM64_REG_H0 (line 87) | ARM64_REG_H0 = 72
  constant ARM64_REG_H1 (line 88) | ARM64_REG_H1 = 73
  constant ARM64_REG_H2 (line 89) | ARM64_REG_H2 = 74
  constant ARM64_REG_H3 (line 90) | ARM64_REG_H3 = 75
  constant ARM64_REG_H4 (line 91) | ARM64_REG_H4 = 76
  constant ARM64_REG_H5 (line 92) | ARM64_REG_H5 = 77
  constant ARM64_REG_H6 (line 93) | ARM64_REG_H6 = 78
  constant ARM64_REG_H7 (line 94) | ARM64_REG_H7 = 79
  constant ARM64_REG_H8 (line 95) | ARM64_REG_H8 = 80
  constant ARM64_REG_H9 (line 96) | ARM64_REG_H9 = 81
  constant ARM64_REG_H10 (line 97) | ARM64_REG_H10 = 82
  constant ARM64_REG_H11 (line 98) | ARM64_REG_H11 = 83
  constant ARM64_REG_H12 (line 99) | ARM64_REG_H12 = 84
  constant ARM64_REG_H13 (line 100) | ARM64_REG_H13 = 85
  constant ARM64_REG_H14 (line 101) | ARM64_REG_H14 = 86
  constant ARM64_REG_H15 (line 102) | ARM64_REG_H15 = 87
  constant ARM64_REG_H16 (line 103) | ARM64_REG_H16 = 88
  constant ARM64_REG_H17 (line 104) | ARM64_REG_H17 = 89
  constant ARM64_REG_H18 (line 105) | ARM64_REG_H18 = 90
  constant ARM64_REG_H19 (line 106) | ARM64_REG_H19 = 91
  constant ARM64_REG_H20 (line 107) | ARM64_REG_H20 = 92
  constant ARM64_REG_H21 (line 108) | ARM64_REG_H21 = 93
  constant ARM64_REG_H22 (line 109) | ARM64_REG_H22 = 94
  constant ARM64_REG_H23 (line 110) | ARM64_REG_H23 = 95
  constant ARM64_REG_H24 (line 111) | ARM64_REG_H24 = 96
  constant ARM64_REG_H25 (line 112) | ARM64_REG_H25 = 97
  constant ARM64_REG_H26 (line 113) | ARM64_REG_H26 = 98
  constant ARM64_REG_H27 (line 114) | ARM64_REG_H27 = 99
  constant ARM64_REG_H28 (line 115) | ARM64_REG_H28 = 100
  constant ARM64_REG_H29 (line 116) | ARM64_REG_H29 = 101
  constant ARM64_REG_H30 (line 117) | ARM64_REG_H30 = 102
  constant ARM64_REG_H31 (line 118) | ARM64_REG_H31 = 103
  constant ARM64_REG_Q0 (line 119) | ARM64_REG_Q0 = 104
  constant ARM64_REG_Q1 (line 120) | ARM64_REG_Q1 = 105
  constant ARM64_REG_Q2 (line 121) | ARM64_REG_Q2 = 106
  constant ARM64_REG_Q3 (line 122) | ARM64_REG_Q3 = 107
  constant ARM64_REG_Q4 (line 123) | ARM64_REG_Q4 = 108
  constant ARM64_REG_Q5 (line 124) | ARM64_REG_Q5 = 109
  constant ARM64_REG_Q6 (line 125) | ARM64_REG_Q6 = 110
  constant ARM64_REG_Q7 (line 126) | ARM64_REG_Q7 = 111
  constant ARM64_REG_Q8 (line 127) | ARM64_REG_Q8 = 112
  constant ARM64_REG_Q9 (line 128) | ARM64_REG_Q9 = 113
  constant ARM64_REG_Q10 (line 129) | ARM64_REG_Q10 = 114
  constant ARM64_REG_Q11 (line 130) | ARM64_REG_Q11 = 115
  constant ARM64_REG_Q12 (line 131) | ARM64_REG_Q12 = 116
  constant ARM64_REG_Q13 (line 132) | ARM64_REG_Q13 = 117
  constant ARM64_REG_Q14 (line 133) | ARM64_REG_Q14 = 118
  constant ARM64_REG_Q15 (line 134) | ARM64_REG_Q15 = 119
  constant ARM64_REG_Q16 (line 135) | ARM64_REG_Q16 = 120
  constant ARM64_REG_Q17 (line 136) | ARM64_REG_Q17 = 121
  constant ARM64_REG_Q18 (line 137) | ARM64_REG_Q18 = 122
  constant ARM64_REG_Q19 (line 138) | ARM64_REG_Q19 = 123
  constant ARM64_REG_Q20 (line 139) | ARM64_REG_Q20 = 124
  constant ARM64_REG_Q21 (line 140) | ARM64_REG_Q21 = 125
  constant ARM64_REG_Q22 (line 141) | ARM64_REG_Q22 = 126
  constant ARM64_REG_Q23 (line 142) | ARM64_REG_Q23 = 127
  constant ARM64_REG_Q24 (line 143) | ARM64_REG_Q24 = 128
  constant ARM64_REG_Q25 (line 144) | ARM64_REG_Q25 = 129
  constant ARM64_REG_Q26 (line 145) | ARM64_REG_Q26 = 130
  constant ARM64_REG_Q27 (line 146) | ARM64_REG_Q27 = 131
  constant ARM64_REG_Q28 (line 147) | ARM64_REG_Q28 = 132
  constant ARM64_REG_Q29 (line 148) | ARM64_REG_Q29 = 133
  constant ARM64_REG_Q30 (line 149) | ARM64_REG_Q30 = 134
  constant ARM64_REG_Q31 (line 150) | ARM64_REG_Q31 = 135
  constant ARM64_REG_S0 (line 151) | ARM64_REG_S0 = 136
  constant ARM64_REG_S1 (line 152) | ARM64_REG_S1 = 137
  constant ARM64_REG_S2 (line 153) | ARM64_REG_S2 = 138
  constant ARM64_REG_S3 (line 154) | ARM64_REG_S3 = 139
  constant ARM64_REG_S4 (line 155) | ARM64_REG_S4 = 140
  constant ARM64_REG_S5 (line 156) | ARM64_REG_S5 = 141
  constant ARM64_REG_S6 (line 157) | ARM64_REG_S6 = 142
  constant ARM64_REG_S7 (line 158) | ARM64_REG_S7 = 143
  constant ARM64_REG_S8 (line 159) | ARM64_REG_S8 = 144
  constant ARM64_REG_S9 (line 160) | ARM64_REG_S9 = 145
  constant ARM64_REG_S10 (line 161) | ARM64_REG_S10 = 146
  constant ARM64_REG_S11 (line 162) | ARM64_REG_S11 = 147
  constant ARM64_REG_S12 (line 163) | ARM64_REG_S12 = 148
  constant ARM64_REG_S13 (line 164) | ARM64_REG_S13 = 149
  constant ARM64_REG_S14 (line 165) | ARM64_REG_S14 = 150
  constant ARM64_REG_S15 (line 166) | ARM64_REG_S15 = 151
  constant ARM64_REG_S16 (line 167) | ARM64_REG_S16 = 152
  constant ARM64_REG_S17 (line 168) | ARM64_REG_S17 = 153
  constant ARM64_REG_S18 (line 169) | ARM64_REG_S18 = 154
  constant ARM64_REG_S19 (line 170) | ARM64_REG_S19 = 155
  constant ARM64_REG_S20 (line 171) | ARM64_REG_S20 = 156
  constant ARM64_REG_S21 (line 172) | ARM64_REG_S21 = 157
  constant ARM64_REG_S22 (line 173) | ARM64_REG_S22 = 158
  constant ARM64_REG_S23 (line 174) | ARM64_REG_S23 = 159
  constant ARM64_REG_S24 (line 175) | ARM64_REG_S24 = 160
  constant ARM64_REG_S25 (line 176) | ARM64_REG_S25 = 161
  constant ARM64_REG_S26 (line 177) | ARM64_REG_S26 = 162
  constant ARM64_REG_S27 (line 178) | ARM64_REG_S27 = 163
  constant ARM64_REG_S28 (line 179) | ARM64_REG_S28 = 164
  constant ARM64_REG_S29 (line 180) | ARM64_REG_S29 = 165
  constant ARM64_REG_S30 (line 181) | ARM64_REG_S30 = 166
  constant ARM64_REG_S31 (line 182) | ARM64_REG_S31 = 167
  constant ARM64_REG_W0 (line 183) | ARM64_REG_W0 = 168
  constant ARM64_REG_W1 (line 184) | ARM64_REG_W1 = 169
  constant ARM64_REG_W2 (line 185) | ARM64_REG_W2 = 170
  constant ARM64_REG_W3 (line 186) | ARM64_REG_W3 = 171
  constant ARM64_REG_W4 (line 187) | ARM64_REG_W4 = 172
  constant ARM64_REG_W5 (line 188) | ARM64_REG_W5 = 173
  constant ARM64_REG_W6 (line 189) | ARM64_REG_W6 = 174
  constant ARM64_REG_W7 (line 190) | ARM64_REG_W7 = 175
  constant ARM64_REG_W8 (line 191) | ARM64_REG_W8 = 176
  constant ARM64_REG_W9 (line 192) | ARM64_REG_W9 = 177
  constant ARM64_REG_W10 (line 193) | ARM64_REG_W10 = 178
  constant ARM64_REG_W11 (line 194) | ARM64_REG_W11 = 179
  constant ARM64_REG_W12 (line 195) | ARM64_REG_W12 = 180
  constant ARM64_REG_W13 (line 196) | ARM64_REG_W13 = 181
  constant ARM64_REG_W14 (line 197) | ARM64_REG_W14 = 182
  constant ARM64_REG_W15 (line 198) | ARM64_REG_W15 = 183
  constant ARM64_REG_W16 (line 199) | ARM64_REG_W16 = 184
  constant ARM64_REG_W17 (line 200) | ARM64_REG_W17 = 185
  constant ARM64_REG_W18 (line 201) | ARM64_REG_W18 = 186
  constant ARM64_REG_W19 (line 202) | ARM64_REG_W19 = 187
  constant ARM64_REG_W20 (line 203) | ARM64_REG_W20 = 188
  constant ARM64_REG_W21 (line 204) | ARM64_REG_W21 = 189
  constant ARM64_REG_W22 (line 205) | ARM64_REG_W22 = 190
  constant ARM64_REG_W23 (line 206) | ARM64_REG_W23 = 191
  constant ARM64_REG_W24 (line 207) | ARM64_REG_W24 = 192
  constant ARM64_REG_W25 (line 208) | ARM64_REG_W25 = 193
  constant ARM64_REG_W26 (line 209) | ARM64_REG_W26 = 194
  constant ARM64_REG_W27 (line 210) | ARM64_REG_W27 = 195
  constant ARM64_REG_W28 (line 211) | ARM64_REG_W28 = 196
  constant ARM64_REG_W29 (line 212) | ARM64_REG_W29 = 197
  constant ARM64_REG_W30 (line 213) | ARM64_REG_W30 = 198
  constant ARM64_REG_X0 (line 214) | ARM64_REG_X0 = 199
  constant ARM64_REG_X1 (line 215) | ARM64_REG_X1 = 200
  constant ARM64_REG_X2 (line 216) | ARM64_REG_X2 = 201
  constant ARM64_REG_X3 (line 217) | ARM64_REG_X3 = 202
  constant ARM64_REG_X4 (line 218) | ARM64_REG_X4 = 203
  constant ARM64_REG_X5 (line 219) | ARM64_REG_X5 = 204
  constant ARM64_REG_X6 (line 220) | ARM64_REG_X6 = 205
  constant ARM64_REG_X7 (line 221) | ARM64_REG_X7 = 206
  constant ARM64_REG_X8 (line 222) | ARM64_REG_X8 = 207
  constant ARM64_REG_X9 (line 223) | ARM64_REG_X9 = 208
  constant ARM64_REG_X10 (line 224) | ARM64_REG_X10 = 209
  constant ARM64_REG_X11 (line 225) | ARM64_REG_X11 = 210
  constant ARM64_REG_X12 (line 226) | ARM64_REG_X12 = 211
  constant ARM64_REG_X13 (line 227) | ARM64_REG_X13 = 212
  constant ARM64_REG_X14 (line 228) | ARM64_REG_X14 = 213
  constant ARM64_REG_X15 (line 229) | ARM64_REG_X15 = 214
  constant ARM64_REG_X16 (line 230) | ARM64_REG_X16 = 215
  constant ARM64_REG_X17 (line 231) | ARM64_REG_X17 = 216
  constant ARM64_REG_X18 (line 232) | ARM64_REG_X18 = 217
  constant ARM64_REG_X19 (line 233) | ARM64_REG_X19 = 218
  constant ARM64_REG_X20 (line 234) | ARM64_REG_X20 = 219
  constant ARM64_REG_X21 (line 235) | ARM64_REG_X21 = 220
  constant ARM64_REG_X22 (line 236) | ARM64_REG_X22 = 221
  constant ARM64_REG_X23 (line 237) | ARM64_REG_X23 = 222
  constant ARM64_REG_X24 (line 238) | ARM64_REG_X24 = 223
  constant ARM64_REG_X25 (line 239) | ARM64_REG_X25 = 224
  constant ARM64_REG_X26 (line 240) | ARM64_REG_X26 = 225
  constant ARM64_REG_X27 (line 241) | ARM64_REG_X27 = 226
  constant ARM64_REG_X28 (line 242) | ARM64_REG_X28 = 227
  constant ARM64_REG_V0 (line 243) | ARM64_REG_V0 = 228
  constant ARM64_REG_V1 (line 244) | ARM64_REG_V1 = 229
  constant ARM64_REG_V2 (line 245) | ARM64_REG_V2 = 230
  constant ARM64_REG_V3 (line 246) | ARM64_REG_V3 = 231
  constant ARM64_REG_V4 (line 247) | ARM64_REG_V4 = 232
  constant ARM64_REG_V5 (line 248) | ARM64_REG_V5 = 233
  constant ARM64_REG_V6 (line 249) | ARM64_REG_V6 = 234
  constant ARM64_REG_V7 (line 250) | ARM64_REG_V7 = 235
  constant ARM64_REG_V8 (line 251) | ARM64_REG_V8 = 236
  constant ARM64_REG_V9 (line 252) | ARM64_REG_V9 = 237
  constant ARM64_REG_V10 (line 253) | ARM64_REG_V10 = 238
  constant ARM64_REG_V11 (line 254) | ARM64_REG_V11 = 239
  constant ARM64_REG_V12 (line 255) | ARM64_REG_V12 = 240
  constant ARM64_REG_V13 (line 256) | ARM64_REG_V13 = 241
  constant ARM64_REG_V14 (line 257) | ARM64_REG_V14 = 242
  constant ARM64_REG_V15 (line 258) | ARM64_REG_V15 = 243
  constant ARM64_REG_V16 (line 259) | ARM64_REG_V16 = 244
  constant ARM64_REG_V17 (line 260) | ARM64_REG_V17 = 245
  constant ARM64_REG_V18 (line 261) | ARM64_REG_V18 = 246
  constant ARM64_REG_V19 (line 262) | ARM64_REG_V19 = 247
  constant ARM64_REG_V20 (line 263) | ARM64_REG_V20 = 248
  constant ARM64_REG_V21 (line 264) | ARM64_REG_V21 = 249
  constant ARM64_REG_V22 (line 265) | ARM64_REG_V22 = 250
  constant ARM64_REG_V23 (line 266) | ARM64_REG_V23 = 251
  constant ARM64_REG_V24 (line 267) | ARM64_REG_V24 = 252
  constant ARM64_REG_V25 (line 268) | ARM64_REG_V25 = 253
  constant ARM64_REG_V26 (line 269) | ARM64_REG_V26 = 254
  constant ARM64_REG_V27 (line 270) | ARM64_REG_V27 = 255
  constant ARM64_REG_V28 (line 271) | ARM64_REG_V28 = 256
  constant ARM64_REG_V29 (line 272) | ARM64_REG_V29 = 257
  constant ARM64_REG_V30 (line 273) | ARM64_REG_V30 = 258
  constant ARM64_REG_V31 (line 274) | ARM64_REG_V31 = 259
  constant ARM64_REG_PC (line 277) | ARM64_REG_PC = 260
  constant ARM64_REG_CPACR_EL1 (line 278) | ARM64_REG_CPACR_EL1 = 261
  constant ARM64_REG_TPIDR_EL0 (line 281) | ARM64_REG_TPIDR_EL0 = 262
  constant ARM64_REG_TPIDRRO_EL0 (line 282) | ARM64_REG_TPIDRRO_EL0 = 263
  constant ARM64_REG_TPIDR_EL1 (line 283) | ARM64_REG_TPIDR_EL1 = 264
  constant ARM64_REG_PSTATE (line 284) | ARM64_REG_PSTATE = 265
  constant ARM64_REG_ELR_EL0 (line 287) | ARM64_REG_ELR_EL0 = 266
  constant ARM64_REG_ELR_EL1 (line 288) | ARM64_REG_ELR_EL1 = 267
  constant ARM64_REG_ELR_EL2 (line 289) | ARM64_REG_ELR_EL2 = 268
  constant ARM64_REG_ELR_EL3 (line 290) | ARM64_REG_ELR_EL3 = 269
  constant ARM64_REG_SP_EL0 (line 293) | ARM64_REG_SP_EL0 = 270
  constant ARM64_REG_SP_EL1 (line 294) | ARM64_REG_SP_EL1 = 271
  constant ARM64_REG_SP_EL2 (line 295) | ARM64_REG_SP_EL2 = 272
  constant ARM64_REG_SP_EL3 (line 296) | ARM64_REG_SP_EL3 = 273
  constant ARM64_REG_TTBR0_EL1 (line 299) | ARM64_REG_TTBR0_EL1 = 274
  constant ARM64_REG_TTBR1_EL1 (line 300) | ARM64_REG_TTBR1_EL1 = 275
  constant ARM64_REG_ESR_EL0 (line 301) | ARM64_REG_ESR_EL0 = 276
  constant ARM64_REG_ESR_EL1 (line 302) | ARM64_REG_ESR_EL1 = 277
  constant ARM64_REG_ESR_EL2 (line 303) | ARM64_REG_ESR_EL2 = 278
  constant ARM64_REG_ESR_EL3 (line 304) | ARM64_REG_ESR_EL3 = 279
  constant ARM64_REG_FAR_EL0 (line 305) | ARM64_REG_FAR_EL0 = 280
  constant ARM64_REG_FAR_EL1 (line 306) | ARM64_REG_FAR_EL1 = 281
  constant ARM64_REG_FAR_EL2 (line 307) | ARM64_REG_FAR_EL2 = 282
  constant ARM64_REG_FAR_EL3 (line 308) | ARM64_REG_FAR_EL3 = 283
  constant ARM64_REG_PAR_EL1 (line 309) | ARM64_REG_PAR_EL1 = 284
  constant ARM64_REG_MAIR_EL1 (line 310) | ARM64_REG_MAIR_EL1 = 285
  constant ARM64_REG_VBAR_EL0 (line 311) | ARM64_REG_VBAR_EL0 = 286
  constant ARM64_REG_VBAR_EL1 (line 312) | ARM64_REG_VBAR_EL1 = 287
  constant ARM64_REG_VBAR_EL2 (line 313) | ARM64_REG_VBAR_EL2 = 288
  constant ARM64_REG_VBAR_EL3 (line 314) | ARM64_REG_VBAR_EL3 = 289
  constant ARM64_REG_CP_REG (line 315) | ARM64_REG_CP_REG = 290
  constant ARM64_REG_FPCR (line 318) | ARM64_REG_FPCR = 291
  constant ARM64_REG_FPSR (line 319) | ARM64_REG_FPSR = 292
  constant ARM64_REG_ENDING (line 320) | ARM64_REG_ENDING = 293
  constant ARM64_REG_IP0 (line 323) | ARM64_REG_IP0 = 215
  constant ARM64_REG_IP1 (line 324) | ARM64_REG_IP1 = 216
  constant ARM64_REG_FP (line 325) | ARM64_REG_FP = 1
  constant ARM64_REG_LR (line 326) | ARM64_REG_LR = 2
  constant ARM64_INS_INVALID (line 330) | ARM64_INS_INVALID = 0
  constant ARM64_INS_MRS (line 331) | ARM64_INS_MRS = 1
  constant ARM64_INS_MSR (line 332) | ARM64_INS_MSR = 2
  constant ARM64_INS_SYS (line 333) | ARM64_INS_SYS = 3
  constant ARM64_INS_SYSL (line 334) | ARM64_INS_SYSL = 4
  constant ARM64_INS_ENDING (line 335) | ARM64_INS_ENDING = 5

FILE: bindings/go/unicorn/arm_const.go
  constant CPU_ARM_926 (line 7) | CPU_ARM_926 = 0
  constant CPU_ARM_946 (line 8) | CPU_ARM_946 = 1
  constant CPU_ARM_1026 (line 9) | CPU_ARM_1026 = 2
  constant CPU_ARM_1136_R2 (line 10) | CPU_ARM_1136_R2 = 3
  constant CPU_ARM_1136 (line 11) | CPU_ARM_1136 = 4
  constant CPU_ARM_1176 (line 12) | CPU_ARM_1176 = 5
  constant CPU_ARM_11MPCORE (line 13) | CPU_ARM_11MPCORE = 6
  constant CPU_ARM_CORTEX_M0 (line 14) | CPU_ARM_CORTEX_M0 = 7
  constant CPU_ARM_CORTEX_M3 (line 15) | CPU_ARM_CORTEX_M3 = 8
  constant CPU_ARM_CORTEX_M4 (line 16) | CPU_ARM_CORTEX_M4 = 9
  constant CPU_ARM_CORTEX_M7 (line 17) | CPU_ARM_CORTEX_M7 = 10
  constant CPU_ARM_CORTEX_M33 (line 18) | CPU_ARM_CORTEX_M33 = 11
  constant CPU_ARM_CORTEX_R5 (line 19) | CPU_ARM_CORTEX_R5 = 12
  constant CPU_ARM_CORTEX_R5F (line 20) | CPU_ARM_CORTEX_R5F = 13
  constant CPU_ARM_CORTEX_A7 (line 21) | CPU_ARM_CORTEX_A7 = 14
  constant CPU_ARM_CORTEX_A8 (line 22) | CPU_ARM_CORTEX_A8 = 15
  constant CPU_ARM_CORTEX_A9 (line 23) | CPU_ARM_CORTEX_A9 = 16
  constant CPU_ARM_CORTEX_A15 (line 24) | CPU_ARM_CORTEX_A15 = 17
  constant CPU_ARM_TI925T (line 25) | CPU_ARM_TI925T = 18
  constant CPU_ARM_SA1100 (line 26) | CPU_ARM_SA1100 = 19
  constant CPU_ARM_SA1110 (line 27) | CPU_ARM_SA1110 = 20
  constant CPU_ARM_PXA250 (line 28) | CPU_ARM_PXA250 = 21
  constant CPU_ARM_PXA255 (line 29) | CPU_ARM_PXA255 = 22
  constant CPU_ARM_PXA260 (line 30) | CPU_ARM_PXA260 = 23
  constant CPU_ARM_PXA261 (line 31) | CPU_ARM_PXA261 = 24
  constant CPU_ARM_PXA262 (line 32) | CPU_ARM_PXA262 = 25
  constant CPU_ARM_PXA270 (line 33) | CPU_ARM_PXA270 = 26
  constant CPU_ARM_PXA270A0 (line 34) | CPU_ARM_PXA270A0 = 27
  constant CPU_ARM_PXA270A1 (line 35) | CPU_ARM_PXA270A1 = 28
  constant CPU_ARM_PXA270B0 (line 36) | CPU_ARM_PXA270B0 = 29
  constant CPU_ARM_PXA270B1 (line 37) | CPU_ARM_PXA270B1 = 30
  constant CPU_ARM_PXA270C0 (line 38) | CPU_ARM_PXA270C0 = 31
  constant CPU_ARM_PXA270C5 (line 39) | CPU_ARM_PXA270C5 = 32
  constant CPU_ARM_MAX (line 40) | CPU_ARM_MAX = 33
  constant CPU_ARM_ENDING (line 41) | CPU_ARM_ENDING = 34
  constant ARM_REG_INVALID (line 45) | ARM_REG_INVALID = 0
  constant ARM_REG_APSR (line 46) | ARM_REG_APSR = 1
  constant ARM_REG_APSR_NZCV (line 47) | ARM_REG_APSR_NZCV = 2
  constant ARM_REG_CPSR (line 48) | ARM_REG_CPSR = 3
  constant ARM_REG_FPEXC (line 49) | ARM_REG_FPEXC = 4
  constant ARM_REG_FPINST (line 50) | ARM_REG_FPINST = 5
  constant ARM_REG_FPSCR (line 51) | ARM_REG_FPSCR = 6
  constant ARM_REG_FPSCR_NZCV (line 52) | ARM_REG_FPSCR_NZCV = 7
  constant ARM_REG_FPSID (line 53) | ARM_REG_FPSID = 8
  constant ARM_REG_ITSTATE (line 54) | ARM_REG_ITSTATE = 9
  constant ARM_REG_LR (line 55) | ARM_REG_LR = 10
  constant ARM_REG_PC (line 56) | ARM_REG_PC = 11
  constant ARM_REG_SP (line 57) | ARM_REG_SP = 12
  constant ARM_REG_SPSR (line 58) | ARM_REG_SPSR = 13
  constant ARM_REG_D0 (line 59) | ARM_REG_D0 = 14
  constant ARM_REG_D1 (line 60) | ARM_REG_D1 = 15
  constant ARM_REG_D2 (line 61) | ARM_REG_D2 = 16
  constant ARM_REG_D3 (line 62) | ARM_REG_D3 = 17
  constant ARM_REG_D4 (line 63) | ARM_REG_D4 = 18
  constant ARM_REG_D5 (line 64) | ARM_REG_D5 = 19
  constant ARM_REG_D6 (line 65) | ARM_REG_D6 = 20
  constant ARM_REG_D7 (line 66) | ARM_REG_D7 = 21
  constant ARM_REG_D8 (line 67) | ARM_REG_D8 = 22
  constant ARM_REG_D9 (line 68) | ARM_REG_D9 = 23
  constant ARM_REG_D10 (line 69) | ARM_REG_D10 = 24
  constant ARM_REG_D11 (line 70) | ARM_REG_D11 = 25
  constant ARM_REG_D12 (line 71) | ARM_REG_D12 = 26
  constant ARM_REG_D13 (line 72) | ARM_REG_D13 = 27
  constant ARM_REG_D14 (line 73) | ARM_REG_D14 = 28
  constant ARM_REG_D15 (line 74) | ARM_REG_D15 = 29
  constant ARM_REG_D16 (line 75) | ARM_REG_D16 = 30
  constant ARM_REG_D17 (line 76) | ARM_REG_D17 = 31
  constant ARM_REG_D18 (line 77) | ARM_REG_D18 = 32
  constant ARM_REG_D19 (line 78) | ARM_REG_D19 = 33
  constant ARM_REG_D20 (line 79) | ARM_REG_D20 = 34
  constant ARM_REG_D21 (line 80) | ARM_REG_D21 = 35
  constant ARM_REG_D22 (line 81) | ARM_REG_D22 = 36
  constant ARM_REG_D23 (line 82) | ARM_REG_D23 = 37
  constant ARM_REG_D24 (line 83) | ARM_REG_D24 = 38
  constant ARM_REG_D25 (line 84) | ARM_REG_D25 = 39
  constant ARM_REG_D26 (line 85) | ARM_REG_D26 = 40
  constant ARM_REG_D27 (line 86) | ARM_REG_D27 = 41
  constant ARM_REG_D28 (line 87) | ARM_REG_D28 = 42
  constant ARM_REG_D29 (line 88) | ARM_REG_D29 = 43
  constant ARM_REG_D30 (line 89) | ARM_REG_D30 = 44
  constant ARM_REG_D31 (line 90) | ARM_REG_D31 = 45
  constant ARM_REG_FPINST2 (line 91) | ARM_REG_FPINST2 = 46
  constant ARM_REG_MVFR0 (line 92) | ARM_REG_MVFR0 = 47
  constant ARM_REG_MVFR1 (line 93) | ARM_REG_MVFR1 = 48
  constant ARM_REG_MVFR2 (line 94) | ARM_REG_MVFR2 = 49
  constant ARM_REG_Q0 (line 95) | ARM_REG_Q0 = 50
  constant ARM_REG_Q1 (line 96) | ARM_REG_Q1 = 51
  constant ARM_REG_Q2 (line 97) | ARM_REG_Q2 = 52
  constant ARM_REG_Q3 (line 98) | ARM_REG_Q3 = 53
  constant ARM_REG_Q4 (line 99) | ARM_REG_Q4 = 54
  constant ARM_REG_Q5 (line 100) | ARM_REG_Q5 = 55
  constant ARM_REG_Q6 (line 101) | ARM_REG_Q6 = 56
  constant ARM_REG_Q7 (line 102) | ARM_REG_Q7 = 57
  constant ARM_REG_Q8 (line 103) | ARM_REG_Q8 = 58
  constant ARM_REG_Q9 (line 104) | ARM_REG_Q9 = 59
  constant ARM_REG_Q10 (line 105) | ARM_REG_Q10 = 60
  constant ARM_REG_Q11 (line 106) | ARM_REG_Q11 = 61
  constant ARM_REG_Q12 (line 107) | ARM_REG_Q12 = 62
  constant ARM_REG_Q13 (line 108) | ARM_REG_Q13 = 63
  constant ARM_REG_Q14 (line 109) | ARM_REG_Q14 = 64
  constant ARM_REG_Q15 (line 110) | ARM_REG_Q15 = 65
  constant ARM_REG_R0 (line 111) | ARM_REG_R0 = 66
  constant ARM_REG_R1 (line 112) | ARM_REG_R1 = 67
  constant ARM_REG_R2 (line 113) | ARM_REG_R2 = 68
  constant ARM_REG_R3 (line 114) | ARM_REG_R3 = 69
  constant ARM_REG_R4 (line 115) | ARM_REG_R4 = 70
  constant ARM_REG_R5 (line 116) | ARM_REG_R5 = 71
  constant ARM_REG_R6 (line 117) | ARM_REG_R6 = 72
  constant ARM_REG_R7 (line 118) | ARM_REG_R7 = 73
  constant ARM_REG_R8 (line 119) | ARM_REG_R8 = 74
  constant ARM_REG_R9 (line 120) | ARM_REG_R9 = 75
  constant ARM_REG_R10 (line 121) | ARM_REG_R10 = 76
  constant ARM_REG_R11 (line 122) | ARM_REG_R11 = 77
  constant ARM_REG_R12 (line 123) | ARM_REG_R12 = 78
  constant ARM_REG_S0 (line 124) | ARM_REG_S0 = 79
  constant ARM_REG_S1 (line 125) | ARM_REG_S1 = 80
  constant ARM_REG_S2 (line 126) | ARM_REG_S2 = 81
  constant ARM_REG_S3 (line 127) | ARM_REG_S3 = 82
  constant ARM_REG_S4 (line 128) | ARM_REG_S4 = 83
  constant ARM_REG_S5 (line 129) | ARM_REG_S5 = 84
  constant ARM_REG_S6 (line 130) | ARM_REG_S6 = 85
  constant ARM_REG_S7 (line 131) | ARM_REG_S7 = 86
  constant ARM_REG_S8 (line 132) | ARM_REG_S8 = 87
  constant ARM_REG_S9 (line 133) | ARM_REG_S9 = 88
  constant ARM_REG_S10 (line 134) | ARM_REG_S10 = 89
  constant ARM_REG_S11 (line 135) | ARM_REG_S11 = 90
  constant ARM_REG_S12 (line 136) | ARM_REG_S12 = 91
  constant ARM_REG_S13 (line 137) | ARM_REG_S13 = 92
  constant ARM_REG_S14 (line 138) | ARM_REG_S14 = 93
  constant ARM_REG_S15 (line 139) | ARM_REG_S15 = 94
  constant ARM_REG_S16 (line 140) | ARM_REG_S16 = 95
  constant ARM_REG_S17 (line 141) | ARM_REG_S17 = 96
  constant ARM_REG_S18 (line 142) | ARM_REG_S18 = 97
  constant ARM_REG_S19 (line 143) | ARM_REG_S19 = 98
  constant ARM_REG_S20 (line 144) | ARM_REG_S20 = 99
  constant ARM_REG_S21 (line 145) | ARM_REG_S21 = 100
  constant ARM_REG_S22 (line 146) | ARM_REG_S22 = 101
  constant ARM_REG_S23 (line 147) | ARM_REG_S23 = 102
  constant ARM_REG_S24 (line 148) | ARM_REG_S24 = 103
  constant ARM_REG_S25 (line 149) | ARM_REG_S25 = 104
  constant ARM_REG_S26 (line 150) | ARM_REG_S26 = 105
  constant ARM_REG_S27 (line 151) | ARM_REG_S27 = 106
  constant ARM_REG_S28 (line 152) | ARM_REG_S28 = 107
  constant ARM_REG_S29 (line 153) | ARM_REG_S29 = 108
  constant ARM_REG_S30 (line 154) | ARM_REG_S30 = 109
  constant ARM_REG_S31 (line 155) | ARM_REG_S31 = 110
  constant ARM_REG_C1_C0_2 (line 156) | ARM_REG_C1_C0_2 = 111
  constant ARM_REG_C13_C0_2 (line 157) | ARM_REG_C13_C0_2 = 112
  constant ARM_REG_C13_C0_3 (line 158) | ARM_REG_C13_C0_3 = 113
  constant ARM_REG_IPSR (line 159) | ARM_REG_IPSR = 114
  constant ARM_REG_MSP (line 160) | ARM_REG_MSP = 115
  constant ARM_REG_PSP (line 161) | ARM_REG_PSP = 116
  constant ARM_REG_CONTROL (line 162) | ARM_REG_CONTROL = 117
  constant ARM_REG_IAPSR (line 163) | ARM_REG_IAPSR = 118
  constant ARM_REG_EAPSR (line 164) | ARM_REG_EAPSR = 119
  constant ARM_REG_XPSR (line 165) | ARM_REG_XPSR = 120
  constant ARM_REG_EPSR (line 166) | ARM_REG_EPSR = 121
  constant ARM_REG_IEPSR (line 167) | ARM_REG_IEPSR = 122
  constant ARM_REG_PRIMASK (line 168) | ARM_REG_PRIMASK = 123
  constant ARM_REG_BASEPRI (line 169) | ARM_REG_BASEPRI = 124
  constant ARM_REG_BASEPRI_MAX (line 170) | ARM_REG_BASEPRI_MAX = 125
  constant ARM_REG_FAULTMASK (line 171) | ARM_REG_FAULTMASK = 126
  constant ARM_REG_APSR_NZCVQ (line 172) | ARM_REG_APSR_NZCVQ = 127
  constant ARM_REG_APSR_G (line 173) | ARM_REG_APSR_G = 128
  constant ARM_REG_APSR_NZCVQG (line 174) | ARM_REG_APSR_NZCVQG = 129
  constant ARM_REG_IAPSR_NZCVQ (line 175) | ARM_REG_IAPSR_NZCVQ = 130
  constant ARM_REG_IAPSR_G (line 176) | ARM_REG_IAPSR_G = 131
  constant ARM_REG_IAPSR_NZCVQG (line 177) | ARM_REG_IAPSR_NZCVQG = 132
  constant ARM_REG_EAPSR_NZCVQ (line 178) | ARM_REG_EAPSR_NZCVQ = 133
  constant ARM_REG_EAPSR_G (line 179) | ARM_REG_EAPSR_G = 134
  constant ARM_REG_EAPSR_NZCVQG (line 180) | ARM_REG_EAPSR_NZCVQG = 135
  constant ARM_REG_XPSR_NZCVQ (line 181) | ARM_REG_XPSR_NZCVQ = 136
  constant ARM_REG_XPSR_G (line 182) | ARM_REG_XPSR_G = 137
  constant ARM_REG_XPSR_NZCVQG (line 183) | ARM_REG_XPSR_NZCVQG = 138
  constant ARM_REG_CP_REG (line 184) | ARM_REG_CP_REG = 139
  constant ARM_REG_ESR (line 185) | ARM_REG_ESR = 140
  constant ARM_REG_ENDING (line 186) | ARM_REG_ENDING = 141
  constant ARM_REG_R13 (line 189) | ARM_REG_R13 = 12
  constant ARM_REG_R14 (line 190) | ARM_REG_R14 = 10
  constant ARM_REG_R15 (line 191) | ARM_REG_R15 = 11
  constant ARM_REG_SB (line 192) | ARM_REG_SB = 75
  constant ARM_REG_SL (line 193) | ARM_REG_SL = 76
  constant ARM_REG_FP (line 194) | ARM_REG_FP = 77
  constant ARM_REG_IP (line 195) | ARM_REG_IP = 78

FILE: bindings/go/unicorn/context.go
  type Context (line 11) | type Context
  method ContextSave (line 13) | func (u *uc) ContextSave(reuse Context) (Context, error) {
  method ContextRestore (line 27) | func (u *uc) ContextRestore(ctx Context) error {

FILE: bindings/go/unicorn/context_test.go
  function TestContext (line 7) | func TestContext(t *testing.T) {

FILE: bindings/go/unicorn/hook.c
  function uc_err (line 8) | uc_err uc_hook_add_wrap(uc_engine *handle, uc_hook *h2, uc_hook_type typ...
  function uc_err (line 12) | uc_err uc_hook_add_insn(uc_engine *handle, uc_hook *h2, uc_hook_type typ...
  function hookCode_cgo (line 16) | void hookCode_cgo(uc_engine *handle, uint64_t addr, uint32_t size, uintp...
  function hookMemInvalid_cgo (line 20) | bool hookMemInvalid_cgo(uc_engine *handle, uc_mem_type type, uint64_t ad...
  function hookMemAccess_cgo (line 24) | void hookMemAccess_cgo(uc_engine *handle, uc_mem_type type, uint64_t add...
  function hookInterrupt_cgo (line 28) | void hookInterrupt_cgo(uc_engine *handle, uint32_t intno, uintptr_t user) {
  function hookX86In_cgo (line 32) | uint32_t hookX86In_cgo(uc_engine *handle, uint32_t port, uint32_t size, ...
  function hookX86Out_cgo (line 36) | void hookX86Out_cgo(uc_engine *handle, uint32_t port, uint32_t size, uin...
  function hookX86Syscall_cgo (line 40) | void hookX86Syscall_cgo(uc_engine *handle, uintptr_t user) {
  function hookX86Cpuid_cgo (line 44) | int hookX86Cpuid_cgo(uc_engine *handle, uintptr_t user) {

FILE: bindings/go/unicorn/hook.go
  type HookData (line 15) | type HookData struct
  type Hook (line 20) | type Hook
  type fastHookMap (line 22) | type fastHookMap struct
    method insert (line 27) | func (m *fastHookMap) insert(h *HookData) uintptr {
    method get (line 43) | func (m *fastHookMap) get(i unsafe.Pointer) *HookData {
    method remove (line 51) | func (m *fastHookMap) remove(i uintptr) {
  function hookCode (line 60) | func hookCode(handle unsafe.Pointer, addr uint64, size uint32, user unsa...
  function hookMemInvalid (line 66) | func hookMemInvalid(handle unsafe.Pointer, typ C.uc_mem_type, addr uint6...
  function hookMemAccess (line 72) | func hookMemAccess(handle unsafe.Pointer, typ C.uc_mem_type, addr uint64...
  function hookInterrupt (line 78) | func hookInterrupt(handle unsafe.Pointer, intno uint32, user unsafe.Poin...
  function hookX86In (line 84) | func hookX86In(handle unsafe.Pointer, port, size uint32, user unsafe.Poi...
  function hookX86Out (line 90) | func hookX86Out(handle unsafe.Pointer, port, size, value uint32, user un...
  function hookX86Syscall (line 96) | func hookX86Syscall(handle unsafe.Pointer, user unsafe.Pointer) {
  function hookX86Cpuid (line 102) | func hookX86Cpuid(handle unsafe.Pointer, user unsafe.Pointer) bool {
  method HookAdd (line 107) | func (u *uc) HookAdd(htype int, cb interface{}, begin, end uint64, extra...
  method HookDel (line 155) | func (u *uc) HookDel(hook Hook) error {

FILE: bindings/go/unicorn/m68k_const.go
  constant CPU_M68K_M5206 (line 7) | CPU_M68K_M5206 = 0
  constant CPU_M68K_M68000 (line 8) | CPU_M68K_M68000 = 1
  constant CPU_M68K_M68020 (line 9) | CPU_M68K_M68020 = 2
  constant CPU_M68K_M68030 (line 10) | CPU_M68K_M68030 = 3
  constant CPU_M68K_M68040 (line 11) | CPU_M68K_M68040 = 4
  constant CPU_M68K_M68060 (line 12) | CPU_M68K_M68060 = 5
  constant CPU_M68K_M5208 (line 13) | CPU_M68K_M5208 = 6
  constant CPU_M68K_CFV4E (line 14) | CPU_M68K_CFV4E = 7
  constant CPU_M68K_ANY (line 15) | CPU_M68K_ANY = 8
  constant CPU_M68K_ENDING (line 16) | CPU_M68K_ENDING = 9
  constant M68K_REG_INVALID (line 20) | M68K_REG_INVALID = 0
  constant M68K_REG_A0 (line 21) | M68K_REG_A0 = 1
  constant M68K_REG_A1 (line 22) | M68K_REG_A1 = 2
  constant M68K_REG_A2 (line 23) | M68K_REG_A2 = 3
  constant M68K_REG_A3 (line 24) | M68K_REG_A3 = 4
  constant M68K_REG_A4 (line 25) | M68K_REG_A4 = 5
  constant M68K_REG_A5 (line 26) | M68K_REG_A5 = 6
  constant M68K_REG_A6 (line 27) | M68K_REG_A6 = 7
  constant M68K_REG_A7 (line 28) | M68K_REG_A7 = 8
  constant M68K_REG_D0 (line 29) | M68K_REG_D0 = 9
  constant M68K_REG_D1 (line 30) | M68K_REG_D1 = 10
  constant M68K_REG_D2 (line 31) | M68K_REG_D2 = 11
  constant M68K_REG_D3 (line 32) | M68K_REG_D3 = 12
  constant M68K_REG_D4 (line 33) | M68K_REG_D4 = 13
  constant M68K_REG_D5 (line 34) | M68K_REG_D5 = 14
  constant M68K_REG_D6 (line 35) | M68K_REG_D6 = 15
  constant M68K_REG_D7 (line 36) | M68K_REG_D7 = 16
  constant M68K_REG_SR (line 37) | M68K_REG_SR = 17
  constant M68K_REG_PC (line 38) | M68K_REG_PC = 18
  constant M68K_REG_CR_SFC (line 39) | M68K_REG_CR_SFC = 19
  constant M68K_REG_CR_DFC (line 40) | M68K_REG_CR_DFC = 20
  constant M68K_REG_CR_VBR (line 41) | M68K_REG_CR_VBR = 21
  constant M68K_REG_CR_CACR (line 42) | M68K_REG_CR_CACR = 22
  constant M68K_REG_CR_TC (line 43) | M68K_REG_CR_TC = 23
  constant M68K_REG_CR_MMUSR (line 44) | M68K_REG_CR_MMUSR = 24
  constant M68K_REG_CR_SRP (line 45) | M68K_REG_CR_SRP = 25
  constant M68K_REG_CR_USP (line 46) | M68K_REG_CR_USP = 26
  constant M68K_REG_CR_MSP (line 47) | M68K_REG_CR_MSP = 27
  constant M68K_REG_CR_ISP (line 48) | M68K_REG_CR_ISP = 28
  constant M68K_REG_CR_URP (line 49) | M68K_REG_CR_URP = 29
  constant M68K_REG_CR_ITT0 (line 50) | M68K_REG_CR_ITT0 = 30
  constant M68K_REG_CR_ITT1 (line 51) | M68K_REG_CR_ITT1 = 31
  constant M68K_REG_CR_DTT0 (line 52) | M68K_REG_CR_DTT0 = 32
  constant M68K_REG_CR_DTT1 (line 53) | M68K_REG_CR_DTT1 = 33
  constant M68K_REG_ENDING (line 54) | M68K_REG_ENDING = 34

FILE: bindings/go/unicorn/mips_const.go
  constant CPU_MIPS32_4KC (line 7) | CPU_MIPS32_4KC = 0
  constant CPU_MIPS32_4KM (line 8) | CPU_MIPS32_4KM = 1
  constant CPU_MIPS32_4KECR1 (line 9) | CPU_MIPS32_4KECR1 = 2
  constant CPU_MIPS32_4KEMR1 (line 10) | CPU_MIPS32_4KEMR1 = 3
  constant CPU_MIPS32_4KEC (line 11) | CPU_MIPS32_4KEC = 4
  constant CPU_MIPS32_4KEM (line 12) | CPU_MIPS32_4KEM = 5
  constant CPU_MIPS32_24KC (line 13) | CPU_MIPS32_24KC = 6
  constant CPU_MIPS32_24KEC (line 14) | CPU_MIPS32_24KEC = 7
  constant CPU_MIPS32_24KF (line 15) | CPU_MIPS32_24KF = 8
  constant CPU_MIPS32_34KF (line 16) | CPU_MIPS32_34KF = 9
  constant CPU_MIPS32_74KF (line 17) | CPU_MIPS32_74KF = 10
  constant CPU_MIPS32_M14K (line 18) | CPU_MIPS32_M14K = 11
  constant CPU_MIPS32_M14KC (line 19) | CPU_MIPS32_M14KC = 12
  constant CPU_MIPS32_P5600 (line 20) | CPU_MIPS32_P5600 = 13
  constant CPU_MIPS32_MIPS32R6_GENERIC (line 21) | CPU_MIPS32_MIPS32R6_GENERIC = 14
  constant CPU_MIPS32_I7200 (line 22) | CPU_MIPS32_I7200 = 15
  constant CPU_MIPS32_ENDING (line 23) | CPU_MIPS32_ENDING = 16
  constant CPU_MIPS64_R4000 (line 27) | CPU_MIPS64_R4000 = 0
  constant CPU_MIPS64_VR5432 (line 28) | CPU_MIPS64_VR5432 = 1
  constant CPU_MIPS64_5KC (line 29) | CPU_MIPS64_5KC = 2
  constant CPU_MIPS64_5KF (line 30) | CPU_MIPS64_5KF = 3
  constant CPU_MIPS64_20KC (line 31) | CPU_MIPS64_20KC = 4
  constant CPU_MIPS64_MIPS64R2_GENERIC (line 32) | CPU_MIPS64_MIPS64R2_GENERIC = 5
  constant CPU_MIPS64_5KEC (line 33) | CPU_MIPS64_5KEC = 6
  constant CPU_MIPS64_5KEF (line 34) | CPU_MIPS64_5KEF = 7
  constant CPU_MIPS64_I6400 (line 35) | CPU_MIPS64_I6400 = 8
  constant CPU_MIPS64_I6500 (line 36) | CPU_MIPS64_I6500 = 9
  constant CPU_MIPS64_LOONGSON_2E (line 37) | CPU_MIPS64_LOONGSON_2E = 10
  constant CPU_MIPS64_LOONGSON_2F (line 38) | CPU_MIPS64_LOONGSON_2F = 11
  constant CPU_MIPS64_MIPS64DSPR2 (line 39) | CPU_MIPS64_MIPS64DSPR2 = 12
  constant CPU_MIPS64_ENDING (line 40) | CPU_MIPS64_ENDING = 13
  constant MIPS_REG_INVALID (line 44) | MIPS_REG_INVALID = 0
  constant MIPS_REG_PC (line 47) | MIPS_REG_PC = 1
  constant MIPS_REG_0 (line 48) | MIPS_REG_0 = 2
  constant MIPS_REG_1 (line 49) | MIPS_REG_1 = 3
  constant MIPS_REG_2 (line 50) | MIPS_REG_2 = 4
  constant MIPS_REG_3 (line 51) | MIPS_REG_3 = 5
  constant MIPS_REG_4 (line 52) | MIPS_REG_4 = 6
  constant MIPS_REG_5 (line 53) | MIPS_REG_5 = 7
  constant MIPS_REG_6 (line 54) | MIPS_REG_6 = 8
  constant MIPS_REG_7 (line 55) | MIPS_REG_7 = 9
  constant MIPS_REG_8 (line 56) | MIPS_REG_8 = 10
  constant MIPS_REG_9 (line 57) | MIPS_REG_9 = 11
  constant MIPS_REG_10 (line 58) | MIPS_REG_10 = 12
  constant MIPS_REG_11 (line 59) | MIPS_REG_11 = 13
  constant MIPS_REG_12 (line 60) | MIPS_REG_12 = 14
  constant MIPS_REG_13 (line 61) | MIPS_REG_13 = 15
  constant MIPS_REG_14 (line 62) | MIPS_REG_14 = 16
  constant MIPS_REG_15 (line 63) | MIPS_REG_15 = 17
  constant MIPS_REG_16 (line 64) | MIPS_REG_16 = 18
  constant MIPS_REG_17 (line 65) | MIPS_REG_17 = 19
  constant MIPS_REG_18 (line 66) | MIPS_REG_18 = 20
  constant MIPS_REG_19 (line 67) | MIPS_REG_19 = 21
  constant MIPS_REG_20 (line 68) | MIPS_REG_20 = 22
  constant MIPS_REG_21 (line 69) | MIPS_REG_21 = 23
  constant MIPS_REG_22 (line 70) | MIPS_REG_22 = 24
  constant MIPS_REG_23 (line 71) | MIPS_REG_23 = 25
  constant MIPS_REG_24 (line 72) | MIPS_REG_24 = 26
  constant MIPS_REG_25 (line 73) | MIPS_REG_25 = 27
  constant MIPS_REG_26 (line 74) | MIPS_REG_26 = 28
  constant MIPS_REG_27 (line 75) | MIPS_REG_27 = 29
  constant MIPS_REG_28 (line 76) | MIPS_REG_28 = 30
  constant MIPS_REG_29 (line 77) | MIPS_REG_29 = 31
  constant MIPS_REG_30 (line 78) | MIPS_REG_30 = 32
  constant MIPS_REG_31 (line 79) | MIPS_REG_31 = 33
  constant MIPS_REG_DSPCCOND (line 82) | MIPS_REG_DSPCCOND = 34
  constant MIPS_REG_DSPCARRY (line 83) | MIPS_REG_DSPCARRY = 35
  constant MIPS_REG_DSPEFI (line 84) | MIPS_REG_DSPEFI = 36
  constant MIPS_REG_DSPOUTFLAG (line 85) | MIPS_REG_DSPOUTFLAG = 37
  constant MIPS_REG_DSPOUTFLAG16_19 (line 86) | MIPS_REG_DSPOUTFLAG16_19 = 38
  constant MIPS_REG_DSPOUTFLAG20 (line 87) | MIPS_REG_DSPOUTFLAG20 = 39
  constant MIPS_REG_DSPOUTFLAG21 (line 88) | MIPS_REG_DSPOUTFLAG21 = 40
  constant MIPS_REG_DSPOUTFLAG22 (line 89) | MIPS_REG_DSPOUTFLAG22 = 41
  constant MIPS_REG_DSPOUTFLAG23 (line 90) | MIPS_REG_DSPOUTFLAG23 = 42
  constant MIPS_REG_DSPPOS (line 91) | MIPS_REG_DSPPOS = 43
  constant MIPS_REG_DSPSCOUNT (line 92) | MIPS_REG_DSPSCOUNT = 44
  constant MIPS_REG_AC0 (line 95) | MIPS_REG_AC0 = 45
  constant MIPS_REG_AC1 (line 96) | MIPS_REG_AC1 = 46
  constant MIPS_REG_AC2 (line 97) | MIPS_REG_AC2 = 47
  constant MIPS_REG_AC3 (line 98) | MIPS_REG_AC3 = 48
  constant MIPS_REG_CC0 (line 101) | MIPS_REG_CC0 = 49
  constant MIPS_REG_CC1 (line 102) | MIPS_REG_CC1 = 50
  constant MIPS_REG_CC2 (line 103) | MIPS_REG_CC2 = 51
  constant MIPS_REG_CC3 (line 104) | MIPS_REG_CC3 = 52
  constant MIPS_REG_CC4 (line 105) | MIPS_REG_CC4 = 53
  constant MIPS_REG_CC5 (line 106) | MIPS_REG_CC5 = 54
  constant MIPS_REG_CC6 (line 107) | MIPS_REG_CC6 = 55
  constant MIPS_REG_CC7 (line 108) | MIPS_REG_CC7 = 56
  constant MIPS_REG_F0 (line 111) | MIPS_REG_F0 = 57
  constant MIPS_REG_F1 (line 112) | MIPS_REG_F1 = 58
  constant MIPS_REG_F2 (line 113) | MIPS_REG_F2 = 59
  constant MIPS_REG_F3 (line 114) | MIPS_REG_F3 = 60
  constant MIPS_REG_F4 (line 115) | MIPS_REG_F4 = 61
  constant MIPS_REG_F5 (line 116) | MIPS_REG_F5 = 62
  constant MIPS_REG_F6 (line 117) | MIPS_REG_F6 = 63
  constant MIPS_REG_F7 (line 118) | MIPS_REG_F7 = 64
  constant MIPS_REG_F8 (line 119) | MIPS_REG_F8 = 65
  constant MIPS_REG_F9 (line 120) | MIPS_REG_F9 = 66
  constant MIPS_REG_F10 (line 121) | MIPS_REG_F10 = 67
  constant MIPS_REG_F11 (line 122) | MIPS_REG_F11 = 68
  constant MIPS_REG_F12 (line 123) | MIPS_REG_F12 = 69
  constant MIPS_REG_F13 (line 124) | MIPS_REG_F13 = 70
  constant MIPS_REG_F14 (line 125) | MIPS_REG_F14 = 71
  constant MIPS_REG_F15 (line 126) | MIPS_REG_F15 = 72
  constant MIPS_REG_F16 (line 127) | MIPS_REG_F16 = 73
  constant MIPS_REG_F17 (line 128) | MIPS_REG_F17 = 74
  constant MIPS_REG_F18 (line 129) | MIPS_REG_F18 = 75
  constant MIPS_REG_F19 (line 130) | MIPS_REG_F19 = 76
  constant MIPS_REG_F20 (line 131) | MIPS_REG_F20 = 77
  constant MIPS_REG_F21 (line 132) | MIPS_REG_F21 = 78
  constant MIPS_REG_F22 (line 133) | MIPS_REG_F22 = 79
  constant MIPS_REG_F23 (line 134) | MIPS_REG_F23 = 80
  constant MIPS_REG_F24 (line 135) | MIPS_REG_F24 = 81
  constant MIPS_REG_F25 (line 136) | MIPS_REG_F25 = 82
  constant MIPS_REG_F26 (line 137) | MIPS_REG_F26 = 83
  constant MIPS_REG_F27 (line 138) | MIPS_REG_F27 = 84
  constant MIPS_REG_F28 (line 139) | MIPS_REG_F28 = 85
  constant MIPS_REG_F29 (line 140) | MIPS_REG_F29 = 86
  constant MIPS_REG_F30 (line 141) | MIPS_REG_F30 = 87
  constant MIPS_REG_F31 (line 142) | MIPS_REG_F31 = 88
  constant MIPS_REG_FCC0 (line 143) | MIPS_REG_FCC0 = 89
  constant MIPS_REG_FCC1 (line 144) | MIPS_REG_FCC1 = 90
  constant MIPS_REG_FCC2 (line 145) | MIPS_REG_FCC2 = 91
  constant MIPS_REG_FCC3 (line 146) | MIPS_REG_FCC3 = 92
  constant MIPS_REG_FCC4 (line 147) | MIPS_REG_FCC4 = 93
  constant MIPS_REG_FCC5 (line 148) | MIPS_REG_FCC5 = 94
  constant MIPS_REG_FCC6 (line 149) | MIPS_REG_FCC6 = 95
  constant MIPS_REG_FCC7 (line 150) | MIPS_REG_FCC7 = 96
  constant MIPS_REG_W0 (line 153) | MIPS_REG_W0 = 97
  constant MIPS_REG_W1 (line 154) | MIPS_REG_W1 = 98
  constant MIPS_REG_W2 (line 155) | MIPS_REG_W2 = 99
  constant MIPS_REG_W3 (line 156) | MIPS_REG_W3 = 100
  constant MIPS_REG_W4 (line 157) | MIPS_REG_W4 = 101
  constant MIPS_REG_W5 (line 158) | MIPS_REG_W5 = 102
  constant MIPS_REG_W6 (line 159) | MIPS_REG_W6 = 103
  constant MIPS_REG_W7 (line 160) | MIPS_REG_W7 = 104
  constant MIPS_REG_W8 (line 161) | MIPS_REG_W8 = 105
  constant MIPS_REG_W9 (line 162) | MIPS_REG_W9 = 106
  constant MIPS_REG_W10 (line 163) | MIPS_REG_W10 = 107
  constant MIPS_REG_W11 (line 164) | MIPS_REG_W11 = 108
  constant MIPS_REG_W12 (line 165) | MIPS_REG_W12 = 109
  constant MIPS_REG_W13 (line 166) | MIPS_REG_W13 = 110
  constant MIPS_REG_W14 (line 167) | MIPS_REG_W14 = 111
  constant MIPS_REG_W15 (line 168) | MIPS_REG_W15 = 112
  constant MIPS_REG_W16 (line 169) | MIPS_REG_W16 = 113
  constant MIPS_REG_W17 (line 170) | MIPS_REG_W17 = 114
  constant MIPS_REG_W18 (line 171) | MIPS_REG_W18 = 115
  constant MIPS_REG_W19 (line 172) | MIPS_REG_W19 = 116
  constant MIPS_REG_W20 (line 173) | MIPS_REG_W20 = 117
  constant MIPS_REG_W21 (line 174) | MIPS_REG_W21 = 118
  constant MIPS_REG_W22 (line 175) | MIPS_REG_W22 = 119
  constant MIPS_REG_W23 (line 176) | MIPS_REG_W23 = 120
  constant MIPS_REG_W24 (line 177) | MIPS_REG_W24 = 121
  constant MIPS_REG_W25 (line 178) | MIPS_REG_W25 = 122
  constant MIPS_REG_W26 (line 179) | MIPS_REG_W26 = 123
  constant MIPS_REG_W27 (line 180) | MIPS_REG_W27 = 124
  constant MIPS_REG_W28 (line 181) | MIPS_REG_W28 = 125
  constant MIPS_REG_W29 (line 182) | MIPS_REG_W29 = 126
  constant MIPS_REG_W30 (line 183) | MIPS_REG_W30 = 127
  constant MIPS_REG_W31 (line 184) | MIPS_REG_W31 = 128
  constant MIPS_REG_HI (line 185) | MIPS_REG_HI = 129
  constant MIPS_REG_LO (line 186) | MIPS_REG_LO = 130
  constant MIPS_REG_P0 (line 187) | MIPS_REG_P0 = 131
  constant MIPS_REG_P1 (line 188) | MIPS_REG_P1 = 132
  constant MIPS_REG_P2 (line 189) | MIPS_REG_P2 = 133
  constant MIPS_REG_MPL0 (line 190) | MIPS_REG_MPL0 = 134
  constant MIPS_REG_MPL1 (line 191) | MIPS_REG_MPL1 = 135
  constant MIPS_REG_MPL2 (line 192) | MIPS_REG_MPL2 = 136
  constant MIPS_REG_CP0_CONFIG3 (line 193) | MIPS_REG_CP0_CONFIG3 = 137
  constant MIPS_REG_CP0_USERLOCAL (line 194) | MIPS_REG_CP0_USERLOCAL = 138
  constant MIPS_REG_CP0_STATUS (line 195) | MIPS_REG_CP0_STATUS = 139
  constant MIPS_REG_FIR (line 196) | MIPS_REG_FIR = 140
  constant MIPS_REG_FCSR (line 197) | MIPS_REG_FCSR = 141
  constant MIPS_REG_ENDING (line 198) | MIPS_REG_ENDING = 142
  constant MIPS_REG_ZERO (line 199) | MIPS_REG_ZERO = 2
  constant MIPS_REG_AT (line 200) | MIPS_REG_AT = 3
  constant MIPS_REG_V0 (line 201) | MIPS_REG_V0 = 4
  constant MIPS_REG_V1 (line 202) | MIPS_REG_V1 = 5
  constant MIPS_REG_A0 (line 203) | MIPS_REG_A0 = 6
  constant MIPS_REG_A1 (line 204) | MIPS_REG_A1 = 7
  constant MIPS_REG_A2 (line 205) | MIPS_REG_A2 = 8
  constant MIPS_REG_A3 (line 206) | MIPS_REG_A3 = 9
  constant MIPS_REG_T0 (line 207) | MIPS_REG_T0 = 10
  constant MIPS_REG_T1 (line 208) | MIPS_REG_T1 = 11
  constant MIPS_REG_T2 (line 209) | MIPS_REG_T2 = 12
  constant MIPS_REG_T3 (line 210) | MIPS_REG_T3 = 13
  constant MIPS_REG_T4 (line 211) | MIPS_REG_T4 = 14
  constant MIPS_REG_T5 (line 212) | MIPS_REG_T5 = 15
  constant MIPS_REG_T6 (line 213) | MIPS_REG_T6 = 16
  constant MIPS_REG_T7 (line 214) | MIPS_REG_T7 = 17
  constant MIPS_REG_S0 (line 215) | MIPS_REG_S0 = 18
  constant MIPS_REG_S1 (line 216) | MIPS_REG_S1 = 19
  constant MIPS_REG_S2 (line 217) | MIPS_REG_S2 = 20
  constant MIPS_REG_S3 (line 218) | MIPS_REG_S3 = 21
  constant MIPS_REG_S4 (line 219) | MIPS_REG_S4 = 22
  constant MIPS_REG_S5 (line 220) | MIPS_REG_S5 = 23
  constant MIPS_REG_S6 (line 221) | MIPS_REG_S6 = 24
  constant MIPS_REG_S7 (line 222) | MIPS_REG_S7 = 25
  constant MIPS_REG_T8 (line 223) | MIPS_REG_T8 = 26
  constant MIPS_REG_T9 (line 224) | MIPS_REG_T9 = 27
  constant MIPS_REG_K0 (line 225) | MIPS_REG_K0 = 28
  constant MIPS_REG_K1 (line 226) | MIPS_REG_K1 = 29
  constant MIPS_REG_GP (line 227) | MIPS_REG_GP = 30
  constant MIPS_REG_SP (line 228) | MIPS_REG_SP = 31
  constant MIPS_REG_FP (line 229) | MIPS_REG_FP = 32
  constant MIPS_REG_S8 (line 230) | MIPS_REG_S8 = 32
  constant MIPS_REG_RA (line 231) | MIPS_REG_RA = 33
  constant MIPS_REG_HI0 (line 232) | MIPS_REG_HI0 = 45
  constant MIPS_REG_HI1 (line 233) | MIPS_REG_HI1 = 46
  constant MIPS_REG_HI2 (line 234) | MIPS_REG_HI2 = 47
  constant MIPS_REG_HI3 (line 235) | MIPS_REG_HI3 = 48
  constant MIPS_REG_LO0 (line 236) | MIPS_REG_LO0 = 45
  constant MIPS_REG_LO1 (line 237) | MIPS_REG_LO1 = 46
  constant MIPS_REG_LO2 (line 238) | MIPS_REG_LO2 = 47
  constant MIPS_REG_LO3 (line 239) | MIPS_REG_LO3 = 48

FILE: bindings/go/unicorn/ppc_const.go
  constant CPU_PPC32_401 (line 7) | CPU_PPC32_401 = 0
  constant CPU_PPC32_401A1 (line 8) | CPU_PPC32_401A1 = 1
  constant CPU_PPC32_401B2 (line 9) | CPU_PPC32_401B2 = 2
  constant CPU_PPC32_401C2 (line 10) | CPU_PPC32_401C2 = 3
  constant CPU_PPC32_401D2 (line 11) | CPU_PPC32_401D2 = 4
  constant CPU_PPC32_401E2 (line 12) | CPU_PPC32_401E2 = 5
  constant CPU_PPC32_401F2 (line 13) | CPU_PPC32_401F2 = 6
  constant CPU_PPC32_401G2 (line 14) | CPU_PPC32_401G2 = 7
  constant CPU_PPC32_IOP480 (line 15) | CPU_PPC32_IOP480 = 8
  constant CPU_PPC32_COBRA (line 16) | CPU_PPC32_COBRA = 9
  constant CPU_PPC32_403GA (line 17) | CPU_PPC32_403GA = 10
  constant CPU_PPC32_403GB (line 18) | CPU_PPC32_403GB = 11
  constant CPU_PPC32_403GC (line 19) | CPU_PPC32_403GC = 12
  constant CPU_PPC32_403GCX (line 20) | CPU_PPC32_403GCX = 13
  constant CPU_PPC32_405D2 (line 21) | CPU_PPC32_405D2 = 14
  constant CPU_PPC32_405D4 (line 22) | CPU_PPC32_405D4 = 15
  constant CPU_PPC32_405CRA (line 23) | CPU_PPC32_405CRA = 16
  constant CPU_PPC32_405CRB (line 24) | CPU_PPC32_405CRB = 17
  constant CPU_PPC32_405CRC (line 25) | CPU_PPC32_405CRC = 18
  constant CPU_PPC32_405EP (line 26) | CPU_PPC32_405EP = 19
  constant CPU_PPC32_405EZ (line 27) | CPU_PPC32_405EZ = 20
  constant CPU_PPC32_405GPA (line 28) | CPU_PPC32_405GPA = 21
  constant CPU_PPC32_405GPB (line 29) | CPU_PPC32_405GPB = 22
  constant CPU_PPC32_405GPC (line 30) | CPU_PPC32_405GPC = 23
  constant CPU_PPC32_405GPD (line 31) | CPU_PPC32_405GPD = 24
  constant CPU_PPC32_405GPR (line 32) | CPU_PPC32_405GPR = 25
  constant CPU_PPC32_405LP (line 33) | CPU_PPC32_405LP = 26
  constant CPU_PPC32_NPE405H (line 34) | CPU_PPC32_NPE405H = 27
  constant CPU_PPC32_NPE405H2 (line 35) | CPU_PPC32_NPE405H2 = 28
  constant CPU_PPC32_NPE405L (line 36) | CPU_PPC32_NPE405L = 29
  constant CPU_PPC32_NPE4GS3 (line 37) | CPU_PPC32_NPE4GS3 = 30
  constant CPU_PPC32_STB03 (line 38) | CPU_PPC32_STB03 = 31
  constant CPU_PPC32_STB04 (line 39) | CPU_PPC32_STB04 = 32
  constant CPU_PPC32_STB25 (line 40) | CPU_PPC32_STB25 = 33
  constant CPU_PPC32_X2VP4 (line 41) | CPU_PPC32_X2VP4 = 34
  constant CPU_PPC32_X2VP20 (line 42) | CPU_PPC32_X2VP20 = 35
  constant CPU_PPC32_440_XILINX (line 43) | CPU_PPC32_440_XILINX = 36
  constant CPU_PPC32_440_XILINX_W_DFPU (line 44) | CPU_PPC32_440_XILINX_W_DFPU = 37
  constant CPU_PPC32_440EPA (line 45) | CPU_PPC32_440EPA = 38
  constant CPU_PPC32_440EPB (line 46) | CPU_PPC32_440EPB = 39
  constant CPU_PPC32_440EPX (line 47) | CPU_PPC32_440EPX = 40
  constant CPU_PPC32_460EXB (line 48) | CPU_PPC32_460EXB = 41
  constant CPU_PPC32_G2 (line 49) | CPU_PPC32_G2 = 42
  constant CPU_PPC32_G2H4 (line 50) | CPU_PPC32_G2H4 = 43
  constant CPU_PPC32_G2GP (line 51) | CPU_PPC32_G2GP = 44
  constant CPU_PPC32_G2LS (line 52) | CPU_PPC32_G2LS = 45
  constant CPU_PPC32_G2HIP3 (line 53) | CPU_PPC32_G2HIP3 = 46
  constant CPU_PPC32_G2HIP4 (line 54) | CPU_PPC32_G2HIP4 = 47
  constant CPU_PPC32_MPC603 (line 55) | CPU_PPC32_MPC603 = 48
  constant CPU_PPC32_G2LE (line 56) | CPU_PPC32_G2LE = 49
  constant CPU_PPC32_G2LEGP (line 57) | CPU_PPC32_G2LEGP = 50
  constant CPU_PPC32_G2LELS (line 58) | CPU_PPC32_G2LELS = 51
  constant CPU_PPC32_G2LEGP1 (line 59) | CPU_PPC32_G2LEGP1 = 52
  constant CPU_PPC32_G2LEGP3 (line 60) | CPU_PPC32_G2LEGP3 = 53
  constant CPU_PPC32_MPC5200_V10 (line 61) | CPU_PPC32_MPC5200_V10 = 54
  constant CPU_PPC32_MPC5200_V11 (line 62) | CPU_PPC32_MPC5200_V11 = 55
  constant CPU_PPC32_MPC5200_V12 (line 63) | CPU_PPC32_MPC5200_V12 = 56
  constant CPU_PPC32_MPC5200B_V20 (line 64) | CPU_PPC32_MPC5200B_V20 = 57
  constant CPU_PPC32_MPC5200B_V21 (line 65) | CPU_PPC32_MPC5200B_V21 = 58
  constant CPU_PPC32_E200Z5 (line 66) | CPU_PPC32_E200Z5 = 59
  constant CPU_PPC32_E200Z6 (line 67) | CPU_PPC32_E200Z6 = 60
  constant CPU_PPC32_E300C1 (line 68) | CPU_PPC32_E300C1 = 61
  constant CPU_PPC32_E300C2 (line 69) | CPU_PPC32_E300C2 = 62
  constant CPU_PPC32_E300C3 (line 70) | CPU_PPC32_E300C3 = 63
  constant CPU_PPC32_E300C4 (line 71) | CPU_PPC32_E300C4 = 64
  constant CPU_PPC32_MPC8343 (line 72) | CPU_PPC32_MPC8343 = 65
  constant CPU_PPC32_MPC8343A (line 73) | CPU_PPC32_MPC8343A = 66
  constant CPU_PPC32_MPC8343E (line 74) | CPU_PPC32_MPC8343E = 67
  constant CPU_PPC32_MPC8343EA (line 75) | CPU_PPC32_MPC8343EA = 68
  constant CPU_PPC32_MPC8347T (line 76) | CPU_PPC32_MPC8347T = 69
  constant CPU_PPC32_MPC8347P (line 77) | CPU_PPC32_MPC8347P = 70
  constant CPU_PPC32_MPC8347AT (line 78) | CPU_PPC32_MPC8347AT = 71
  constant CPU_PPC32_MPC8347AP (line 79) | CPU_PPC32_MPC8347AP = 72
  constant CPU_PPC32_MPC8347ET (line 80) | CPU_PPC32_MPC8347ET = 73
  constant CPU_PPC32_MPC8347EP (line 81) | CPU_PPC32_MPC8347EP = 74
  constant CPU_PPC32_MPC8347EAT (line 82) | CPU_PPC32_MPC8347EAT = 75
  constant CPU_PPC32_MPC8347EAP (line 83) | CPU_PPC32_MPC8347EAP = 76
  constant CPU_PPC32_MPC8349 (line 84) | CPU_PPC32_MPC8349 = 77
  constant CPU_PPC32_MPC8349A (line 85) | CPU_PPC32_MPC8349A = 78
  constant CPU_PPC32_MPC8349E (line 86) | CPU_PPC32_MPC8349E = 79
  constant CPU_PPC32_MPC8349EA (line 87) | CPU_PPC32_MPC8349EA = 80
  constant CPU_PPC32_MPC8377 (line 88) | CPU_PPC32_MPC8377 = 81
  constant CPU_PPC32_MPC8377E (line 89) | CPU_PPC32_MPC8377E = 82
  constant CPU_PPC32_MPC8378 (line 90) | CPU_PPC32_MPC8378 = 83
  constant CPU_PPC32_MPC8378E (line 91) | CPU_PPC32_MPC8378E = 84
  constant CPU_PPC32_MPC8379 (line 92) | CPU_PPC32_MPC8379 = 85
  constant CPU_PPC32_MPC8379E (line 93) | CPU_PPC32_MPC8379E = 86
  constant CPU_PPC32_E500_V10 (line 94) | CPU_PPC32_E500_V10 = 87
  constant CPU_PPC32_E500_V20 (line 95) | CPU_PPC32_E500_V20 = 88
  constant CPU_PPC32_E500V2_V10 (line 96) | CPU_PPC32_E500V2_V10 = 89
  constant CPU_PPC32_E500V2_V20 (line 97) | CPU_PPC32_E500V2_V20 = 90
  constant CPU_PPC32_E500V2_V21 (line 98) | CPU_PPC32_E500V2_V21 = 91
  constant CPU_PPC32_E500V2_V22 (line 99) | CPU_PPC32_E500V2_V22 = 92
  constant CPU_PPC32_E500V2_V30 (line 100) | CPU_PPC32_E500V2_V30 = 93
  constant CPU_PPC32_E500MC (line 101) | CPU_PPC32_E500MC = 94
  constant CPU_PPC32_MPC8533_V10 (line 102) | CPU_PPC32_MPC8533_V10 = 95
  constant CPU_PPC32_MPC8533_V11 (line 103) | CPU_PPC32_MPC8533_V11 = 96
  constant CPU_PPC32_MPC8533E_V10 (line 104) | CPU_PPC32_MPC8533E_V10 = 97
  constant CPU_PPC32_MPC8533E_V11 (line 105) | CPU_PPC32_MPC8533E_V11 = 98
  constant CPU_PPC32_MPC8540_V10 (line 106) | CPU_PPC32_MPC8540_V10 = 99
  constant CPU_PPC32_MPC8540_V20 (line 107) | CPU_PPC32_MPC8540_V20 = 100
  constant CPU_PPC32_MPC8540_V21 (line 108) | CPU_PPC32_MPC8540_V21 = 101
  constant CPU_PPC32_MPC8541_V10 (line 109) | CPU_PPC32_MPC8541_V10 = 102
  constant CPU_PPC32_MPC8541_V11 (line 110) | CPU_PPC32_MPC8541_V11 = 103
  constant CPU_PPC32_MPC8541E_V10 (line 111) | CPU_PPC32_MPC8541E_V10 = 104
  constant CPU_PPC32_MPC8541E_V11 (line 112) | CPU_PPC32_MPC8541E_V11 = 105
  constant CPU_PPC32_MPC8543_V10 (line 113) | CPU_PPC32_MPC8543_V10 = 106
  constant CPU_PPC32_MPC8543_V11 (line 114) | CPU_PPC32_MPC8543_V11 = 107
  constant CPU_PPC32_MPC8543_V20 (line 115) | CPU_PPC32_MPC8543_V20 = 108
  constant CPU_PPC32_MPC8543_V21 (line 116) | CPU_PPC32_MPC8543_V21 = 109
  constant CPU_PPC32_MPC8543E_V10 (line 117) | CPU_PPC32_MPC8543E_V10 = 110
  constant CPU_PPC32_MPC8543E_V11 (line 118) | CPU_PPC32_MPC8543E_V11 = 111
  constant CPU_PPC32_MPC8543E_V20 (line 119) | CPU_PPC32_MPC8543E_V20 = 112
  constant CPU_PPC32_MPC8543E_V21 (line 120) | CPU_PPC32_MPC8543E_V21 = 113
  constant CPU_PPC32_MPC8544_V10 (line 121) | CPU_PPC32_MPC8544_V10 = 114
  constant CPU_PPC32_MPC8544_V11 (line 122) | CPU_PPC32_MPC8544_V11 = 115
  constant CPU_PPC32_MPC8544E_V10 (line 123) | CPU_PPC32_MPC8544E_V10 = 116
  constant CPU_PPC32_MPC8544E_V11 (line 124) | CPU_PPC32_MPC8544E_V11 = 117
  constant CPU_PPC32_MPC8545_V20 (line 125) | CPU_PPC32_MPC8545_V20 = 118
  constant CPU_PPC32_MPC8545_V21 (line 126) | CPU_PPC32_MPC8545_V21 = 119
  constant CPU_PPC32_MPC8545E_V20 (line 127) | CPU_PPC32_MPC8545E_V20 = 120
  constant CPU_PPC32_MPC8545E_V21 (line 128) | CPU_PPC32_MPC8545E_V21 = 121
  constant CPU_PPC32_MPC8547E_V20 (line 129) | CPU_PPC32_MPC8547E_V20 = 122
  constant CPU_PPC32_MPC8547E_V21 (line 130) | CPU_PPC32_MPC8547E_V21 = 123
  constant CPU_PPC32_MPC8548_V10 (line 131) | CPU_PPC32_MPC8548_V10 = 124
  constant CPU_PPC32_MPC8548_V11 (line 132) | CPU_PPC32_MPC8548_V11 = 125
  constant CPU_PPC32_MPC8548_V20 (line 133) | CPU_PPC32_MPC8548_V20 = 126
  constant CPU_PPC32_MPC8548_V21 (line 134) | CPU_PPC32_MPC8548_V21 = 127
  constant CPU_PPC32_MPC8548E_V10 (line 135) | CPU_PPC32_MPC8548E_V10 = 128
  constant CPU_PPC32_MPC8548E_V11 (line 136) | CPU_PPC32_MPC8548E_V11 = 129
  constant CPU_PPC32_MPC8548E_V20 (line 137) | CPU_PPC32_MPC8548E_V20 = 130
  constant CPU_PPC32_MPC8548E_V21 (line 138) | CPU_PPC32_MPC8548E_V21 = 131
  constant CPU_PPC32_MPC8555_V10 (line 139) | CPU_PPC32_MPC8555_V10 = 132
  constant CPU_PPC32_MPC8555_V11 (line 140) | CPU_PPC32_MPC8555_V11 = 133
  constant CPU_PPC32_MPC8555E_V10 (line 141) | CPU_PPC32_MPC8555E_V10 = 134
  constant CPU_PPC32_MPC8555E_V11 (line 142) | CPU_PPC32_MPC8555E_V11 = 135
  constant CPU_PPC32_MPC8560_V10 (line 143) | CPU_PPC32_MPC8560_V10 = 136
  constant CPU_PPC32_MPC8560_V20 (line 144) | CPU_PPC32_MPC8560_V20 = 137
  constant CPU_PPC32_MPC8560_V21 (line 145) | CPU_PPC32_MPC8560_V21 = 138
  constant CPU_PPC32_MPC8567 (line 146) | CPU_PPC32_MPC8567 = 139
  constant CPU_PPC32_MPC8567E (line 147) | CPU_PPC32_MPC8567E = 140
  constant CPU_PPC32_MPC8568 (line 148) | CPU_PPC32_MPC8568 = 141
  constant CPU_PPC32_MPC8568E (line 149) | CPU_PPC32_MPC8568E = 142
  constant CPU_PPC32_MPC8572 (line 150) | CPU_PPC32_MPC8572 = 143
  constant CPU_PPC32_MPC8572E (line 151) | CPU_PPC32_MPC8572E = 144
  constant CPU_PPC32_E600 (line 152) | CPU_PPC32_E600 = 145
  constant CPU_PPC32_MPC8610 (line 153) | CPU_PPC32_MPC8610 = 146
  constant CPU_PPC32_MPC8641 (line 154) | CPU_PPC32_MPC8641 = 147
  constant CPU_PPC32_MPC8641D (line 155) | CPU_PPC32_MPC8641D = 148
  constant CPU_PPC32_601_V0 (line 156) | CPU_PPC32_601_V0 = 149
  constant CPU_PPC32_601_V1 (line 157) | CPU_PPC32_601_V1 = 150
  constant CPU_PPC32_601_V2 (line 158) | CPU_PPC32_601_V2 = 151
  constant CPU_PPC32_602 (line 159) | CPU_PPC32_602 = 152
  constant CPU_PPC32_603 (line 160) | CPU_PPC32_603 = 153
  constant CPU_PPC32_603E_V1_1 (line 161) | CPU_PPC32_603E_V1_1 = 154
  constant CPU_PPC32_603E_V1_2 (line 162) | CPU_PPC32_603E_V1_2 = 155
  constant CPU_PPC32_603E_V1_3 (line 163) | CPU_PPC32_603E_V1_3 = 156
  constant CPU_PPC32_603E_V1_4 (line 164) | CPU_PPC32_603E_V1_4 = 157
  constant CPU_PPC32_603E_V2_2 (line 165) | CPU_PPC32_603E_V2_2 = 158
  constant CPU_PPC32_603E_V3 (line 166) | CPU_PPC32_603E_V3 = 159
  constant CPU_PPC32_603E_V4 (line 167) | CPU_PPC32_603E_V4 = 160
  constant CPU_PPC32_603E_V4_1 (line 168) | CPU_PPC32_603E_V4_1 = 161
  constant CPU_PPC32_603E7 (line 169) | CPU_PPC32_603E7 = 162
  constant CPU_PPC32_603E7T (line 170) | CPU_PPC32_603E7T = 163
  constant CPU_PPC32_603E7V (line 171) | CPU_PPC32_603E7V = 164
  constant CPU_PPC32_603E7V1 (line 172) | CPU_PPC32_603E7V1 = 165
  constant CPU_PPC32_603E7V2 (line 173) | CPU_PPC32_603E7V2 = 166
  constant CPU_PPC32_603P (line 174) | CPU_PPC32_603P = 167
  constant CPU_PPC32_604 (line 175) | CPU_PPC32_604 = 168
  constant CPU_PPC32_604E_V1_0 (line 176) | CPU_PPC32_604E_V1_0 = 169
  constant CPU_PPC32_604E_V2_2 (line 177) | CPU_PPC32_604E_V2_2 = 170
  constant CPU_PPC32_604E_V2_4 (line 178) | CPU_PPC32_604E_V2_4 = 171
  constant CPU_PPC32_604R (line 179) | CPU_PPC32_604R = 172
  constant CPU_PPC32_740_V1_0 (line 180) | CPU_PPC32_740_V1_0 = 173
  constant CPU_PPC32_750_V1_0 (line 181) | CPU_PPC32_750_V1_0 = 174
  constant CPU_PPC32_740_V2_0 (line 182) | CPU_PPC32_740_V2_0 = 175
  constant CPU_PPC32_750_V2_0 (line 183) | CPU_PPC32_750_V2_0 = 176
  constant CPU_PPC32_740_V2_1 (line 184) | CPU_PPC32_740_V2_1 = 177
  constant CPU_PPC32_750_V2_1 (line 185) | CPU_PPC32_750_V2_1 = 178
  constant CPU_PPC32_740_V2_2 (line 186) | CPU_PPC32_740_V2_2 = 179
  constant CPU_PPC32_750_V2_2 (line 187) | CPU_PPC32_750_V2_2 = 180
  constant CPU_PPC32_740_V3_0 (line 188) | CPU_PPC32_740_V3_0 = 181
  constant CPU_PPC32_750_V3_0 (line 189) | CPU_PPC32_750_V3_0 = 182
  constant CPU_PPC32_740_V3_1 (line 190) | CPU_PPC32_740_V3_1 = 183
  constant CPU_PPC32_750_V3_1 (line 191) | CPU_PPC32_750_V3_1 = 184
  constant CPU_PPC32_740E (line 192) | CPU_PPC32_740E = 185
  constant CPU_PPC32_750E (line 193) | CPU_PPC32_750E = 186
  constant CPU_PPC32_740P (line 194) | CPU_PPC32_740P = 187
  constant CPU_PPC32_750P (line 195) | CPU_PPC32_750P = 188
  constant CPU_PPC32_750CL_V1_0 (line 196) | CPU_PPC32_750CL_V1_0 = 189
  constant CPU_PPC32_750CL_V2_0 (line 197) | CPU_PPC32_750CL_V2_0 = 190
  constant CPU_PPC32_750CX_V1_0 (line 198) | CPU_PPC32_750CX_V1_0 = 191
  constant CPU_PPC32_750CX_V2_0 (line 199) | CPU_PPC32_750CX_V2_0 = 192
  constant CPU_PPC32_750CX_V2_1 (line 200) | CPU_PPC32_750CX_V2_1 = 193
  constant CPU_PPC32_750CX_V2_2 (line 201) | CPU_PPC32_750CX_V2_2 = 194
  constant CPU_PPC32_750CXE_V2_1 (line 202) | CPU_PPC32_750CXE_V2_1 = 195
  constant CPU_PPC32_750CXE_V2_2 (line 203) | CPU_PPC32_750CXE_V2_2 = 196
  constant CPU_PPC32_750CXE_V2_3 (line 204) | CPU_PPC32_750CXE_V2_3 = 197
  constant CPU_PPC32_750CXE_V2_4 (line 205) | CPU_PPC32_750CXE_V2_4 = 198
  constant CPU_PPC32_750CXE_V2_4B (line 206) | CPU_PPC32_750CXE_V2_4B = 199
  constant CPU_PPC32_750CXE_V3_0 (line 207) | CPU_PPC32_750CXE_V3_0 = 200
  constant CPU_PPC32_750CXE_V3_1 (line 208) | CPU_PPC32_750CXE_V3_1 = 201
  constant CPU_PPC32_750CXE_V3_1B (line 209) | CPU_PPC32_750CXE_V3_1B = 202
  constant CPU_PPC32_750CXR (line 210) | CPU_PPC32_750CXR = 203
  constant CPU_PPC32_750FL (line 211) | CPU_PPC32_750FL = 204
  constant CPU_PPC32_750FX_V1_0 (line 212) | CPU_PPC32_750FX_V1_0 = 205
  constant CPU_PPC32_750FX_V2_0 (line 213) | CPU_PPC32_750FX_V2_0 = 206
  constant CPU_PPC32_750FX_V2_1 (line 214) | CPU_PPC32_750FX_V2_1 = 207
  constant CPU_PPC32_750FX_V2_2 (line 215) | CPU_PPC32_750FX_V2_2 = 208
  constant CPU_PPC32_750FX_V2_3 (line 216) | CPU_PPC32_750FX_V2_3 = 209
  constant CPU_PPC32_750GL (line 217) | CPU_PPC32_750GL = 210
  constant CPU_PPC32_750GX_V1_0 (line 218) | CPU_PPC32_750GX_V1_0 = 211
  constant CPU_PPC32_750GX_V1_1 (line 219) | CPU_PPC32_750GX_V1_1 = 212
  constant CPU_PPC32_750GX_V1_2 (line 220) | CPU_PPC32_750GX_V1_2 = 213
  constant CPU_PPC32_750L_V2_0 (line 221) | CPU_PPC32_750L_V2_0 = 214
  constant CPU_PPC32_750L_V2_1 (line 222) | CPU_PPC32_750L_V2_1 = 215
  constant CPU_PPC32_750L_V2_2 (line 223) | CPU_PPC32_750L_V2_2 = 216
  constant CPU_PPC32_750L_V3_0 (line 224) | CPU_PPC32_750L_V3_0 = 217
  constant CPU_PPC32_750L_V3_2 (line 225) | CPU_PPC32_750L_V3_2 = 218
  constant CPU_PPC32_745_V1_0 (line 226) | CPU_PPC32_745_V1_0 = 219
  constant CPU_PPC32_755_V1_0 (line 227) | CPU_PPC32_755_V1_0 = 220
  constant CPU_PPC32_745_V1_1 (line 228) | CPU_PPC32_745_V1_1 = 221
  constant CPU_PPC32_755_V1_1 (line 229) | CPU_PPC32_755_V1_1 = 222
  constant CPU_PPC32_745_V2_0 (line 230) | CPU_PPC32_745_V2_0 = 223
  constant CPU_PPC32_755_V2_0 (line 231) | CPU_PPC32_755_V2_0 = 224
  constant CPU_PPC32_745_V2_1 (line 232) | CPU_PPC32_745_V2_1 = 225
  constant CPU_PPC32_755_V2_1 (line 233) | CPU_PPC32_755_V2_1 = 226
  constant CPU_PPC32_745_V2_2 (line 234) | CPU_PPC32_745_V2_2 = 227
  constant CPU_PPC32_755_V2_2 (line 235) | CPU_PPC32_755_V2_2 = 228
  constant CPU_PPC32_745_V2_3 (line 236) | CPU_PPC32_745_V2_3 = 229
  constant CPU_PPC32_755_V2_3 (line 237) | CPU_PPC32_755_V2_3 = 230
  constant CPU_PPC32_745_V2_4 (line 238) | CPU_PPC32_745_V2_4 = 231
  constant CPU_PPC32_755_V2_4 (line 239) | CPU_PPC32_755_V2_4 = 232
  constant CPU_PPC32_745_V2_5 (line 240) | CPU_PPC32_745_V2_5 = 233
  constant CPU_PPC32_755_V2_5 (line 241) | CPU_PPC32_755_V2_5 = 234
  constant CPU_PPC32_745_V2_6 (line 242) | CPU_PPC32_745_V2_6 = 235
  constant CPU_PPC32_755_V2_6 (line 243) | CPU_PPC32_755_V2_6 = 236
  constant CPU_PPC32_745_V2_7 (line 244) | CPU_PPC32_745_V2_7 = 237
  constant CPU_PPC32_755_V2_7 (line 245) | CPU_PPC32_755_V2_7 = 238
  constant CPU_PPC32_745_V2_8 (line 246) | CPU_PPC32_745_V2_8 = 239
  constant CPU_PPC32_755_V2_8 (line 247) | CPU_PPC32_755_V2_8 = 240
  constant CPU_PPC32_7400_V1_0 (line 248) | CPU_PPC32_7400_V1_0 = 241
  constant CPU_PPC32_7400_V1_1 (line 249) | CPU_PPC32_7400_V1_1 = 242
  constant CPU_PPC32_7400_V2_0 (line 250) | CPU_PPC32_7400_V2_0 = 243
  constant CPU_PPC32_7400_V2_1 (line 251) | CPU_PPC32_7400_V2_1 = 244
  constant CPU_PPC32_7400_V2_2 (line 252) | CPU_PPC32_7400_V2_2 = 245
  constant CPU_PPC32_7400_V2_6 (line 253) | CPU_PPC32_7400_V2_6 = 246
  constant CPU_PPC32_7400_V2_7 (line 254) | CPU_PPC32_7400_V2_7 = 247
  constant CPU_PPC32_7400_V2_8 (line 255) | CPU_PPC32_7400_V2_8 = 248
  constant CPU_PPC32_7400_V2_9 (line 256) | CPU_PPC32_7400_V2_9 = 249
  constant CPU_PPC32_7410_V1_0 (line 257) | CPU_PPC32_7410_V1_0 = 250
  constant CPU_PPC32_7410_V1_1 (line 258) | CPU_PPC32_7410_V1_1 = 251
  constant CPU_PPC32_7410_V1_2 (line 259) | CPU_PPC32_7410_V1_2 = 252
  constant CPU_PPC32_7410_V1_3 (line 260) | CPU_PPC32_7410_V1_3 = 253
  constant CPU_PPC32_7410_V1_4 (line 261) | CPU_PPC32_7410_V1_4 = 254
  constant CPU_PPC32_7448_V1_0 (line 262) | CPU_PPC32_7448_V1_0 = 255
  constant CPU_PPC32_7448_V1_1 (line 263) | CPU_PPC32_7448_V1_1 = 256
  constant CPU_PPC32_7448_V2_0 (line 264) | CPU_PPC32_7448_V2_0 = 257
  constant CPU_PPC32_7448_V2_1 (line 265) | CPU_PPC32_7448_V2_1 = 258
  constant CPU_PPC32_7450_V1_0 (line 266) | CPU_PPC32_7450_V1_0 = 259
  constant CPU_PPC32_7450_V1_1 (line 267) | CPU_PPC32_7450_V1_1 = 260
  constant CPU_PPC32_7450_V1_2 (line 268) | CPU_PPC32_7450_V1_2 = 261
  constant CPU_PPC32_7450_V2_0 (line 269) | CPU_PPC32_7450_V2_0 = 262
  constant CPU_PPC32_7450_V2_1 (line 270) | CPU_PPC32_7450_V2_1 = 263
  constant CPU_PPC32_7441_V2_1 (line 271) | CPU_PPC32_7441_V2_1 = 264
  constant CPU_PPC32_7441_V2_3 (line 272) | CPU_PPC32_7441_V2_3 = 265
  constant CPU_PPC32_7451_V2_3 (line 273) | CPU_PPC32_7451_V2_3 = 266
  constant CPU_PPC32_7441_V2_10 (line 274) | CPU_PPC32_7441_V2_10 = 267
  constant CPU_PPC32_7451_V2_10 (line 275) | CPU_PPC32_7451_V2_10 = 268
  constant CPU_PPC32_7445_V1_0 (line 276) | CPU_PPC32_7445_V1_0 = 269
  constant CPU_PPC32_7455_V1_0 (line 277) | CPU_PPC32_7455_V1_0 = 270
  constant CPU_PPC32_7445_V2_1 (line 278) | CPU_PPC32_7445_V2_1 = 271
  constant CPU_PPC32_7455_V2_1 (line 279) | CPU_PPC32_7455_V2_1 = 272
  constant CPU_PPC32_7445_V3_2 (line 280) | CPU_PPC32_7445_V3_2 = 273
  constant CPU_PPC32_7455_V3_2 (line 281) | CPU_PPC32_7455_V3_2 = 274
  constant CPU_PPC32_7445_V3_3 (line 282) | CPU_PPC32_7445_V3_3 = 275
  constant CPU_PPC32_7455_V3_3 (line 283) | CPU_PPC32_7455_V3_3 = 276
  constant CPU_PPC32_7445_V3_4 (line 284) | CPU_PPC32_7445_V3_4 = 277
  constant CPU_PPC32_7455_V3_4 (line 285) | CPU_PPC32_7455_V3_4 = 278
  constant CPU_PPC32_7447_V1_0 (line 286) | CPU_PPC32_7447_V1_0 = 279
  constant CPU_PPC32_7457_V1_0 (line 287) | CPU_PPC32_7457_V1_0 = 280
  constant CPU_PPC32_7447_V1_1 (line 288) | CPU_PPC32_7447_V1_1 = 281
  constant CPU_PPC32_7457_V1_1 (line 289) | CPU_PPC32_7457_V1_1 = 282
  constant CPU_PPC32_7457_V1_2 (line 290) | CPU_PPC32_7457_V1_2 = 283
  constant CPU_PPC32_7447A_V1_0 (line 291) | CPU_PPC32_7447A_V1_0 = 284
  constant CPU_PPC32_7457A_V1_0 (line 292) | CPU_PPC32_7457A_V1_0 = 285
  constant CPU_PPC32_7447A_V1_1 (line 293) | CPU_PPC32_7447A_V1_1 = 286
  constant CPU_PPC32_7457A_V1_1 (line 294) | CPU_PPC32_7457A_V1_1 = 287
  constant CPU_PPC32_7447A_V1_2 (line 295) | CPU_PPC32_7447A_V1_2 = 288
  constant CPU_PPC32_7457A_V1_2 (line 296) | CPU_PPC32_7457A_V1_2 = 289
  constant CPU_PPC32_ENDING (line 297) | CPU_PPC32_ENDING = 290
  constant CPU_PPC64_E5500 (line 301) | CPU_PPC64_E5500 = 0
  constant CPU_PPC64_E6500 (line 302) | CPU_PPC64_E6500 = 1
  constant CPU_PPC64_970_V2_2 (line 303) | CPU_PPC64_970_V2_2 = 2
  constant CPU_PPC64_970FX_V1_0 (line 304) | CPU_PPC64_970FX_V1_0 = 3
  constant CPU_PPC64_970FX_V2_0 (line 305) | CPU_PPC64_970FX_V2_0 = 4
  constant CPU_PPC64_970FX_V2_1 (line 306) | CPU_PPC64_970FX_V2_1 = 5
  constant CPU_PPC64_970FX_V3_0 (line 307) | CPU_PPC64_970FX_V3_0 = 6
  constant CPU_PPC64_970FX_V3_1 (line 308) | CPU_PPC64_970FX_V3_1 = 7
  constant CPU_PPC64_970MP_V1_0 (line 309) | CPU_PPC64_970MP_V1_0 = 8
  constant CPU_PPC64_970MP_V1_1 (line 310) | CPU_PPC64_970MP_V1_1 = 9
  constant CPU_PPC64_POWER5_V2_1 (line 311) | CPU_PPC64_POWER5_V2_1 = 10
  constant CPU_PPC64_POWER7_V2_3 (line 312) | CPU_PPC64_POWER7_V2_3 = 11
  constant CPU_PPC64_POWER7_V2_1 (line 313) | CPU_PPC64_POWER7_V2_1 = 12
  constant CPU_PPC64_POWER8E_V2_1 (line 314) | CPU_PPC64_POWER8E_V2_1 = 13
  constant CPU_PPC64_POWER8_V2_0 (line 315) | CPU_PPC64_POWER8_V2_0 = 14
  constant CPU_PPC64_POWER8NVL_V1_0 (line 316) | CPU_PPC64_POWER8NVL_V1_0 = 15
  constant CPU_PPC64_POWER9_V1_0 (line 317) | CPU_PPC64_POWER9_V1_0 = 16
  constant CPU_PPC64_POWER9_V2_0 (line 318) | CPU_PPC64_POWER9_V2_0 = 17
  constant CPU_PPC64_POWER10_V1_0 (line 319) | CPU_PPC64_POWER10_V1_0 = 18
  constant CPU_PPC64_ENDING (line 320) | CPU_PPC64_ENDING = 19
  constant PPC_REG_INVALID (line 324) | PPC_REG_INVALID = 0
  constant PPC_REG_PC (line 327) | PPC_REG_PC = 1
  constant PPC_REG_0 (line 328) | PPC_REG_0 = 2
  constant PPC_REG_1 (line 329) | PPC_REG_1 = 3
  constant PPC_REG_2 (line 330) | PPC_REG_2 = 4
  constant PPC_REG_3 (line 331) | PPC_REG_3 = 5
  constant PPC_REG_4 (line 332) | PPC_REG_4 = 6
  constant PPC_REG_5 (line 333) | PPC_REG_5 = 7
  constant PPC_REG_6 (line 334) | PPC_REG_6 = 8
  constant PPC_REG_7 (line 335) | PPC_REG_7 = 9
  constant PPC_REG_8 (line 336) | PPC_REG_8 = 10
  constant PPC_REG_9 (line 337) | PPC_REG_9 = 11
  constant PPC_REG_10 (line 338) | PPC_REG_10 = 12
  constant PPC_REG_11 (line 339) | PPC_REG_11 = 13
  constant PPC_REG_12 (line 340) | PPC_REG_12 = 14
  constant PPC_REG_13 (line 341) | PPC_REG_13 = 15
  constant PPC_REG_14 (line 342) | PPC_REG_14 = 16
  constant PPC_REG_15 (line 343) | PPC_REG_15 = 17
  constant PPC_REG_16 (line 344) | PPC_REG_16 = 18
  constant PPC_REG_17 (line 345) | PPC_REG_17 = 19
  constant PPC_REG_18 (line 346) | PPC_REG_18 = 20
  constant PPC_REG_19 (line 347) | PPC_REG_19 = 21
  constant PPC_REG_20 (line 348) | PPC_REG_20 = 22
  constant PPC_REG_21 (line 349) | PPC_REG_21 = 23
  constant PPC_REG_22 (line 350) | PPC_REG_22 = 24
  constant PPC_REG_23 (line 351) | PPC_REG_23 = 25
  constant PPC_REG_24 (line 352) | PPC_REG_24 = 26
  constant PPC_REG_25 (line 353) | PPC_REG_25 = 27
  constant PPC_REG_26 (line 354) | PPC_REG_26 = 28
  constant PPC_REG_27 (line 355) | PPC_REG_27 = 29
  constant PPC_REG_28 (line 356) | PPC_REG_28 = 30
  constant PPC_REG_29 (line 357) | PPC_REG_29 = 31
  constant PPC_REG_30 (line 358) | PPC_REG_30 = 32
  constant PPC_REG_31 (line 359) | PPC_REG_31 = 33
  constant PPC_REG_CR0 (line 360) | PPC_REG_CR0 = 34
  constant PPC_REG_CR1 (line 361) | PPC_REG_CR1 = 35
  constant PPC_REG_CR2 (line 362) | PPC_REG_CR2 = 36
  constant PPC_REG_CR3 (line 363) | PPC_REG_CR3 = 37
  constant PPC_REG_CR4 (line 364) | PPC_REG_CR4 = 38
  constant PPC_REG_CR5 (line 365) | PPC_REG_CR5 = 39
  constant PPC_REG_CR6 (line 366) | PPC_REG_CR6 = 40
  constant PPC_REG_CR7 (line 367) | PPC_REG_CR7 = 41
  constant PPC_REG_FPR0 (line 368) | PPC_REG_FPR0 = 42
  constant PPC_REG_FPR1 (line 369) | PPC_REG_FPR1 = 43
  constant PPC_REG_FPR2 (line 370) | PPC_REG_FPR2 = 44
  constant PPC_REG_FPR3 (line 371) | PPC_REG_FPR3 = 45
  constant PPC_REG_FPR4 (line 372) | PPC_REG_FPR4 = 46
  constant PPC_REG_FPR5 (line 373) | PPC_REG_FPR5 = 47
  constant PPC_REG_FPR6 (line 374) | PPC_REG_FPR6 = 48
  constant PPC_REG_FPR7 (line 375) | PPC_REG_FPR7 = 49
  constant PPC_REG_FPR8 (line 376) | PPC_REG_FPR8 = 50
  constant PPC_REG_FPR9 (line 377) | PPC_REG_FPR9 = 51
  constant PPC_REG_FPR10 (line 378) | PPC_REG_FPR10 = 52
  constant PPC_REG_FPR11 (line 379) | PPC_REG_FPR11 = 53
  constant PPC_REG_FPR12 (line 380) | PPC_REG_FPR12 = 54
  constant PPC_REG_FPR13 (line 381) | PPC_REG_FPR13 = 55
  constant PPC_REG_FPR14 (line 382) | PPC_REG_FPR14 = 56
  constant PPC_REG_FPR15 (line 383) | PPC_REG_FPR15 = 57
  constant PPC_REG_FPR16 (line 384) | PPC_REG_FPR16 = 58
  constant PPC_REG_FPR17 (line 385) | PPC_REG_FPR17 = 59
  constant PPC_REG_FPR18 (line 386) | PPC_REG_FPR18 = 60
  constant PPC_REG_FPR19 (line 387) | PPC_REG_FPR19 = 61
  constant PPC_REG_FPR20 (line 388) | PPC_REG_FPR20 = 62
  constant PPC_REG_FPR21 (line 389) | PPC_REG_FPR21 = 63
  constant PPC_REG_FPR22 (line 390) | PPC_REG_FPR22 = 64
  constant PPC_REG_FPR23 (line 391) | PPC_REG_FPR23 = 65
  constant PPC_REG_FPR24 (line 392) | PPC_REG_FPR24 = 66
  constant PPC_REG_FPR25 (line 393) | PPC_REG_FPR25 = 67
  constant PPC_REG_FPR26 (line 394) | PPC_REG_FPR26 = 68
  constant PPC_REG_FPR27 (line 395) | PPC_REG_FPR27 = 69
  constant PPC_REG_FPR28 (line 396) | PPC_REG_FPR28 = 70
  constant PPC_REG_FPR29 (line 397) | PPC_REG_FPR29 = 71
  constant PPC_REG_FPR30 (line 398) | PPC_REG_FPR30 = 72
  constant PPC_REG_FPR31 (line 399) | PPC_REG_FPR31 = 73
  constant PPC_REG_LR (line 400) | PPC_REG_LR = 74
  constant PPC_REG_XER (line 401) | PPC_REG_XER = 75
  constant PPC_REG_CTR (line 402) | PPC_REG_CTR = 76
  constant PPC_REG_MSR (line 403) | PPC_REG_MSR = 77
  constant PPC_REG_FPSCR (line 404) | PPC_REG_FPSCR = 78
  constant PPC_REG_CR (line 405) | PPC_REG_CR = 79
  constant PPC_REG_ENDING (line 406) | PPC_REG_ENDING = 80

FILE: bindings/go/unicorn/reg_batch.go
  type RegBatch (line 33) | type RegBatch struct
    method ReadFast (line 74) | func (r *RegBatch) ReadFast(u Unicorn) ([]uint64, error) {
    method Read (line 82) | func (r *RegBatch) Read(u Unicorn, vals []uint64) error {
    method Write (line 91) | func (r *RegBatch) Write(u Unicorn, vals []uint64) error {
  function regBatchSetup (line 43) | func regBatchSetup(regs []int) (buf unsafe.Pointer, vals []uint64, cenum...
  function NewRegBatch (line 58) | func NewRegBatch(regs []int) (*RegBatch, error) {

FILE: bindings/go/unicorn/riscv_const.go
  constant CPU_RISCV32_ANY (line 7) | CPU_RISCV32_ANY = 0
  constant CPU_RISCV32_BASE32 (line 8) | CPU_RISCV32_BASE32 = 1
  constant CPU_RISCV32_SIFIVE_E31 (line 9) | CPU_RISCV32_SIFIVE_E31 = 2
  constant CPU_RISCV32_SIFIVE_U34 (line 10) | CPU_RISCV32_SIFIVE_U34 = 3
  constant CPU_RISCV32_ENDING (line 11) | CPU_RISCV32_ENDING = 4
  constant CPU_RISCV64_ANY (line 15) | CPU_RISCV64_ANY = 0
  constant CPU_RISCV64_BASE64 (line 16) | CPU_RISCV64_BASE64 = 1
  constant CPU_RISCV64_SIFIVE_E51 (line 17) | CPU_RISCV64_SIFIVE_E51 = 2
  constant CPU_RISCV64_SIFIVE_U54 (line 18) | CPU_RISCV64_SIFIVE_U54 = 3
  constant CPU_RISCV64_ENDING (line 19) | CPU_RISCV64_ENDING = 4
  constant RISCV_REG_INVALID (line 23) | RISCV_REG_INVALID = 0
  constant RISCV_REG_X0 (line 26) | RISCV_REG_X0 = 1
  constant RISCV_REG_X1 (line 27) | RISCV_REG_X1 = 2
  constant RISCV_REG_X2 (line 28) | RISCV_REG_X2 = 3
  constant RISCV_REG_X3 (line 29) | RISCV_REG_X3 = 4
  constant RISCV_REG_X4 (line 30) | RISCV_REG_X4 = 5
  constant RISCV_REG_X5 (line 31) | RISCV_REG_X5 = 6
  constant RISCV_REG_X6 (line 32) | RISCV_REG_X6 = 7
  constant RISCV_REG_X7 (line 33) | RISCV_REG_X7 = 8
  constant RISCV_REG_X8 (line 34) | RISCV_REG_X8 = 9
  constant RISCV_REG_X9 (line 35) | RISCV_REG_X9 = 10
  constant RISCV_REG_X10 (line 36) | RISCV_REG_X10 = 11
  constant RISCV_REG_X11 (line 37) | RISCV_REG_X11 = 12
  constant RISCV_REG_X12 (line 38) | RISCV_REG_X12 = 13
  constant RISCV_REG_X13 (line 39) | RISCV_REG_X13 = 14
  constant RISCV_REG_X14 (line 40) | RISCV_REG_X14 = 15
  constant RISCV_REG_X15 (line 41) | RISCV_REG_X15 = 16
  constant RISCV_REG_X16 (line 42) | RISCV_REG_X16 = 17
  constant RISCV_REG_X17 (line 43) | RISCV_REG_X17 = 18
  constant RISCV_REG_X18 (line 44) | RISCV_REG_X18 = 19
  constant RISCV_REG_X19 (line 45) | RISCV_REG_X19 = 20
  constant RISCV_REG_X20 (line 46) | RISCV_REG_X20 = 21
  constant RISCV_REG_X21 (line 47) | RISCV_REG_X21 = 22
  constant RISCV_REG_X22 (line 48) | RISCV_REG_X22 = 23
  constant RISCV_REG_X23 (line 49) | RISCV_REG_X23 = 24
  constant RISCV_REG_X24 (line 50) | RISCV_REG_X24 = 25
  constant RISCV_REG_X25 (line 51) | RISCV_REG_X25 = 26
  constant RISCV_REG_X26 (line 52) | RISCV_REG_X26 = 27
  constant RISCV_REG_X27 (line 53) | RISCV_REG_X27 = 28
  constant RISCV_REG_X28 (line 54) | RISCV_REG_X28 = 29
  constant RISCV_REG_X29 (line 55) | RISCV_REG_X29 = 30
  constant RISCV_REG_X30 (line 56) | RISCV_REG_X30 = 31
  constant RISCV_REG_X31 (line 57) | RISCV_REG_X31 = 32
  constant RISCV_REG_USTATUS (line 60) | RISCV_REG_USTATUS = 33
  constant RISCV_REG_UIE (line 61) | RISCV_REG_UIE = 34
  constant RISCV_REG_UTVEC (line 62) | RISCV_REG_UTVEC = 35
  constant RISCV_REG_USCRATCH (line 63) | RISCV_REG_USCRATCH = 36
  constant RISCV_REG_UEPC (line 64) | RISCV_REG_UEPC = 37
  constant RISCV_REG_UCAUSE (line 65) | RISCV_REG_UCAUSE = 38
  constant RISCV_REG_UTVAL (line 66) | RISCV_REG_UTVAL = 39
  constant RISCV_REG_UIP (line 67) | RISCV_REG_UIP = 40
  constant RISCV_REG_FFLAGS (line 68) | RISCV_REG_FFLAGS = 41
  constant RISCV_REG_FRM (line 69) | RISCV_REG_FRM = 42
  constant RISCV_REG_FCSR (line 70) | RISCV_REG_FCSR = 43
  constant RISCV_REG_CYCLE (line 71) | RISCV_REG_CYCLE = 44
  constant RISCV_REG_TIME (line 72) | RISCV_REG_TIME = 45
  constant RISCV_REG_INSTRET (line 73) | RISCV_REG_INSTRET = 46
  constant RISCV_REG_HPMCOUNTER3 (line 74) | RISCV_REG_HPMCOUNTER3 = 47
  constant RISCV_REG_HPMCOUNTER4 (line 75) | RISCV_REG_HPMCOUNTER4 = 48
  constant RISCV_REG_HPMCOUNTER5 (line 76) | RISCV_REG_HPMCOUNTER5 = 49
  constant RISCV_REG_HPMCOUNTER6 (line 77) | RISCV_REG_HPMCOUNTER6 = 50
  constant RISCV_REG_HPMCOUNTER7 (line 78) | RISCV_REG_HPMCOUNTER7 = 51
  constant RISCV_REG_HPMCOUNTER8 (line 79) | RISCV_REG_HPMCOUNTER8 = 52
  constant RISCV_REG_HPMCOUNTER9 (line 80) | RISCV_REG_HPMCOUNTER9 = 53
  constant RISCV_REG_HPMCOUNTER10 (line 81) | RISCV_REG_HPMCOUNTER10 = 54
  constant RISCV_REG_HPMCOUNTER11 (line 82) | RISCV_REG_HPMCOUNTER11 = 55
  constant RISCV_REG_HPMCOUNTER12 (line 83) | RISCV_REG_HPMCOUNTER12 = 56
  constant RISCV_REG_HPMCOUNTER13 (line 84) | RISCV_REG_HPMCOUNTER13 = 57
  constant RISCV_REG_HPMCOUNTER14 (line 85) | RISCV_REG_HPMCOUNTER14 = 58
  constant RISCV_REG_HPMCOUNTER15 (line 86) | RISCV_REG_HPMCOUNTER15 = 59
  constant RISCV_REG_HPMCOUNTER16 (line 87) | RISCV_REG_HPMCOUNTER16 = 60
  constant RISCV_REG_HPMCOUNTER17 (line 88) | RISCV_REG_HPMCOUNTER17 = 61
  constant RISCV_REG_HPMCOUNTER18 (line 89) | RISCV_REG_HPMCOUNTER18 = 62
  constant RISCV_REG_HPMCOUNTER19 (line 90) | RISCV_REG_HPMCOUNTER19 = 63
  constant RISCV_REG_HPMCOUNTER20 (line 91) | RISCV_REG_HPMCOUNTER20 = 64
  constant RISCV_REG_HPMCOUNTER21 (line 92) | RISCV_REG_HPMCOUNTER21 = 65
  constant RISCV_REG_HPMCOUNTER22 (line 93) | RISCV_REG_HPMCOUNTER22 = 66
  constant RISCV_REG_HPMCOUNTER23 (line 94) | RISCV_REG_HPMCOUNTER23 = 67
  constant RISCV_REG_HPMCOUNTER24 (line 95) | RISCV_REG_HPMCOUNTER24 = 68
  constant RISCV_REG_HPMCOUNTER25 (line 96) | RISCV_REG_HPMCOUNTER25 = 69
  constant RISCV_REG_HPMCOUNTER26 (line 97) | RISCV_REG_HPMCOUNTER26 = 70
  constant RISCV_REG_HPMCOUNTER27 (line 98) | RISCV_REG_HPMCOUNTER27 = 71
  constant RISCV_REG_HPMCOUNTER28 (line 99) | RISCV_REG_HPMCOUNTER28 = 72
  constant RISCV_REG_HPMCOUNTER29 (line 100) | RISCV_REG_HPMCOUNTER29 = 73
  constant RISCV_REG_HPMCOUNTER30 (line 101) | RISCV_REG_HPMCOUNTER30 = 74
  constant RISCV_REG_HPMCOUNTER31 (line 102) | RISCV_REG_HPMCOUNTER31 = 75
  constant RISCV_REG_CYCLEH (line 103) | RISCV_REG_CYCLEH = 76
  constant RISCV_REG_TIMEH (line 104) | RISCV_REG_TIMEH = 77
  constant RISCV_REG_INSTRETH (line 105) | RISCV_REG_INSTRETH = 78
  constant RISCV_REG_HPMCOUNTER3H (line 106) | RISCV_REG_HPMCOUNTER3H = 79
  constant RISCV_REG_HPMCOUNTER4H (line 107) | RISCV_REG_HPMCOUNTER4H = 80
  constant RISCV_REG_HPMCOUNTER5H (line 108) | RISCV_REG_HPMCOUNTER5H = 81
  constant RISCV_REG_HPMCOUNTER6H (line 109) | RISCV_REG_HPMCOUNTER6H = 82
  constant RISCV_REG_HPMCOUNTER7H (line 110) | RISCV_REG_HPMCOUNTER7H = 83
  constant RISCV_REG_HPMCOUNTER8H (line 111) | RISCV_REG_HPMCOUNTER8H = 84
  constant RISCV_REG_HPMCOUNTER9H (line 112) | RISCV_REG_HPMCOUNTER9H = 85
  constant RISCV_REG_HPMCOUNTER10H (line 113) | RISCV_REG_HPMCOUNTER10H = 86
  constant RISCV_REG_HPMCOUNTER11H (line 114) | RISCV_REG_HPMCOUNTER11H = 87
  constant RISCV_REG_HPMCOUNTER12H (line 115) | RISCV_REG_HPMCOUNTER12H = 88
  constant RISCV_REG_HPMCOUNTER13H (line 116) | RISCV_REG_HPMCOUNTER13H = 89
  constant RISCV_REG_HPMCOUNTER14H (line 117) | RISCV_REG_HPMCOUNTER14H = 90
  constant RISCV_REG_HPMCOUNTER15H (line 118) | RISCV_REG_HPMCOUNTER15H = 91
  constant RISCV_REG_HPMCOUNTER16H (line 119) | RISCV_REG_HPMCOUNTER16H = 92
  constant RISCV_REG_HPMCOUNTER17H (line 120) | RISCV_REG_HPMCOUNTER17H = 93
  constant RISCV_REG_HPMCOUNTER18H (line 121) | RISCV_REG_HPMCOUNTER18H = 94
  constant RISCV_REG_HPMCOUNTER19H (line 122) | RISCV_REG_HPMCOUNTER19H = 95
  constant RISCV_REG_HPMCOUNTER20H (line 123) | RISCV_REG_HPMCOUNTER20H = 96
  constant RISCV_REG_HPMCOUNTER21H (line 124) | RISCV_REG_HPMCOUNTER21H = 97
  constant RISCV_REG_HPMCOUNTER22H (line 125) | RISCV_REG_HPMCOUNTER22H = 98
  constant RISCV_REG_HPMCOUNTER23H (line 126) | RISCV_REG_HPMCOUNTER23H = 99
  constant RISCV_REG_HPMCOUNTER24H (line 127) | RISCV_REG_HPMCOUNTER24H = 100
  constant RISCV_REG_HPMCOUNTER25H (line 128) | RISCV_REG_HPMCOUNTER25H = 101
  constant RISCV_REG_HPMCOUNTER26H (line 129) | RISCV_REG_HPMCOUNTER26H = 102
  constant RISCV_REG_HPMCOUNTER27H (line 130) | RISCV_REG_HPMCOUNTER27H = 103
  constant RISCV_REG_HPMCOUNTER28H (line 131) | RISCV_REG_HPMCOUNTER28H = 104
  constant RISCV_REG_HPMCOUNTER29H (line 132) | RISCV_REG_HPMCOUNTER29H = 105
  constant RISCV_REG_HPMCOUNTER30H (line 133) | RISCV_REG_HPMCOUNTER30H = 106
  constant RISCV_REG_HPMCOUNTER31H (line 134) | RISCV_REG_HPMCOUNTER31H = 107
  constant RISCV_REG_MCYCLE (line 135) | RISCV_REG_MCYCLE = 108
  constant RISCV_REG_MINSTRET (line 136) | RISCV_REG_MINSTRET = 109
  constant RISCV_REG_MCYCLEH (line 137) | RISCV_REG_MCYCLEH = 110
  constant RISCV_REG_MINSTRETH (line 138) | RISCV_REG_MINSTRETH = 111
  constant RISCV_REG_MVENDORID (line 139) | RISCV_REG_MVENDORID = 112
  constant RISCV_REG_MARCHID (line 140) | RISCV_REG_MARCHID = 113
  constant RISCV_REG_MIMPID (line 141) | RISCV_REG_MIMPID = 114
  constant RISCV_REG_MHARTID (line 142) | RISCV_REG_MHARTID = 115
  constant RISCV_REG_MSTATUS (line 143) | RISCV_REG_MSTATUS = 116
  constant RISCV_REG_MISA (line 144) | RISCV_REG_MISA = 117
  constant RISCV_REG_MEDELEG (line 145) | RISCV_REG_MEDELEG = 118
  constant RISCV_REG_MIDELEG (line 146) | RISCV_REG_MIDELEG = 119
  constant RISCV_REG_MIE (line 147) | RISCV_REG_MIE = 120
  constant RISCV_REG_MTVEC (line 148) | RISCV_REG_MTVEC = 121
  constant RISCV_REG_MCOUNTEREN (line 149) | RISCV_REG_MCOUNTEREN = 122
  constant RISCV_REG_MSTATUSH (line 150) | RISCV_REG_MSTATUSH = 123
  constant RISCV_REG_MUCOUNTEREN (line 151) | RISCV_REG_MUCOUNTEREN = 124
  constant RISCV_REG_MSCOUNTEREN (line 152) | RISCV_REG_MSCOUNTEREN = 125
  constant RISCV_REG_MHCOUNTEREN (line 153) | RISCV_REG_MHCOUNTEREN = 126
  constant RISCV_REG_MSCRATCH (line 154) | RISCV_REG_MSCRATCH = 127
  constant RISCV_REG_MEPC (line 155) | RISCV_REG_MEPC = 128
  constant RISCV_REG_MCAUSE (line 156) | RISCV_REG_MCAUSE = 129
  constant RISCV_REG_MTVAL (line 157) | RISCV_REG_MTVAL = 130
  constant RISCV_REG_MIP (line 158) | RISCV_REG_MIP = 131
  constant RISCV_REG_MBADADDR (line 159) | RISCV_REG_MBADADDR = 132
  constant RISCV_REG_SSTATUS (line 160) | RISCV_REG_SSTATUS = 133
  constant RISCV_REG_SEDELEG (line 161) | RISCV_REG_SEDELEG = 134
  constant RISCV_REG_SIDELEG (line 162) | RISCV_REG_SIDELEG = 135
  constant RISCV_REG_SIE (line 163) | RISCV_REG_SIE = 136
  constant RISCV_REG_STVEC (line 164) | RISCV_REG_STVEC = 137
  constant RISCV_REG_SCOUNTEREN (line 165) | RISCV_REG_SCOUNTEREN = 138
  constant RISCV_REG_SSCRATCH (line 166) | RISCV_REG_SSCRATCH = 139
  constant RISCV_REG_SEPC (line 167) | RISCV_REG_SEPC = 140
  constant RISCV_REG_SCAUSE (line 168) | RISCV_REG_SCAUSE = 141
  constant RISCV_REG_STVAL (line 169) | RISCV_REG_STVAL = 142
  constant RISCV_REG_SIP (line 170) | RISCV_REG_SIP = 143
  constant RISCV_REG_SBADADDR (line 171) | RISCV_REG_SBADADDR = 144
  constant RISCV_REG_SPTBR (line 172) | RISCV_REG_SPTBR = 145
  constant RISCV_REG_SATP (line 173) | RISCV_REG_SATP = 146
  constant RISCV_REG_HSTATUS (line 174) | RISCV_REG_HSTATUS = 147
  constant RISCV_REG_HEDELEG (line 175) | RISCV_REG_HEDELEG = 148
  constant RISCV_REG_HIDELEG (line 176) | RISCV_REG_HIDELEG = 149
  constant RISCV_REG_HIE (line 177) | RISCV_REG_HIE = 150
  constant RISCV_REG_HCOUNTEREN (line 178) | RISCV_REG_HCOUNTEREN = 151
  constant RISCV_REG_HTVAL (line 179) | RISCV_REG_HTVAL = 152
  constant RISCV_REG_HIP (line 180) | RISCV_REG_HIP = 153
  constant RISCV_REG_HTINST (line 181) | RISCV_REG_HTINST = 154
  constant RISCV_REG_HGATP (line 182) | RISCV_REG_HGATP = 155
  constant RISCV_REG_HTIMEDELTA (line 183) | RISCV_REG_HTIMEDELTA = 156
  constant RISCV_REG_HTIMEDELTAH (line 184) | RISCV_REG_HTIMEDELTAH = 157
  constant RISCV_REG_F0 (line 187) | RISCV_REG_F0 = 158
  constant RISCV_REG_F1 (line 188) | RISCV_REG_F1 = 159
  constant RISCV_REG_F2 (line 189) | RISCV_REG_F2 = 160
  constant RISCV_REG_F3 (line 190) | RISCV_REG_F3 = 161
  constant RISCV_REG_F4 (line 191) | RISCV_REG_F4 = 162
  constant RISCV_REG_F5 (line 192) | RISCV_REG_F5 = 163
  constant RISCV_REG_F6 (line 193) | RISCV_REG_F6 = 164
  constant RISCV_REG_F7 (line 194) | RISCV_REG_F7 = 165
  constant RISCV_REG_F8 (line 195) | RISCV_REG_F8 = 166
  constant RISCV_REG_F9 (line 196) | RISCV_REG_F9 = 167
  constant RISCV_REG_F10 (line 197) | RISCV_REG_F10 = 168
  constant RISCV_REG_F11 (line 198) | RISCV_REG_F11 = 169
  constant RISCV_REG_F12 (line 199) | RISCV_REG_F12 = 170
  constant RISCV_REG_F13 (line 200) | RISCV_REG_F13 = 171
  constant RISCV_REG_F14 (line 201) | RISCV_REG_F14 = 172
  constant RISCV_REG_F15 (line 202) | RISCV_REG_F15 = 173
  constant RISCV_REG_F16 (line 203) | RISCV_REG_F16 = 174
  constant RISCV_REG_F17 (line 204) | RISCV_REG_F17 = 175
  constant RISCV_REG_F18 (line 205) | RISCV_REG_F18 = 176
  constant RISCV_REG_F19 (line 206) | RISCV_REG_F19 = 177
  constant RISCV_REG_F20 (line 207) | RISCV_REG_F20 = 178
  constant RISCV_REG_F21 (line 208) | RISCV_REG_F21 = 179
  constant RISCV_REG_F22 (line 209) | RISCV_REG_F22 = 180
  constant RISCV_REG_F23 (line 210) | RISCV_REG_F23 = 181
  constant RISCV_REG_F24 (line 211) | RISCV_REG_F24 = 182
  constant RISCV_REG_F25 (line 212) | RISCV_REG_F25 = 183
  constant RISCV_REG_F26 (line 213) | RISCV_REG_F26 = 184
  constant RISCV_REG_F27 (line 214) | RISCV_REG_F27 = 185
  constant RISCV_REG_F28 (line 215) | RISCV_REG_F28 = 186
  constant RISCV_REG_F29 (line 216) | RISCV_REG_F29 = 187
  constant RISCV_REG_F30 (line 217) | RISCV_REG_F30 = 188
  constant RISCV_REG_F31 (line 218) | RISCV_REG_F31 = 189
  constant RISCV_REG_PC (line 219) | RISCV_REG_PC = 190
  constant RISCV_REG_PRIV (line 220) | RISCV_REG_PRIV = 191
  constant RISCV_REG_ENDING (line 221) | RISCV_REG_ENDING = 192
  constant RISCV_REG_ZERO (line 224) | RISCV_REG_ZERO = 1
  constant RISCV_REG_RA (line 225) | RISCV_REG_RA = 2
  constant RISCV_REG_SP (line 226) | RISCV_REG_SP = 3
  constant RISCV_REG_GP (line 227) | RISCV_REG_GP = 4
  constant RISCV_REG_TP (line 228) | RISCV_REG_TP = 5
  constant RISCV_REG_T0 (line 229) | RISCV_REG_T0 = 6
  constant RISCV_REG_T1 (line 230) | RISCV_REG_T1 = 7
  constant RISCV_REG_T2 (line 231) | RISCV_REG_T2 = 8
  constant RISCV_REG_S0 (line 232) | RISCV_REG_S0 = 9
  constant RISCV_REG_FP (line 233) | RISCV_REG_FP = 9
  constant RISCV_REG_S1 (line 234) | RISCV_REG_S1 = 10
  constant RISCV_REG_A0 (line 235) | RISCV_REG_A0 = 11
  constant RISCV_REG_A1 (line 236) | RISCV_REG_A1 = 12
  constant RISCV_REG_A2 (line 237) | RISCV_REG_A2 = 13
  constant RISCV_REG_A3 (line 238) | RISCV_REG_A3 = 14
  constant RISCV_REG_A4 (line 239) | RISCV_REG_A4 = 15
  constant RISCV_REG_A5 (line 240) | RISCV_REG_A5 = 16
  constant RISCV_REG_A6 (line 241) | RISCV_REG_A6 = 17
  constant RISCV_REG_A7 (line 242) | RISCV_REG_A7 = 18
  constant RISCV_REG_S2 (line 243) | RISCV_REG_S2 = 19
  constant RISCV_REG_S3 (line 244) | RISCV_REG_S3 = 20
  constant RISCV_REG_S4 (line 245) | RISCV_REG_S4 = 21
  constant RISCV_REG_S5 (line 246) | RISCV_REG_S5 = 22
  constant RISCV_REG_S6 (line 247) | RISCV_REG_S6 = 23
  constant RISCV_REG_S7 (line 248) | RISCV_REG_S7 = 24
  constant RISCV_REG_S8 (line 249) | RISCV_REG_S8 = 25
  constant RISCV_REG_S9 (line 250) | RISCV_REG_S9 = 26
  constant RISCV_REG_S10 (line 251) | RISCV_REG_S10 = 27
  constant RISCV_REG_S11 (line 252) | RISCV_REG_S11 = 28
  constant RISCV_REG_T3 (line 253) | RISCV_REG_T3 = 29
  constant RISCV_REG_T4 (line 254) | RISCV_REG_T4 = 30
  constant RISCV_REG_T5 (line 255) | RISCV_REG_T5 = 31
  constant RISCV_REG_T6 (line 256) | RISCV_REG_T6 = 32
  constant RISCV_REG_FT0 (line 257) | RISCV_REG_FT0 = 158
  constant RISCV_REG_FT1 (line 258) | RISCV_REG_FT1 = 159
  constant RISCV_REG_FT2 (line 259) | RISCV_REG_FT2 = 160
  constant RISCV_REG_FT3 (line 260) | RISCV_REG_FT3 = 161
  constant RISCV_REG_FT4 (line 261) | RISCV_REG_FT4 = 162
  constant RISCV_REG_FT5 (line 262) | RISCV_REG_FT5 = 163
  constant RISCV_REG_FT6 (line 263) | RISCV_REG_FT6 = 164
  constant RISCV_REG_FT7 (line 264) | RISCV_REG_FT7 = 165
  constant RISCV_REG_FS0 (line 265) | RISCV_REG_FS0 = 166
  constant RISCV_REG_FS1 (line 266) | RISCV_REG_FS1 = 167
  constant RISCV_REG_FA0 (line 267) | RISCV_REG_FA0 = 168
  constant RISCV_REG_FA1 (line 268) | RISCV_REG_FA1 = 169
  constant RISCV_REG_FA2 (line 269) | RISCV_REG_FA2 = 170
  constant RISCV_REG_FA3 (line 270) | RISCV_REG_FA3 = 171
  constant RISCV_REG_FA4 (line 271) | RISCV_REG_FA4 = 172
  constant RISCV_REG_FA5 (line 272) | RISCV_REG_FA5 = 173
  constant RISCV_REG_FA6 (line 273) | RISCV_REG_FA6 = 174
  constant RISCV_REG_FA7 (line 274) | RISCV_REG_FA7 = 175
  constant RISCV_REG_FS2 (line 275) | RISCV_REG_FS2 = 176
  constant RISCV_REG_FS3 (line 276) | RISCV_REG_FS3 = 177
  constant RISCV_REG_FS4 (line 277) | RISCV_REG_FS4 = 178
  constant RISCV_REG_FS5 (line 278) | RISCV_REG_FS5 = 179
  constant RISCV_REG_FS6 (line 279) | RISCV_REG_FS6 = 180
  constant RISCV_REG_FS7 (line 280) | RISCV_REG_FS7 = 181
  constant RISCV_REG_FS8 (line 281) | RISCV_REG_FS8 = 182
  constant RISCV_REG_FS9 (line 282) | RISCV_REG_FS9 = 183
  constant RISCV_REG_FS10 (line 283) | RISCV_REG_FS10 = 184
  constant RISCV_REG_FS11 (line 284) | RISCV_REG_FS11 = 185
  constant RISCV_REG_FT8 (line 285) | RISCV_REG_FT8 = 186
  constant RISCV_REG_FT9 (line 286) | RISCV_REG_FT9 = 187
  constant RISCV_REG_FT10 (line 287) | RISCV_REG_FT10 = 188
  constant RISCV_REG_FT11 (line 288) | RISCV_REG_FT11 = 189

FILE: bindings/go/unicorn/s390x_const.go
  constant CPU_S390X_Z900 (line 7) | CPU_S390X_Z900 = 0
  constant CPU_S390X_Z900_2 (line 8) | CPU_S390X_Z900_2 = 1
  constant CPU_S390X_Z900_3 (line 9) | CPU_S390X_Z900_3 = 2
  constant CPU_S390X_Z800 (line 10) | CPU_S390X_Z800 = 3
  constant CPU_S390X_Z990 (line 11) | CPU_S390X_Z990 = 4
  constant CPU_S390X_Z990_2 (line 12) | CPU_S390X_Z990_2 = 5
  constant CPU_S390X_Z990_3 (line 13) | CPU_S390X_Z990_3 = 6
  constant CPU_S390X_Z890 (line 14) | CPU_S390X_Z890 = 7
  constant CPU_S390X_Z990_4 (line 15) | CPU_S390X_Z990_4 = 8
  constant CPU_S390X_Z890_2 (line 16) | CPU_S390X_Z890_2 = 9
  constant CPU_S390X_Z990_5 (line 17) | CPU_S390X_Z990_5 = 10
  constant CPU_S390X_Z890_3 (line 18) | CPU_S390X_Z890_3 = 11
  constant CPU_S390X_Z9EC (line 19) | CPU_S390X_Z9EC = 12
  constant CPU_S390X_Z9EC_2 (line 20) | CPU_S390X_Z9EC_2 = 13
  constant CPU_S390X_Z9BC (line 21) | CPU_S390X_Z9BC = 14
  constant CPU_S390X_Z9EC_3 (line 22) | CPU_S390X_Z9EC_3 = 15
  constant CPU_S390X_Z9BC_2 (line 23) | CPU_S390X_Z9BC_2 = 16
  constant CPU_S390X_Z10EC (line 24) | CPU_S390X_Z10EC = 17
  constant CPU_S390X_Z10EC_2 (line 25) | CPU_S390X_Z10EC_2 = 18
  constant CPU_S390X_Z10BC (line 26) | CPU_S390X_Z10BC = 19
  constant CPU_S390X_Z10EC_3 (line 27) | CPU_S390X_Z10EC_3 = 20
  constant CPU_S390X_Z10BC_2 (line 28) | CPU_S390X_Z10BC_2 = 21
  constant CPU_S390X_Z196 (line 29) | CPU_S390X_Z196 = 22
  constant CPU_S390X_Z196_2 (line 30) | CPU_S390X_Z196_2 = 23
  constant CPU_S390X_Z114 (line 31) | CPU_S390X_Z114 = 24
  constant CPU_S390X_ZEC12 (line 32) | CPU_S390X_ZEC12 = 25
  constant CPU_S390X_ZEC12_2 (line 33) | CPU_S390X_ZEC12_2 = 26
  constant CPU_S390X_ZBC12 (line 34) | CPU_S390X_ZBC12 = 27
  constant CPU_S390X_Z13 (line 35) | CPU_S390X_Z13 = 28
  constant CPU_S390X_Z13_2 (line 36) | CPU_S390X_Z13_2 = 29
  constant CPU_S390X_Z13S (line 37) | CPU_S390X_Z13S = 30
  constant CPU_S390X_Z14 (line 38) | CPU_S390X_Z14 = 31
  constant CPU_S390X_Z14_2 (line 39) | CPU_S390X_Z14_2 = 32
  constant CPU_S390X_Z14ZR1 (line 40) | CPU_S390X_Z14ZR1 = 33
  constant CPU_S390X_GEN15A (line 41) | CPU_S390X_GEN15A = 34
  constant CPU_S390X_GEN15B (line 42) | CPU_S390X_GEN15B = 35
  constant CPU_S390X_QEMU (line 43) | CPU_S390X_QEMU = 36
  constant CPU_S390X_MAX (line 44) | CPU_S390X_MAX = 37
  constant CPU_S390X_ENDING (line 45) | CPU_S390X_ENDING = 38
  constant S390X_REG_INVALID (line 49) | S390X_REG_INVALID = 0
  constant S390X_REG_R0 (line 52) | S390X_REG_R0 = 1
  constant S390X_REG_R1 (line 53) | S390X_REG_R1 = 2
  constant S390X_REG_R2 (line 54) | S390X_REG_R2 = 3
  constant S390X_REG_R3 (line 55) | S390X_REG_R3 = 4
  constant S390X_REG_R4 (line 56) | S390X_REG_R4 = 5
  constant S390X_REG_R5 (line 57) | S390X_REG_R5 = 6
  constant S390X_REG_R6 (line 58) | S390X_REG_R6 = 7
  constant S390X_REG_R7 (line 59) | S390X_REG_R7 = 8
  constant S390X_REG_R8 (line 60) | S390X_REG_R8 = 9
  constant S390X_REG_R9 (line 61) | S390X_REG_R9 = 10
  constant S390X_REG_R10 (line 62) | S390X_REG_R10 = 11
  constant S390X_REG_R11 (line 63) | S390X_REG_R11 = 12
  constant S390X_REG_R12 (line 64) | S390X_REG_R12 = 13
  constant S390X_REG_R13 (line 65) | S390X_REG_R13 = 14
  constant S390X_REG_R14 (line 66) | S390X_REG_R14 = 15
  constant S390X_REG_R15 (line 67) | S390X_REG_R15 = 16
  constant S390X_REG_F0 (line 70) | S390X_REG_F0 = 17
  constant S390X_REG_F1 (line 71) | S390X_REG_F1 = 18
  constant S390X_REG_F2 (line 72) | S390X_REG_F2 = 19
  constant S390X_REG_F3 (line 73) | S390X_REG_F3 = 20
  constant S390X_REG_F4 (line 74) | S390X_REG_F4 = 21
  constant S390X_REG_F5 (line 75) | S390X_REG_F5 = 22
  constant S390X_REG_F6 (line 76) | S390X_REG_F6 = 23
  constant S390X_REG_F7 (line 77) | S390X_REG_F7 = 24
  constant S390X_REG_F8 (line 78) | S390X_REG_F8 = 25
  constant S390X_REG_F9 (line 79) | S390X_REG_F9 = 26
  constant S390X_REG_F10 (line 80) | S390X_REG_F10 = 27
  constant S390X_REG_F11 (line 81) | S390X_REG_F11 = 28
  constant S390X_REG_F12 (line 82) | S390X_REG_F12 = 29
  constant S390X_REG_F13 (line 83) | S390X_REG_F13 = 30
  constant S390X_REG_F14 (line 84) | S390X_REG_F14 = 31
  constant S390X_REG_F15 (line 85) | S390X_REG_F15 = 32
  constant S390X_REG_F16 (line 88) | S390X_REG_F16 = 33
  constant S390X_REG_F17 (line 89) | S390X_REG_F17 = 34
  constant S390X_REG_F18 (line 90) | S390X_REG_F18 = 35
  constant S390X_REG_F19 (line 91) | S390X_REG_F19 = 36
  constant S390X_REG_F20 (line 92) | S390X_REG_F20 = 37
  constant S390X_REG_F21 (line 93) | S390X_REG_F21 = 38
  constant S390X_REG_F22 (line 94) | S390X_REG_F22 = 39
  constant S390X_REG_F23 (line 95) | S390X_REG_F23 = 40
  constant S390X_REG_F24 (line 96) | S390X_REG_F24 = 41
  constant S390X_REG_F25 (line 97) | S390X_REG_F25 = 42
  constant S390X_REG_F26 (line 98) | S390X_REG_F26 = 43
  constant S390X_REG_F27 (line 99) | S390X_REG_F27 = 44
  constant S390X_REG_F28 (line 100) | S390X_REG_F28 = 45
  constant S390X_REG_F29 (line 101) | S390X_REG_F29 = 46
  constant S390X_REG_F30 (line 102) | S390X_REG_F30 = 47
  constant S390X_REG_F31 (line 103) | S390X_REG_F31 = 48
  constant S390X_REG_A0 (line 106) | S390X_REG_A0 = 49
  constant S390X_REG_A1 (line 107) | S390X_REG_A1 = 50
  constant S390X_REG_A2 (line 108) | S390X_REG_A2 = 51
  constant S390X_REG_A3 (line 109) | S390X_REG_A3 = 52
  constant S390X_REG_A4 (line 110) | S390X_REG_A4 = 53
  constant S390X_REG_A5 (line 111) | S390X_REG_A5 = 54
  constant S390X_REG_A6 (line 112) | S390X_REG_A6 = 55
  constant S390X_REG_A7 (line 113) | S390X_REG_A7 = 56
  constant S390X_REG_A8 (line 114) | S390X_REG_A8 = 57
  constant S390X_REG_A9 (line 115) | S390X_REG_A9 = 58
  constant S390X_REG_A10 (line 116) | S390X_REG_A10 = 59
  constant S390X_REG_A11 (line 117) | S390X_REG_A11 = 60
  constant S390X_REG_A12 (line 118) | S390X_REG_A12 = 61
  constant S390X_REG_A13 (line 119) | S390X_REG_A13 = 62
  constant S390X_REG_A14 (line 120) | S390X_REG_A14 = 63
  constant S390X_REG_A15 (line 121) | S390X_REG_A15 = 64
  constant S390X_REG_PC (line 122) | S390X_REG_PC = 65
  constant S390X_REG_PSWM (line 123) | S390X_REG_PSWM = 66
  constant S390X_REG_F0_HI (line 126) | S390X_REG_F0_HI = 67
  constant S390X_REG_F1_HI (line 127) | S390X_REG_F1_HI = 68
  constant S390X_REG_F2_HI (line 128) | S390X_REG_F2_HI = 69
  constant S390X_REG_F3_HI (line 129) | S390X_REG_F3_HI = 70
  constant S390X_REG_F4_HI (line 130) | S390X_REG_F4_HI = 71
  constant S390X_REG_F5_HI (line 131) | S390X_REG_F5_HI = 72
  constant S390X_REG_F6_HI (line 132) | S390X_REG_F6_HI = 73
  constant S390X_REG_F7_HI (line 133) | S390X_REG_F7_HI = 74
  constant S390X_REG_F8_HI (line 134) | S390X_REG_F8_HI = 75
  constant S390X_REG_F9_HI (line 135) | S390X_REG_F9_HI = 76
  constant S390X_REG_F10_HI (line 136) | S390X_REG_F10_HI = 77
  constant S390X_REG_F11_HI (line 137) | S390X_REG_F11_HI = 78
  constant S390X_REG_F12_HI (line 138) | S390X_REG_F12_HI = 79
  constant S390X_REG_F13_HI (line 139) | S390X_REG_F13_HI = 80
  constant S390X_REG_F14_HI (line 140) | S390X_REG_F14_HI = 81
  constant S390X_REG_F15_HI (line 141) | S390X_REG_F15_HI = 82
  constant S390X_REG_F16_HI (line 142) | S390X_REG_F16_HI = 83
  constant S390X_REG_F17_HI (line 143) | S390X_REG_F17_HI = 84
  constant S390X_REG_F18_HI (line 144) | S390X_REG_F18_HI = 85
  constant S390X_REG_F19_HI (line 145) | S390X_REG_F19_HI = 86
  constant S390X_REG_F20_HI (line 146) | S390X_REG_F20_HI = 87
  constant S390X_REG_F21_HI (line 147) | S390X_REG_F21_HI = 88
  constant S390X_REG_F22_HI (line 148) | S390X_REG_F22_HI = 89
  constant S390X_REG_F23_HI (line 149) | S390X_REG_F23_HI = 90
  constant S390X_REG_F24_HI (line 150) | S390X_REG_F24_HI = 91
  constant S390X_REG_F25_HI (line 151) | S390X_REG_F25_HI = 92
  constant S390X_REG_F26_HI (line 152) | S390X_REG_F26_HI = 93
  constant S390X_REG_F27_HI (line 153) | S390X_REG_F27_HI = 94
  constant S390X_REG_F28_HI (line 154) | S390X_REG_F28_HI = 95
  constant S390X_REG_F29_HI (line 155) | S390X_REG_F29_HI = 96
  constant S390X_REG_F30_HI (line 156) | S390X_REG_F30_HI = 97
  constant S390X_REG_F31_HI (line 157) | S390X_REG_F31_HI = 98
  constant S390X_REG_FPC (line 160) | S390X_REG_FPC = 99
  constant S390X_REG_CR0 (line 163) | S390X_REG_CR0 = 100
  constant S390X_REG_CR1 (line 164) | S390X_REG_CR1 = 101
  constant S390X_REG_CR2 (line 165) | S390X_REG_CR2 = 102
  constant S390X_REG_CR3 (line 166) | S390X_REG_CR3 = 103
  constant S390X_REG_CR4 (line 167) | S390X_REG_CR4 = 104
  constant S390X_REG_CR5 (line 168) | S390X_REG_CR5 = 105
  constant S390X_REG_CR6 (line 169) | S390X_REG_CR6 = 106
  constant S390X_REG_CR7 (line 170) | S390X_REG_CR7 = 107
  constant S390X_REG_CR8 (line 171) | S390X_REG_CR8 = 108
  constant S390X_REG_CR9 (line 172) | S390X_REG_CR9 = 109
  constant S390X_REG_CR10 (line 173) | S390X_REG_CR10 = 110
  constant S390X_REG_CR11 (line 174) | S390X_REG_CR11 = 111
  constant S390X_REG_CR12 (line 175) | S390X_REG_CR12 = 112
  constant S390X_REG_CR13 (line 176) | S390X_REG_CR13 = 113
  constant S390X_REG_CR14 (line 177) | S390X_REG_CR14 = 114
  constant S390X_REG_CR15 (line 178) | S390X_REG_CR15 = 115
  constant S390X_REG_ENDING (line 179) | S390X_REG_ENDING = 116

FILE: bindings/go/unicorn/sparc_const.go
  constant CPU_SPARC32_FUJITSU_MB86904 (line 7) | CPU_SPARC32_FUJITSU_MB86904 = 0
  constant CPU_SPARC32_FUJITSU_MB86907 (line 8) | CPU_SPARC32_FUJITSU_MB86907 = 1
  constant CPU_SPARC32_TI_MICROSPARC_I (line 9) | CPU_SPARC32_TI_MICROSPARC_I = 2
  constant CPU_SPARC32_TI_MICROSPARC_II (line 10) | CPU_SPARC32_TI_MICROSPARC_II = 3
  constant CPU_SPARC32_TI_MICROSPARC_IIEP (line 11) | CPU_SPARC32_TI_MICROSPARC_IIEP = 4
  constant CPU_SPARC32_TI_SUPERSPARC_40 (line 12) | CPU_SPARC32_TI_SUPERSPARC_40 = 5
  constant CPU_SPARC32_TI_SUPERSPARC_50 (line 13) | CPU_SPARC32_TI_SUPERSPARC_50 = 6
  constant CPU_SPARC32_TI_SUPERSPARC_51 (line 14) | CPU_SPARC32_TI_SUPERSPARC_51 = 7
  constant CPU_SPARC32_TI_SUPERSPARC_60 (line 15) | CPU_SPARC32_TI_SUPERSPARC_60 = 8
  constant CPU_SPARC32_TI_SUPERSPARC_61 (line 16) | CPU_SPARC32_TI_SUPERSPARC_61 = 9
  constant CPU_SPARC32_TI_SUPERSPARC_II (line 17) | CPU_SPARC32_TI_SUPERSPARC_II = 10
  constant CPU_SPARC32_LEON2 (line 18) | CPU_SPARC32_LEON2 = 11
  constant CPU_SPARC32_LEON3 (line 19) | CPU_SPARC32_LEON3 = 12
  constant CPU_SPARC32_ENDING (line 20) | CPU_SPARC32_ENDING = 13
  constant CPU_SPARC64_FUJITSU (line 24) | CPU_SPARC64_FUJITSU = 0
  constant CPU_SPARC64_FUJITSU_III (line 25) | CPU_SPARC64_FUJITSU_III = 1
  constant CPU_SPARC64_FUJITSU_IV (line 26) | CPU_SPARC64_FUJITSU_IV = 2
  constant CPU_SPARC64_FUJITSU_V (line 27) | CPU_SPARC64_FUJITSU_V = 3
  constant CPU_SPARC64_TI_ULTRASPARC_I (line 28) | CPU_SPARC64_TI_ULTRASPARC_I = 4
  constant CPU_SPARC64_TI_ULTRASPARC_II (line 29) | CPU_SPARC64_TI_ULTRASPARC_II = 5
  constant CPU_SPARC64_TI_ULTRASPARC_III (line 30) | CPU_SPARC64_TI_ULTRASPARC_III = 6
  constant CPU_SPARC64_TI_ULTRASPARC_IIE (line 31) | CPU_SPARC64_TI_ULTRASPARC_IIE = 7
  constant CPU_SPARC64_SUN_ULTRASPARC_III (line 32) | CPU_SPARC64_SUN_ULTRASPARC_III = 8
  constant CPU_SPARC64_SUN_ULTRASPARC_III_CU (line 33) | CPU_SPARC64_SUN_ULTRASPARC_III_CU = 9
  constant CPU_SPARC64_SUN_ULTRASPARC_IIII (line 34) | CPU_SPARC64_SUN_ULTRASPARC_IIII = 10
  constant CPU_SPARC64_SUN_ULTRASPARC_IV (line 35) | CPU_SPARC64_SUN_ULTRASPARC_IV = 11
  constant CPU_SPARC64_SUN_ULTRASPARC_IV_PLUS (line 36) | CPU_SPARC64_SUN_ULTRASPARC_IV_PLUS = 12
  constant CPU_SPARC64_SUN_ULTRASPARC_IIII_PLUS (line 37) | CPU_SPARC64_SUN_ULTRASPARC_IIII_PLUS = 13
  constant CPU_SPARC64_SUN_ULTRASPARC_T1 (line 38) | CPU_SPARC64_SUN_ULTRASPARC_T1 = 14
  constant CPU_SPARC64_SUN_ULTRASPARC_T2 (line 39) | CPU_SPARC64_SUN_ULTRASPARC_T2 = 15
  constant CPU_SPARC64_NEC_ULTRASPARC_I (line 40) | CPU_SPARC64_NEC_ULTRASPARC_I = 16
  constant CPU_SPARC64_ENDING (line 41) | CPU_SPARC64_ENDING = 17
  constant SPARC_REG_INVALID (line 45) | SPARC_REG_INVALID = 0
  constant SPARC_REG_F0 (line 46) | SPARC_REG_F0 = 1
  constant SPARC_REG_F1 (line 47) | SPARC_REG_F1 = 2
  constant SPARC_REG_F2 (line 48) | SPARC_REG_F2 = 3
  constant SPARC_REG_F3 (line 49) | SPARC_REG_F3 = 4
  constant SPARC_REG_F4 (line 50) | SPARC_REG_F4 = 5
  constant SPARC_REG_F5 (line 51) | SPARC_REG_F5 = 6
  constant SPARC_REG_F6 (line 52) | SPARC_REG_F6 = 7
  constant SPARC_REG_F7 (line 53) | SPARC_REG_F7 = 8
  constant SPARC_REG_F8 (line 54) | SPARC_REG_F8 = 9
  constant SPARC_REG_F9 (line 55) | SPARC_REG_F9 = 10
  constant SPARC_REG_F10 (line 56) | SPARC_REG_F10 = 11
  constant SPARC_REG_F11 (line 57) | SPARC_REG_F11 = 12
  constant SPARC_REG_F12 (line 58) | SPARC_REG_F12 = 13
  constant SPARC_REG_F13 (line 59) | SPARC_REG_F13 = 14
  constant SPARC_REG_F14 (line 60) | SPARC_REG_F14 = 15
  constant SPARC_REG_F15 (line 61) | SPARC_REG_F15 = 16
  constant SPARC_REG_F16 (line 62) | SPARC_REG_F16 = 17
  constant SPARC_REG_F17 (line 63) | SPARC_REG_F17 = 18
  constant SPARC_REG_F18 (line 64) | SPARC_REG_F18 = 19
  constant SPARC_REG_F19 (line 65) | SPARC_REG_F19 = 20
  constant SPARC_REG_F20 (line 66) | SPARC_REG_F20 = 21
  constant SPARC_REG_F21 (line 67) | SPARC_REG_F21 = 22
  constant SPARC_REG_F22 (line 68) | SPARC_REG_F22 = 23
  constant SPARC_REG_F23 (line 69) | SPARC_REG_F23 = 24
  constant SPARC_REG_F24 (line 70) | SPARC_REG_F24 = 25
  constant SPARC_REG_F25 (line 71) | SPARC_REG_F25 = 26
  constant SPARC_REG_F26 (line 72) | SPARC_REG_F26 = 27
  constant SPARC_REG_F27 (line 73) | SPARC_REG_F27 = 28
  constant SPARC_REG_F28 (line 74) | SPARC_REG_F28 = 29
  constant SPARC_REG_F29 (line 75) | SPARC_REG_F29 = 30
  constant SPARC_REG_F30 (line 76) | SPARC_REG_F30 = 31
  constant SPARC_REG_F31 (line 77) | SPARC_REG_F31 = 32
  constant SPARC_REG_F32 (line 78) | SPARC_REG_F32 = 33
  constant SPARC_REG_F34 (line 79) | SPARC_REG_F34 = 34
  constant SPARC_REG_F36 (line 80) | SPARC_REG_F36 = 35
  constant SPARC_REG_F38 (line 81) | SPARC_REG_F38 = 36
  constant SPARC_REG_F40 (line 82) | SPARC_REG_F40 = 37
  constant SPARC_REG_F42 (line 83) | SPARC_REG_F42 = 38
  constant SPARC_REG_F44 (line 84) | SPARC_REG_F44 = 39
  constant SPARC_REG_F46 (line 85) | SPARC_REG_F46 = 40
  constant SPARC_REG_F48 (line 86) | SPARC_REG_F48 = 41
  constant SPARC_REG_F50 (line 87) | SPARC_REG_F50 = 42
  constant SPARC_REG_F52 (line 88) | SPARC_REG_F52 = 43
  constant SPARC_REG_F54 (line 89) | SPARC_REG_F54 = 44
  constant SPARC_REG_F56 (line 90) | SPARC_REG_F56 = 45
  constant SPARC_REG_F58 (line 91) | SPARC_REG_F58 = 46
  constant SPARC_REG_F60 (line 92) | SPARC_REG_F60 = 47
  constant SPARC_REG_F62 (line 93) | SPARC_REG_F62 = 48
  constant SPARC_REG_FCC0 (line 94) | SPARC_REG_FCC0 = 49
  constant SPARC_REG_FCC1 (line 95) | SPARC_REG_FCC1 = 50
  constant SPARC_REG_FCC2 (line 96) | SPARC_REG_FCC2 = 51
  constant SPARC_REG_FCC3 (line 97) | SPARC_REG_FCC3 = 52
  constant SPARC_REG_G0 (line 98) | SPARC_REG_G0 = 53
  constant SPARC_REG_G1 (line 99) | SPARC_REG_G1 = 54
  constant SPARC_REG_G2 (line 100) | SPARC_REG_G2 = 55
  constant SPARC_REG_G3 (line 101) | SPARC_REG_G3 = 56
  constant SPARC_REG_G4 (line 102) | SPARC_REG_G4 = 57
  constant SPARC_REG_G5 (line 103) | SPARC_REG_G5 = 58
  constant SPARC_REG_G6 (line 104) | SPARC_REG_G6 = 59
  constant SPARC_REG_G7 (line 105) | SPARC_REG_G7 = 60
  constant SPARC_REG_I0 (line 106) | SPARC_REG_I0 = 61
  constant SPARC_REG_I1 (line 107) | SPARC_REG_I1 = 62
  constant SPARC_REG_I2 (line 108) | SPARC_REG_I2 = 63
  constant SPARC_REG_I3 (line 109) | SPARC_REG_I3 = 64
  constant SPARC_REG_I4 (line 110) | SPARC_REG_I4 = 65
  constant SPARC_REG_I5 (line 111) | SPARC_REG_I5 = 66
  constant SPARC_REG_FP (line 112) | SPARC_REG_FP = 67
  constant SPARC_REG_I7 (line 113) | SPARC_REG_I7 = 68
  constant SPARC_REG_ICC (line 114) | SPARC_REG_ICC = 69
  constant SPARC_REG_L0 (line 115) | SPARC_REG_L0 = 70
  constant SPARC_REG_L1 (line 116) | SPARC_REG_L1 = 71
  constant SPARC_REG_L2 (line 117) | SPARC_REG_L2 = 72
  constant SPARC_REG_L3 (line 118) | SPARC_REG_L3 = 73
  constant SPARC_REG_L4 (line 119) | SPARC_REG_L4 = 74
  constant SPARC_REG_L5 (line 120) | SPARC_REG_L5 = 75
  constant SPARC_REG_L6 (line 121) | SPARC_REG_L6 = 76
  constant SPARC_REG_L7 (line 122) | SPARC_REG_L7 = 77
  constant SPARC_REG_O0 (line 123) | SPARC_REG_O0 = 78
  constant SPARC_REG_O1 (line 124) | SPARC_REG_O1 = 79
  constant SPARC_REG_O2 (line 125) | SPARC_REG_O2 = 80
  constant SPARC_REG_O3 (line 126) | SPARC_REG_O3 = 81
  constant SPARC_REG_O4 (line 127) | SPARC_REG_O4 = 82
  constant SPARC_REG_O5 (line 128) | SPARC_REG_O5 = 83
  constant SPARC_REG_SP (line 129) | SPARC_REG_SP = 84
  constant SPARC_REG_O7 (line 130) | SPARC_REG_O7 = 85
  constant SPARC_REG_Y (line 131) | SPARC_REG_Y = 86
  constant SPARC_REG_XCC (line 132) | SPARC_REG_XCC = 87
  constant SPARC_REG_PC (line 133) | SPARC_REG_PC = 88
  constant SPARC_REG_PSR (line 134) | SPARC_REG_PSR = 89
  constant SPARC_REG_ENDING (line 135) | SPARC_REG_ENDING = 90
  constant SPARC_REG_O6 (line 136) | SPARC_REG_O6 = 84
  constant SPARC_REG_I6 (line 137) | SPARC_REG_I6 = 67

FILE: bindings/go/unicorn/tricore_const.go
  constant CPU_TRICORE_TC1796 (line 7) | CPU_TRICORE_TC1796 = 0
  constant CPU_TRICORE_TC1797 (line 8) | CPU_TRICORE_TC1797 = 1
  constant CPU_TRICORE_TC27X (line 9) | CPU_TRICORE_TC27X = 2
  constant CPU_TRICORE_ENDING (line 10) | CPU_TRICORE_ENDING = 3
  constant TRICORE_REG_INVALID (line 14) | TRICORE_REG_INVALID = 0
  constant TRICORE_REG_A0 (line 15) | TRICORE_REG_A0 = 1
  constant TRICORE_REG_A1 (line 16) | TRICORE_REG_A1 = 2
  constant TRICORE_REG_A2 (line 17) | TRICORE_REG_A2 = 3
  constant TRICORE_REG_A3 (line 18) | TRICORE_REG_A3 = 4
  constant TRICORE_REG_A4 (line 19) | TRICORE_REG_A4 = 5
  constant TRICORE_REG_A5 (line 20) | TRICORE_REG_A5 = 6
  constant TRICORE_REG_A6 (line 21) | TRICORE_REG_A6 = 7
  constant TRICORE_REG_A7 (line 22) | TRICORE_REG_A7 = 8
  constant TRICORE_REG_A8 (line 23) | TRICORE_REG_A8 = 9
  constant TRICORE_REG_A9 (line 24) | TRICORE_REG_A9 = 10
  constant TRICORE_REG_A10 (line 25) | TRICORE_REG_A10 = 11
  constant TRICORE_REG_A11 (line 26) | TRICORE_REG_A11 = 12
  constant TRICORE_REG_A12 (line 27) | TRICORE_REG_A12 = 13
  constant TRICORE_REG_A13 (line 28) | TRICORE_REG_A13 = 14
  constant TRICORE_REG_A14 (line 29) | TRICORE_REG_A14 = 15
  constant TRICORE_REG_A15 (line 30) | TRICORE_REG_A15 = 16
  constant TRICORE_REG_D0 (line 31) | TRICORE_REG_D0 = 17
  constant TRICORE_REG_D1 (line 32) | TRICORE_REG_D1 = 18
  constant TRICORE_REG_D2 (line 33) | TRICORE_REG_D2 = 19
  constant TRICORE_REG_D3 (line 34) | TRICORE_REG_D3 = 20
  constant TRICORE_REG_D4 (line 35) | TRICORE_REG_D4 = 21
  constant TRICORE_REG_D5 (line 36) | TRICORE_REG_D5 = 22
  constant TRICORE_REG_D6 (line 37) | TRICORE_REG_D6 = 23
  constant TRICORE_REG_D7 (line 38) | TRICORE_REG_D7 = 24
  constant TRICORE_REG_D8 (line 39) | TRICORE_REG_D8 = 25
  constant TRICORE_REG_D9 (line 40) | TRICORE_REG_D9 = 26
  constant TRICORE_REG_D10 (line 41) | TRICORE_REG_D10 = 27
  constant TRICORE_REG_D11 (line 42) | TRICORE_REG_D11 = 28
  constant TRICORE_REG_D12 (line 43) | TRICORE_REG_D12 = 29
  constant TRICORE_REG_D13 (line 44) | TRICORE_REG_D13 = 30
  constant TRICORE_REG_D14 (line 45) | TRICORE_REG_D14 = 31
  constant TRICORE_REG_D15 (line 46) | TRICORE_REG_D15 = 32
  constant TRICORE_REG_PCXI (line 47) | TRICORE_REG_PCXI = 33
  constant TRICORE_REG_PSW (line 48) | TRICORE_REG_PSW = 34
  constant TRICORE_REG_PSW_USB_C (line 49) | TRICORE_REG_PSW_USB_C = 35
  constant TRICORE_REG_PSW_USB_V (line 50) | TRICORE_REG_PSW_USB_V = 36
  constant TRICORE_REG_PSW_USB_SV (line 51) | TRICORE_REG_PSW_USB_SV = 37
  constant TRICORE_REG_PSW_USB_AV (line 52) | TRICORE_REG_PSW_USB_AV = 38
  constant TRICORE_REG_PSW_USB_SAV (line 53) | TRICORE_REG_PSW_USB_SAV = 39
  constant TRICORE_REG_PC (line 54) | TRICORE_REG_PC = 40
  constant TRICORE_REG_SYSCON (line 55) | TRICORE_REG_SYSCON = 41
  constant TRICORE_REG_CPU_ID (line 56) | TRICORE_REG_CPU_ID = 42
  constant TRICORE_REG_BIV (line 57) | TRICORE_REG_BIV = 43
  constant TRICORE_REG_BTV (line 58) | TRICORE_REG_BTV = 44
  constant TRICORE_REG_ISP (line 59) | TRICORE_REG_ISP = 45
  constant TRICORE_REG_ICR (line 60) | TRICORE_REG_ICR = 46
  constant TRICORE_REG_FCX (line 61) | TRICORE_REG_FCX = 47
  constant TRICORE_REG_LCX (line 62) | TRICORE_REG_LCX = 48
  constant TRICORE_REG_COMPAT (line 63) | TRICORE_REG_COMPAT = 49
  constant TRICORE_REG_DPR0_U (line 64) | TRICORE_REG_DPR0_U = 50
  constant TRICORE_REG_DPR1_U (line 65) | TRICORE_REG_DPR1_U = 51
  constant TRICORE_REG_DPR2_U (line 66) | TRICORE_REG_DPR2_U = 52
  constant TRICORE_REG_DPR3_U (line 67) | TRICORE_REG_DPR3_U = 53
  constant TRICORE_REG_DPR0_L (line 68) | TRICORE_REG_DPR0_L = 54
  constant TRICORE_REG_DPR1_L (line 69) | TRICORE_REG_DPR1_L = 55
  constant TRICORE_REG_DPR2_L (line 70) | TRICORE_REG_DPR2_L = 56
  constant TRICORE_REG_DPR3_L (line 71) | TRICORE_REG_DPR3_L = 57
  constant TRICORE_REG_CPR0_U (line 72) | TRICORE_REG_CPR0_U = 58
  constant TRICORE_REG_CPR1_U (line 73) | TRICORE_REG_CPR1_U = 59
  constant TRICORE_REG_CPR2_U (line 74) | TRICORE_REG_CPR2_U = 60
  constant TRICORE_REG_CPR3_U (line 75) | TRICORE_REG_CPR3_U = 61
  constant TRICORE_REG_CPR0_L (line 76) | TRICORE_REG_CPR0_L = 62
  constant TRICORE_REG_CPR1_L (line 77) | TRICORE_REG_CPR1_L = 63
  constant TRICORE_REG_CPR2_L (line 78) | TRICORE_REG_CPR2_L = 64
  constant TRICORE_REG_CPR3_L (line 79) | TRICORE_REG_CPR3_L = 65
  constant TRICORE_REG_DPM0 (line 80) | TRICORE_REG_DPM0 = 66
  constant TRICORE_REG_DPM1 (line 81) | TRICORE_REG_DPM1 = 67
  constant TRICORE_REG_DPM2 (line 82) | TRICORE_REG_DPM2 = 68
  constant TRICORE_REG_DPM3 (line 83) | TRICORE_REG_DPM3 = 69
  constant TRICORE_REG_CPM0 (line 84) | TRICORE_REG_CPM0 = 70
  constant TRICORE_REG_CPM1 (line 85) | TRICORE_REG_CPM1 = 71
  constant TRICORE_REG_CPM2 (line 86) | TRICORE_REG_CPM2 = 72
  constant TRICORE_REG_CPM3 (line 87) | TRICORE_REG_CPM3 = 73
  constant TRICORE_REG_MMU_CON (line 88) | TRICORE_REG_MMU_CON = 74
  constant TRICORE_REG_MMU_ASI (line 89) | TRICORE_REG_MMU_ASI = 75
  constant TRICORE_REG_MMU_TVA (line 90) | TRICORE_REG_MMU_TVA = 76
  constant TRICORE_REG_MMU_TPA (line 91) | TRICORE_REG_MMU_TPA = 77
  constant TRICORE_REG_MMU_TPX (line 92) | TRICORE_REG_MMU_TPX = 78
  constant TRICORE_REG_MMU_TFA (line 93) | TRICORE_REG_MMU_TFA = 79
  constant TRICORE_REG_BMACON (line 94) | TRICORE_REG_BMACON = 80
  constant TRICORE_REG_SMACON (line 95) | TRICORE_REG_SMACON = 81
  constant TRICORE_REG_DIEAR (line 96) | TRICORE_REG_DIEAR = 82
  constant TRICORE_REG_DIETR (line 97) | TRICORE_REG_DIETR = 83
  constant TRICORE_REG_CCDIER (line 98) | TRICORE_REG_CCDIER = 84
  constant TRICORE_REG_MIECON (line 99) | TRICORE_REG_MIECON = 85
  constant TRICORE_REG_PIEAR (line 100) | TRICORE_REG_PIEAR = 86
  constant TRICORE_REG_PIETR (line 101) | TRICORE_REG_PIETR = 87
  constant TRICORE_REG_CCPIER (line 102) | TRICORE_REG_CCPIER = 88
  constant TRICORE_REG_DBGSR (line 103) | TRICORE_REG_DBGSR = 89
  constant TRICORE_REG_EXEVT (line 104) | TRICORE_REG_EXEVT = 90
  constant TRICORE_REG_CREVT (line 105) | TRICORE_REG_CREVT = 91
  constant TRICORE_REG_SWEVT (line 106) | TRICORE_REG_SWEVT = 92
  constant TRICORE_REG_TR0EVT (line 107) | TRICORE_REG_TR0EVT = 93
  constant TRICORE_REG_TR1EVT (line 108) | TRICORE_REG_TR1EVT = 94
  constant TRICORE_REG_DMS (line 109) | TRICORE_REG_DMS = 95
  constant TRICORE_REG_DCX (line 110) | TRICORE_REG_DCX = 96
  constant TRICORE_REG_DBGTCR (line 111) | TRICORE_REG_DBGTCR = 97
  constant TRICORE_REG_CCTRL (line 112) | TRICORE_REG_CCTRL = 98
  constant TRICORE_REG_CCNT (line 113) | TRICORE_REG_CCNT = 99
  constant TRICORE_REG_ICNT (line 114) | TRICORE_REG_ICNT = 100
  constant TRICORE_REG_M1CNT (line 115) | TRICORE_REG_M1CNT = 101
  constant TRICORE_REG_M2CNT (line 116) | TRICORE_REG_M2CNT = 102
  constant TRICORE_REG_M3CNT (line 117) | TRICORE_REG_M3CNT = 103
  constant TRICORE_REG_ENDING (line 118) | TRICORE_REG_ENDING = 104
  constant TRICORE_REG_GA0 (line 119) | TRICORE_REG_GA0 = 1
  constant TRICORE_REG_GA1 (line 120) | TRICORE_REG_GA1 = 2
  constant TRICORE_REG_GA8 (line 121) | TRICORE_REG_GA8 = 9
  constant TRICORE_REG_GA9 (line 122) | TRICORE_REG_GA9 = 10
  constant TRICORE_REG_SP (line 123) | TRICORE_REG_SP = 11
  constant TRICORE_REG_LR (line 124) | TRICORE_REG_LR = 12
  constant TRICORE_REG_IA (line 125) | TRICORE_REG_IA = 16
  constant TRICORE_REG_ID (line 126) | TRICORE_REG_ID = 32

FILE: bindings/go/unicorn/uc.c
  function uc_err (line 5) | uc_err uc_reg_read_batch_helper(uc_engine *handle, int *regs, uint64_t *...
  function uc_err (line 16) | uc_err uc_reg_write_batch_helper(uc_engine *handle, int *regs, uint64_t ...
  function uc_err (line 27) | uc_err uc_ctl_set_cpu_model_helper(uc_engine *handle, int model) {

FILE: bindings/go/unicorn/unicorn.go
  type UcError (line 15) | type UcError
    method Error (line 17) | func (u UcError) Error() string {
  function errReturn (line 21) | func errReturn(err C.uc_err) error {
  type MemRegion (line 28) | type MemRegion struct
  type Unicorn (line 33) | type Unicorn interface
  type uc (line 65) | type uc struct
    method Close (line 95) | func (u *uc) Close() (err error) {
    method StartWithOptions (line 109) | func (u *uc) StartWithOptions(begin, until uint64, options *UcOptions)...
    method Start (line 114) | func (u *uc) Start(begin, until uint64) error {
    method Stop (line 118) | func (u *uc) Stop() error {
    method RegWrite (line 122) | func (u *uc) RegWrite(reg int, value uint64) error {
    method RegRead (line 128) | func (u *uc) RegRead(reg int) (uint64, error) {
    method RegWriteBatch (line 134) | func (u *uc) RegWriteBatch(regs []int, vals []uint64) error {
    method RegReadBatch (line 151) | func (u *uc) RegReadBatch(regs []int) ([]uint64, error) {
    method MemRegions (line 166) | func (u *uc) MemRegions() ([]*MemRegion, error) {
    method MemWrite (line 186) | func (u *uc) MemWrite(addr uint64, data []byte) error {
    method MemReadInto (line 193) | func (u *uc) MemReadInto(dst []byte, addr uint64) error {
    method MemRead (line 200) | func (u *uc) MemRead(addr, size uint64) ([]byte, error) {
    method MemMapProt (line 205) | func (u *uc) MemMapProt(addr, size uint64, prot int) error {
    method MemMap (line 209) | func (u *uc) MemMap(addr, size uint64) error {
    method MemMapPtr (line 213) | func (u *uc) MemMapPtr(addr, size uint64, prot int, ptr unsafe.Pointer...
    method MemProtect (line 217) | func (u *uc) MemProtect(addr, size uint64, prot int) error {
    method MemUnmap (line 221) | func (u *uc) MemUnmap(addr, size uint64) error {
    method Query (line 225) | func (u *uc) Query(queryType int) (uint64, error) {
    method Handle (line 231) | func (u *uc) Handle() *C.uc_engine {
    method SetCPUModel (line 235) | func (u *uc) SetCPUModel(model int) error {
  type UcOptions (line 71) | type UcOptions struct
  function Version (line 75) | func Version() (int, int) {
  function NewUnicorn (line 81) | func NewUnicorn(arch, mode int) (Unicorn, error) {

FILE: bindings/go/unicorn/unicorn_const.go
  constant API_MAJOR (line 4) | API_MAJOR = 2
  constant API_MINOR (line 5) | API_MINOR = 1
  constant API_PATCH (line 6) | API_PATCH = 4
  constant API_EXTRA (line 7) | API_EXTRA = 255
  constant VERSION_MAJOR (line 8) | VERSION_MAJOR = 2
  constant VERSION_MINOR (line 9) | VERSION_MINOR = 1
  constant VERSION_PATCH (line 10) | VERSION_PATCH = 4
  constant VERSION_EXTRA (line 11) | VERSION_EXTRA = 255
  constant SECOND_SCALE (line 12) | SECOND_SCALE = 1000000
  constant MILISECOND_SCALE (line 13) | MILISECOND_SCALE = 1000
  constant ARCH_ARM (line 14) | ARCH_ARM = 1
  constant ARCH_ARM64 (line 15) | ARCH_ARM64 = 2
  constant ARCH_MIPS (line 16) | ARCH_MIPS = 3
  constant ARCH_X86 (line 17) | ARCH_X86 = 4
  constant ARCH_PPC (line 18) | ARCH_PPC = 5
  constant ARCH_SPARC (line 19) | ARCH_SPARC = 6
  constant ARCH_M68K (line 20) | ARCH_M68K = 7
  constant ARCH_RISCV (line 21) | ARCH_RISCV = 8
  constant ARCH_S390X (line 22) | ARCH_S390X = 9
  constant ARCH_TRICORE (line 23) | ARCH_TRICORE = 10
  constant ARCH_MAX (line 24) | ARCH_MAX = 11
  constant MODE_LITTLE_ENDIAN (line 26) | MODE_LITTLE_ENDIAN = 0
  constant MODE_BIG_ENDIAN (line 27) | MODE_BIG_ENDIAN = 1073741824
  constant MODE_ARM (line 29) | MODE_ARM = 0
  constant MODE_THUMB (line 30) | MODE_THUMB = 16
  constant MODE_MCLASS (line 31) | MODE_MCLASS = 32
  constant MODE_V8 (line 32) | MODE_V8 = 64
  constant MODE_ARMBE8 (line 33) | MODE_ARMBE8 = 1024
  constant MODE_ARM926 (line 34) | MODE_ARM926 = 128
  constant MODE_ARM946 (line 35) | MODE_ARM946 = 256
  constant MODE_ARM1176 (line 36) | MODE_ARM1176 = 512
  constant MODE_MICRO (line 37) | MODE_MICRO = 16
  constant MODE_MIPS3 (line 38) | MODE_MIPS3 = 32
  constant MODE_MIPS32R6 (line 39) | MODE_MIPS32R6 = 64
  constant MODE_MIPS32 (line 40) | MODE_MIPS32 = 4
  constant MODE_MIPS64 (line 41) | MODE_MIPS64 = 8
  constant MODE_16 (line 42) | MODE_16 = 2
  constant MODE_32 (line 43) | MODE_32 = 4
  constant MODE_64 (line 44) | MODE_64 = 8
  constant MODE_PPC32 (line 45) | MODE_PPC32 = 4
  constant MODE_PPC64 (line 46) | MODE_PPC64 = 8
  constant MODE_QPX (line 47) | MODE_QPX = 16
  constant MODE_SPARC32 (line 48) | MODE_SPARC32 = 4
  constant MODE_SPARC64 (line 49) | MODE_SPARC64 = 8
  constant MODE_V9 (line 50) | MODE_V9 = 16
  constant MODE_RISCV32 (line 51) | MODE_RISCV32 = 4
  constant MODE_RISCV64 (line 52) | MODE_RISCV64 = 8
  constant ERR_OK (line 54) | ERR_OK = 0
  constant ERR_NOMEM (line 55) | ERR_NOMEM = 1
  constant ERR_ARCH (line 56) | ERR_ARCH = 2
  constant ERR_HANDLE (line 57) | ERR_HANDLE = 3
  constant ERR_MODE (line 58) | ERR_MODE = 4
  constant ERR_VERSION (line 59) | ERR_VERSION = 5
  constant ERR_READ_UNMAPPED (line 60) | ERR_READ_UNMAPPED = 6
  constant ERR_WRITE_UNMAPPED (line 61) | ERR_WRITE_UNMAPPED = 7
  constant ERR_FETCH_UNMAPPED (line 62) | ERR_FETCH_UNMAPPED = 8
  constant ERR_HOOK (line 63) | ERR_HOOK = 9
  constant ERR_INSN_INVALID (line 64) | ERR_INSN_INVALID = 10
  constant ERR_MAP (line 65) | ERR_MAP = 11
  constant ERR_WRITE_PROT (line 66) | ERR_WRITE_PROT = 12
  constant ERR_READ_PROT (line 67) | ERR_READ_PROT = 13
  constant ERR_FETCH_PROT (line 68) | ERR_FETCH_PROT = 14
  constant ERR_ARG (line 69) | ERR_ARG = 15
  constant ERR_READ_UNALIGNED (line 70) | ERR_READ_UNALIGNED = 16
  constant ERR_WRITE_UNALIGNED (line 71) | ERR_WRITE_UNALIGNED = 17
  constant ERR_FETCH_UNALIGNED (line 72) | ERR_FETCH_UNALIGNED = 18
  constant ERR_HOOK_EXIST (line 73) | ERR_HOOK_EXIST = 19
  constant ERR_RESOURCE (line 74) | ERR_RESOURCE = 20
  constant ERR_EXCEPTION (line 75) | ERR_EXCEPTION = 21
  constant ERR_OVERFLOW (line 76) | ERR_OVERFLOW = 22
  constant PROT_NONE (line 78) | PROT_NONE = 0
  constant PROT_READ (line 79) | PROT_READ = 1
  constant PROT_WRITE (line 80) | PROT_WRITE = 2
  constant PROT_EXEC (line 81) | PROT_EXEC = 4
  constant PROT_ALL (line 82) | PROT_ALL = 7
  constant MEM_READ (line 83) | MEM_READ = 16
  constant MEM_WRITE (line 84) | MEM_WRITE = 17
  constant MEM_FETCH (line 85) | MEM_FETCH = 18
  constant MEM_READ_UNMAPPED (line 86) | MEM_READ_UNMAPPED = 19
  constant MEM_WRITE_UNMAPPED (line 87) | MEM_WRITE_UNMAPPED = 20
  constant MEM_FETCH_UNMAPPED (line 88) | MEM_FETCH_UNMAPPED = 21
  constant MEM_WRITE_PROT (line 89) | MEM_WRITE_PROT = 22
  constant MEM_READ_PROT (line 90) | MEM_READ_PROT = 23
  constant MEM_FETCH_PROT (line 91) | MEM_FETCH_PROT = 24
  constant MEM_READ_AFTER (line 92) | MEM_READ_AFTER = 25
  constant TCG_OP_SUB (line 94) | TCG_OP_SUB = 0
  constant TCG_OP_FLAG_CMP (line 95) | TCG_OP_FLAG_CMP = 1
  constant TCG_OP_FLAG_DIRECT (line 96) | TCG_OP_FLAG_DIRECT = 2
  constant HOOK_INTR (line 97) | HOOK_INTR = 1
  constant HOOK_INSN (line 98) | HOOK_INSN = 2
  constant HOOK_CODE (line 99) | HOOK_CODE = 4
  constant HOOK_BLOCK (line 100) | HOOK_BLOCK = 8
  constant HOOK_MEM_READ_UNMAPPED (line 101) | HOOK_MEM_READ_UNMAPPED = 16
  constant HOOK_MEM_WRITE_UNMAPPED (line 102) | HOOK_MEM_WRITE_UNMAPPED = 32
  constant HOOK_MEM_FETCH_UNMAPPED (line 103) | HOOK_MEM_FETCH_UNMAPPED = 64
  constant HOOK_MEM_READ_PROT (line 104) | HOOK_MEM_READ_PROT = 128
  constant HOOK_MEM_WRITE_PROT (line 105) | HOOK_MEM_WRITE_PROT = 256
  constant HOOK_MEM_FETCH_PROT (line 106) | HOOK_MEM_FETCH_PROT = 512
  constant HOOK_MEM_READ (line 107) | HOOK_MEM_READ = 1024
  constant HOOK_MEM_WRITE (line 108) | HOOK_MEM_WRITE = 2048
  constant HOOK_MEM_FETCH (line 109) | HOOK_MEM_FETCH = 4096
  constant HOOK_MEM_READ_AFTER (line 110) | HOOK_MEM_READ_AFTER = 8192
  constant HOOK_INSN_INVALID (line 111) | HOOK_INSN_INVALID = 16384
  constant HOOK_EDGE_GENERATED (line 112) | HOOK_EDGE_GENERATED = 32768
  constant HOOK_TCG_OPCODE (line 113) | HOOK_TCG_OPCODE = 65536
  constant HOOK_TLB_FILL (line 114) | HOOK_TLB_FILL = 131072
  constant HOOK_MEM_UNMAPPED (line 115) | HOOK_MEM_UNMAPPED = 112
  constant HOOK_MEM_PROT (line 116) | HOOK_MEM_PROT = 896
  constant HOOK_MEM_READ_INVALID (line 117) | HOOK_MEM_READ_INVALID = 144
  constant HOOK_MEM_WRITE_INVALID (line 118) | HOOK_MEM_WRITE_INVALID = 288
  constant HOOK_MEM_FETCH_INVALID (line 119) | HOOK_MEM_FETCH_INVALID = 576
  constant HOOK_MEM_INVALID (line 120) | HOOK_MEM_INVALID = 1008
  constant HOOK_MEM_VALID (line 121) | HOOK_MEM_VALID = 7168
  constant QUERY_MODE (line 122) | QUERY_MODE = 1
  constant QUERY_PAGE_SIZE (line 123) | QUERY_PAGE_SIZE = 2
  constant QUERY_ARCH (line 124) | QUERY_ARCH = 3
  constant QUERY_TIMEOUT (line 125) | QUERY_TIMEOUT = 4
  constant CTL_IO_NONE (line 127) | CTL_IO_NONE = 0
  constant CTL_IO_WRITE (line 128) | CTL_IO_WRITE = 1
  constant CTL_IO_READ (line 129) | CTL_IO_READ = 2
  constant CTL_IO_READ_WRITE (line 130) | CTL_IO_READ_WRITE = 3
  constant TLB_CPU (line 132) | TLB_CPU = 0
  constant TLB_VIRTUAL (line 133) | TLB_VIRTUAL = 1
  constant CTL_UC_MODE (line 135) | CTL_UC_MODE = 0
  constant CTL_UC_PAGE_SIZE (line 136) | CTL_UC_PAGE_SIZE = 1
  constant CTL_UC_ARCH (line 137) | CTL_UC_ARCH = 2
  constant CTL_UC_TIMEOUT (line 138) | CTL_UC_TIMEOUT = 3
  constant CTL_UC_USE_EXITS (line 139) | CTL_UC_USE_EXITS = 4
  constant CTL_UC_EXITS_CNT (line 140) | CTL_UC_EXITS_CNT = 5
  constant CTL_UC_EXITS (line 141) | CTL_UC_EXITS = 6
  constant CTL_CPU_MODEL (line 142) | CTL_CPU_MODEL = 7
  constant CTL_TB_REQUEST_CACHE (line 143) | CTL_TB_REQUEST_CACHE = 8
  constant CTL_TB_REMOVE_CACHE (line 144) | CTL_TB_REMOVE_CACHE = 9
  constant CTL_TB_FLUSH (line 145) | CTL_TB_FLUSH = 10
  constant CTL_TLB_FLUSH (line 146) | CTL_TLB_FLUSH = 11
  constant CTL_TLB_TYPE (line 147) | CTL_TLB_TYPE = 12
  constant CTL_TCG_BUFFER_SIZE (line 148) | CTL_TCG_BUFFER_SIZE = 13
  constant CTL_CONTEXT_MODE (line 149) | CTL_CONTEXT_MODE = 14
  constant CTL_CONTEXT_CPU (line 150) | CTL_CONTEXT_CPU = 1
  constant CTL_CONTEXT_MEMORY (line 151) | CTL_CONTEXT_MEMORY = 2

FILE: bindings/go/unicorn/unicorn_test.go
  function TestMemUnmap (line 7) | func TestMemUnmap(t *testing.T) {
  function TestDoubleClose (line 27) | func TestDoubleClose(t *testing.T) {
  function TestMemRegions (line 40) | func TestMemRegions(t *testing.T) {
  function TestQuery (line 62) | func TestQuery(t *testing.T) {

FILE: bindings/go/unicorn/x86.go
  type X86Mmr (line 11) | type X86Mmr struct
  method RegWriteMmr (line 18) | func (u *uc) RegWriteMmr(reg int, value *X86Mmr) error {
  method RegReadMmr (line 28) | func (u *uc) RegReadMmr(reg int) (*X86Mmr, error) {
  method RegWriteX86Msr (line 40) | func (u *uc) RegWriteX86Msr(reg uint64, val uint64) error {
  method RegReadX86Msr (line 48) | func (u *uc) RegReadX86Msr(reg uint64) (uint64, error) {

FILE: bindings/go/unicorn/x86_const.go
  constant CPU_X86_QEMU64 (line 7) | CPU_X86_QEMU64 = 0
  constant CPU_X86_PHENOM (line 8) | CPU_X86_PHENOM = 1
  constant CPU_X86_CORE2DUO (line 9) | CPU_X86_CORE2DUO = 2
  constant CPU_X86_KVM64 (line 10) | CPU_X86_KVM64 = 3
  constant CPU_X86_QEMU32 (line 11) | CPU_X86_QEMU32 = 4
  constant CPU_X86_KVM32 (line 12) | CPU_X86_KVM32 = 5
  constant CPU_X86_COREDUO (line 13) | CPU_X86_COREDUO = 6
  constant CPU_X86_486 (line 14) | CPU_X86_486 = 7
  constant CPU_X86_PENTIUM (line 15) | CPU_X86_PENTIUM = 8
  constant CPU_X86_PENTIUM2 (line 16) | CPU_X86_PENTIUM2 = 9
  constant CPU_X86_PENTIUM3 (line 17) | CPU_X86_PENTIUM3 = 10
  constant CPU_X86_ATHLON (line 18) | CPU_X86_ATHLON = 11
  constant CPU_X86_N270 (line 19) | CPU_X86_N270 = 12
  constant CPU_X86_CONROE (line 20) | CPU_X86_CONROE = 13
  constant CPU_X86_PENRYN (line 21) | CPU_X86_PENRYN = 14
  constant CPU_X86_NEHALEM (line 22) | CPU_X86_NEHALEM = 15
  constant CPU_X86_WESTMERE (line 23) | CPU_X86_WESTMERE = 16
  constant CPU_X86_SANDYBRIDGE (line 24) | CPU_X86_SANDYBRIDGE = 17
  constant CPU_X86_IVYBRIDGE (line 25) | CPU_X86_IVYBRIDGE = 18
  constant CPU_X86_HASWELL (line 26) | CPU_X86_HASWELL = 19
  constant CPU_X86_BROADWELL (line 27) | CPU_X86_BROADWELL = 20
  constant CPU_X86_SKYLAKE_CLIENT (line 28) | CPU_X86_SKYLAKE_CLIENT = 21
  constant CPU_X86_SKYLAKE_SERVER (line 29) | CPU_X86_SKYLAKE_SERVER = 22
  constant CPU_X86_CASCADELAKE_SERVER (line 30) | CPU_X86_CASCADELAKE_SERVER = 23
  constant CPU_X86_COOPERLAKE (line 31) | CPU_X86_COOPERLAKE = 24
  constant CPU_X86_ICELAKE_CLIENT (line 32) | CPU_X86_ICELAKE_CLIENT = 25
  constant CPU_X86_ICELAKE_SERVER (line 33) | CPU_X86_ICELAKE_SERVER = 26
  constant CPU_X86_DENVERTON (line 34) | CPU_X86_DENVERTON = 27
  constant CPU_X86_SNOWRIDGE (line 35) | CPU_X86_SNOWRIDGE = 28
  constant CPU_X86_KNIGHTSMILL (line 36) | CPU_X86_KNIGHTSMILL = 29
  constant CPU_X86_OPTERON_G1 (line 37) | CPU_X86_OPTERON_G1 = 30
  constant CPU_X86_OPTERON_G2 (line 38) | CPU_X86_OPTERON_G2 = 31
  constant CPU_X86_OPTERON_G3 (line 39) | CPU_X86_OPTERON_G3 = 32
  constant CPU_X86_OPTERON_G4 (line 40) | CPU_X86_OPTERON_G4 = 33
  constant CPU_X86_OPTERON_G5 (line 41) | CPU_X86_OPTERON_G5 = 34
  constant CPU_X86_EPYC (line 42) | CPU_X86_EPYC = 35
  constant CPU_X86_DHYANA (line 43) | CPU_X86_DHYANA = 36
  constant CPU_X86_EPYC_ROME (line 44) | CPU_X86_EPYC_ROME = 37
  constant CPU_X86_ENDING (line 45) | CPU_X86_ENDING = 38
  constant X86_REG_INVALID (line 49) | X86_REG_INVALID = 0
  constant X86_REG_AH (line 50) | X86_REG_AH = 1
  constant X86_REG_AL (line 51) | X86_REG_AL = 2
  constant X86_REG_AX (line 52) | X86_REG_AX = 3
  constant X86_REG_BH (line 53) | X86_REG_BH = 4
  constant X86_REG_BL (line 54) | X86_REG_BL = 5
  constant X86_REG_BP (line 55) | X86_REG_BP = 6
  constant X86_REG_BPL (line 56) | X86_REG_BPL = 7
  constant X86_REG_BX (line 57) | X86_REG_BX = 8
  constant X86_REG_CH (line 58) | X86_REG_CH = 9
  constant X86_REG_CL (line 59) | X86_REG_CL = 10
  constant X86_REG_CS (line 60) | X86_REG_CS = 11
  constant X86_REG_CX (line 61) | X86_REG_CX = 12
  constant X86_REG_DH (line 62) | X86_REG_DH = 13
  constant X86_REG_DI (line 63) | X86_REG_DI = 14
  constant X86_REG_DIL (line 64) | X86_REG_DIL = 15
  constant X86_REG_DL (line 65) | X86_REG_DL = 16
  constant X86_REG_DS (line 66) | X86_REG_DS = 17
  constant X86_REG_DX (line 67) | X86_REG_DX = 18
  constant X86_REG_EAX (line 68) | X86_REG_EAX = 19
  constant X86_REG_EBP (line 69) | X86_REG_EBP = 20
  constant X86_REG_EBX (line 70) | X86_REG_EBX = 21
  constant X86_REG_ECX (line 71) | X86_REG_ECX = 22
  constant X86_REG_EDI (line 72) | X86_REG_EDI = 23
  constant X86_REG_EDX (line 73) | X86_REG_EDX = 24
  constant X86_REG_EFLAGS (line 74) | X86_REG_EFLAGS = 25
  constant X86_REG_EIP (line 75) | X86_REG_EIP = 26
  constant X86_REG_ES (line 76) | X86_REG_ES = 28
  constant X86_REG_ESI (line 77) | X86_REG_ESI = 29
  constant X86_REG_ESP (line 78) | X86_REG_ESP = 30
  constant X86_REG_FPSW (line 79) | X86_REG_FPSW = 31
  constant X86_REG_FS (line 80) | X86_REG_FS = 32
  constant X86_REG_GS (line 81) | X86_REG_GS = 33
  constant X86_REG_IP (line 82) | X86_REG_IP = 34
  constant X86_REG_RAX (line 83) | X86_REG_RAX = 35
  constant X86_REG_RBP (line 84) | X86_REG_RBP = 36
  constant X86_REG_RBX (line 85) | X86_REG_RBX = 37
  constant X86_REG_RCX (line 86) | X86_REG_RCX = 38
  constant X86_REG_RDI (line 87) | X86_REG_RDI = 39
  constant X86_REG_RDX (line 88) | X86_REG_RDX = 40
  constant X86_REG_RIP (line 89) | X86_REG_RIP = 41
  constant X86_REG_RSI (line 90) | X86_REG_RSI = 43
  constant X86_REG_RSP (line 91) | X86_REG_RSP = 44
  constant X86_REG_SI (line 92) | X86_REG_SI = 45
  constant X86_REG_SIL (line 93) | X86_REG_SIL = 46
  constant X86_REG_SP (line 94) | X86_REG_SP = 47
  constant X86_REG_SPL (line 95) | X86_REG_SPL = 48
  constant X86_REG_SS (line 96) | X86_REG_SS = 49
  constant X86_REG_CR0 (line 97) | X86_REG_CR0 = 50
  constant X86_REG_CR1 (line 98) | X86_REG_CR1 = 51
  constant X86_REG_CR2 (line 99) | X86_REG_CR2 = 52
  constant X86_REG_CR3 (line 100) | X86_REG_CR3 = 53
  constant X86_REG_CR4 (line 101) | X86_REG_CR4 = 54
  constant X86_REG_CR8 (line 102) | X86_REG_CR8 = 58
  constant X86_REG_DR0 (line 103) | X86_REG_DR0 = 66
  constant X86_REG_DR1 (line 104) | X86_REG_DR1 = 67
  constant X86_REG_DR2 (line 105) | X86_REG_DR2 = 68
  constant X86_REG_DR3 (line 106) | X86_REG_DR3 = 69
  constant X86_REG_DR4 (line 107) | X86_REG_DR4 = 70
  constant X86_REG_DR5 (line 108) | X86_REG_DR5 = 71
  constant X86_REG_DR6 (line 109) | X86_REG_DR6 = 72
  constant X86_REG_DR7 (line 110) | X86_REG_DR7 = 73
  constant X86_REG_FP0 (line 111) | X86_REG_FP0 = 82
  constant X86_REG_FP1 (line 112) | X86_REG_FP1 = 83
  constant X86_REG_FP2 (line 113) | X86_REG_FP2 = 84
  constant X86_REG_FP3 (line 114) | X86_REG_FP3 = 85
  constant X86_REG_FP4 (line 115) | X86_REG_FP4 = 86
  constant X86_REG_FP5 (line 116) | X86_REG_FP5 = 87
  constant X86_REG_FP6 (line 117) | X86_REG_FP6 = 88
  constant X86_REG_FP7 (line 118) | X86_REG_FP7 = 89
  constant X86_REG_K0 (line 119) | X86_REG_K0 = 90
  constant X86_REG_K1 (line 120) | X86_REG_K1 = 91
  constant X86_REG_K2 (line 121) | X86_REG_K2 = 92
  constant X86_REG_K3 (line 122) | X86_REG_K3 = 93
  constant X86_REG_K4 (line 123) | X86_REG_K4 = 94
  constant X86_REG_K5 (line 124) | X86_REG_K5 = 95
  constant X86_REG_K6 (line 125) | X86_REG_K6 = 96
  constant X86_REG_K7 (line 126) | X86_REG_K7 = 97
  constant X86_REG_MM0 (line 127) | X86_REG_MM0 = 98
  constant X86_REG_MM1 (line 128) | X86_REG_MM1 = 99
  constant X86_REG_MM2 (line 129) | X86_REG_MM2 = 100
  constant X86_REG_MM3 (line 130) | X86_REG_MM3 = 101
  constant X86_REG_MM4 (line 131) | X86_REG_MM4 = 102
  constant X86_REG_MM5 (line 132) | X86_REG_MM5 = 103
  constant X86_REG_MM6 (line 133) | X86_REG_MM6 = 104
  constant X86_REG_MM7 (line 134) | X86_REG_MM7 = 105
  constant X86_REG_R8 (line 135) | X86_REG_R8 = 106
  constant X86_REG_R9 (line 136) | X86_REG_R9 = 107
  constant X86_REG_R10 (line 137) | X86_REG_R10 = 108
  constant X86_REG_R11 (line 138) | X86_REG_R11 = 109
  constant X86_REG_R12 (line 139) | X86_REG_R12 = 110
  constant X86_REG_R13 (line 140) | X86_REG_R13 = 111
  constant X86_REG_R14 (line 141) | X86_REG_R14 = 112
  constant X86_REG_R15 (line 142) | X86_REG_R15 = 113
  constant X86_REG_ST0 (line 143) | X86_REG_ST0 = 114
  constant X86_REG_ST1 (line 144) | X86_REG_ST1 = 115
  constant X86_REG_ST2 (line 145) | X86_REG_ST2 = 116
  constant X86_REG_ST3 (line 146) | X86_REG_ST3 = 117
  constant X86_REG_ST4 (line 147) | X86_REG_ST4 = 118
  constant X86_REG_ST5 (line 148) | X86_REG_ST5 = 119
  constant X86_REG_ST6 (line 149) | X86_REG_ST6 = 120
  constant X86_REG_ST7 (line 150) | X86_REG_ST7 = 121
  constant X86_REG_XMM0 (line 151) | X86_REG_XMM0 = 122
  constant X86_REG_XMM1 (line 152) | X86_REG_XMM1 = 123
  constant X86_REG_XMM2 (line 153) | X86_REG_XMM2 = 124
  constant X86_REG_XMM3 (line 154) | X86_REG_XMM3 = 125
  constant X86_REG_XMM4 (line 155) | X86_REG_XMM4 = 126
  constant X86_REG_XMM5 (line 156) | X86_REG_XMM5 = 127
  constant X86_REG_XMM6 (line 157) | X86_REG_XMM6 = 128
  constant X86_REG_XMM7 (line 158) | X86_REG_XMM7 = 129
  constant X86_REG_XMM8 (line 159) | X86_REG_XMM8 = 130
  constant X86_REG_XMM9 (line 160) | X86_REG_XMM9 = 131
  constant X86_REG_XMM10 (line 161) | X86_REG_XMM10 = 132
  constant X86_REG_XMM11 (line 162) | X86_REG_XMM11 = 133
  constant X86_REG_XMM12 (line 163) | X86_REG_XMM12 = 134
  constant X86_REG_XMM13 (line 164) | X86_REG_XMM13 = 135
  constant X86_REG_XMM14 (line 165) | X86_REG_XMM14 = 136
  constant X86_REG_XMM15 (line 166) | X86_REG_XMM15 = 137
  constant X86_REG_XMM16 (line 167) | X86_REG_XMM16 = 138
  constant X86_REG_XMM17 (line 168) | X86_REG_XMM17 = 139
  constant X86_REG_XMM18 (line 169) | X86_REG_XMM18 = 140
  constant X86_REG_XMM19 (line 170) | X86_REG_XMM19 = 141
  constant X86_REG_XMM20 (line 171) | X86_REG_XMM20 = 142
  constant X86_REG_XMM21 (line 172) | X86_REG_XMM21 = 143
  constant X86_REG_XMM22 (line 173) | X86_REG_XMM22 = 144
  constant X86_REG_XMM23 (line 174) | X86_REG_XMM23 = 145
  constant X86_REG_XMM24 (line 175) | X86_REG_XMM24 = 146
  constant X86_REG_XMM25 (line 176) | X86_REG_XMM25 = 147
  constant X86_REG_XMM26 (line 177) | X86_REG_XMM26 = 148
  constant X86_REG_XMM27 (line 178) | X86_REG_XMM27 = 149
  constant X86_REG_XMM28 (line 179) | X86_REG_XMM28 = 150
  constant X86_REG_XMM29 (line 180) | X86_REG_XMM29 = 151
  constant X86_REG_XMM30 (line 181) | X86_REG_XMM30 = 152
  constant X86_REG_XMM31 (line 182) | X86_REG_XMM31 = 153
  constant X86_REG_YMM0 (line 183) | X86_REG_YMM0 = 154
  constant X86_REG_YMM1 (line 184) | X86_REG_YMM1 = 155
  constant X86_REG_YMM2 (line 185) | X86_REG_YMM2 = 156
  constant X86_REG_YMM3 (line 186) | X86_REG_YMM3 = 157
  constant X86_REG_YMM4 (line 187) | X86_REG_YMM4 = 158
  constant X86_REG_YMM5 (line 188) | X86_REG_YMM5 = 159
  constant X86_REG_YMM6 (line 189) | X86_REG_YMM6 = 160
  constant X86_REG_YMM7 (line 190) | X86_REG_YMM7 = 161
  constant X86_REG_YMM8 (line 191) | X86_REG_YMM8 = 162
  constant X86_REG_YMM9 (line 192) | X86_REG_YMM9 = 163
  constant X86_REG_YMM10 (line 193) | X86_REG_YMM10 = 164
  constant X86_REG_YMM11 (line 194) | X86_REG_YMM11 = 165
  constant X86_REG_YMM12 (line 195) | X86_REG_YMM12 = 166
  constant X86_REG_YMM13 (line 196) | X86_REG_YMM13 = 167
  constant X86_REG_YMM14 (line 197) | X86_REG_YMM14 = 168
  constant X86_REG_YMM15 (line 198) | X86_REG_YMM15 = 169
  constant X86_REG_YMM16 (line 199) | X86_REG_YMM16 = 170
  constant X86_REG_YMM17 (line 200) | X86_REG_YMM17 = 171
  constant X86_REG_YMM18 (line 201) | X86_REG_YMM18 = 172
  constant X86_REG_YMM19 (line 202) | X86_REG_YMM19 = 173
  constant X86_REG_YMM20 (line 203) | X86_REG_YMM20 = 174
  constant X86_REG_YMM21 (line 204) | X86_REG_YMM21 = 175
  constant X86_REG_YMM22 (line 205) | X86_REG_YMM22 = 176
  constant X86_REG_YMM23 (line 206) | X86_REG_YMM23 = 177
  constant X86_REG_YMM24 (line 207) | X86_REG_YMM24 = 178
  constant X86_REG_YMM25 (line 208) | X86_REG_YMM25 = 179
  constant X86_REG_YMM26 (line 209) | X86_REG_YMM26 = 180
  constant X86_REG_YMM27 (line 210) | X86_REG_YMM27 = 181
  constant X86_REG_YMM28 (line 211) | X86_REG_YMM28 = 182
  constant X86_REG_YMM29 (line 212) | X86_REG_YMM29 = 183
  constant X86_REG_YMM30 (line 213) | X86_REG_YMM30 = 184
  constant X86_REG_YMM31 (line 214) | X86_REG_YMM31 = 185
  constant X86_REG_ZMM0 (line 215) | X86_REG_ZMM0 = 186
  constant X86_REG_ZMM1 (line 216) | X86_REG_ZMM1 = 187
  constant X86_REG_ZMM2 (line 217) | X86_REG_ZMM2 = 188
  constant X86_REG_ZMM3 (line 218) | X86_REG_ZMM3 = 189
  constant X86_REG_ZMM4 (line 219) | X86_REG_ZMM4 = 190
  constant X86_REG_ZMM5 (line 220) | X86_REG_ZMM5 = 191
  constant X86_REG_ZMM6 (line 221) | X86_REG_ZMM6 = 192
  constant X86_REG_ZMM7 (line 222) | X86_REG_ZMM7 = 193
  constant X86_REG_ZMM8 (line 223) | X86_REG_ZMM8 = 194
  constant X86_REG_ZMM9 (line 224) | X86_REG_ZMM9 = 195
  constant X86_REG_ZMM10 (line 225) | X86_REG_ZMM10 = 196
  constant X86_REG_ZMM11 (line 226) | X86_REG_ZMM11 = 197
  constant X86_REG_ZMM12 (line 227) | X86_REG_ZMM12 = 198
  constant X86_REG_ZMM13 (line 228) | X86_REG_ZMM13 = 199
  constant X86_REG_ZMM14 (line 229) | X86_REG_ZMM14 = 200
  constant X86_REG_ZMM15 (line 230) | X86_REG_ZMM15 = 201
  constant X86_REG_ZMM16 (line 231) | X86_REG_ZMM16 = 202
  constant X86_REG_ZMM17 (line 232) | X86_REG_ZMM17 = 203
  constant X86_REG_ZMM18 (line 233) | X86_REG_ZMM18 = 204
  constant X86_REG_ZMM19 (line 234) | X86_REG_ZMM19 = 205
  constant X86_REG_ZMM20 (line 235) | X86_REG_ZMM20 = 206
  constant X86_REG_ZMM21 (line 236) | X86_REG_ZMM21 = 207
  constant X86_REG_ZMM22 (line 237) | X86_REG_ZMM22 = 208
  constant X86_REG_ZMM23 (line 238) | X86_REG_ZMM23 = 209
  constant X86_REG_ZMM24 (line 239) | X86_REG_ZMM24 = 210
  constant X86_REG_ZMM25 (line 240) | X86_REG_ZMM25 = 211
  constant X86_REG_ZMM26 (line 241) | X86_REG_ZMM26 = 212
  constant X86_REG_ZMM27 (line 242) | X86_REG_ZMM27 = 213
  constant X86_REG_ZMM28 (line 243) | X86_REG_ZMM28 = 214
  constant X86_REG_ZMM29 (line 244) | X86_REG_ZMM29 = 215
  constant X86_REG_ZMM30 (line 245) | X86_REG_ZMM30 = 216
  constant X86_REG_ZMM31 (line 246) | X86_REG_ZMM31 = 217
  constant X86_REG_R8B (line 247) | X86_REG_R8B = 218
  constant X86_REG_R9B (line 248) | X86_REG_R9B = 219
  constant X86_REG_R10B (line 249) | X86_REG_R10B = 220
  constant X86_REG_R11B (line 250) | X86_REG_R11B = 221
  constant X86_REG_R12B (line 251) | X86_REG_R12B = 222
  constant X86_REG_R13B (line 252) | X86_REG_R13B = 223
  constant X86_REG_R14B (line 253) | X86_REG_R14B = 224
  constant X86_REG_R15B (line 254) | X86_REG_R15B = 225
  constant X86_REG_R8D (line 255) | X86_REG_R8D = 226
  constant X86_REG_R9D (line 256) | X86_REG_R9D = 227
  constant X86_REG_R10D (line 257) | X86_REG_R10D = 228
  constant X86_REG_R11D (line 258) | X86_REG_R11D = 229
  constant X86_REG_R12D (line 259) | X86_REG_R12D = 230
  constant X86_REG_R13D (line 260) | X86_REG_R13D = 231
  constant X86_REG_R14D (line 261) | X86_REG_R14D = 232
  constant X86_REG_R15D (line 262) | X86_REG_R15D = 233
  constant X86_REG_R8W (line 263) | X86_REG_R8W = 234
  constant X86_REG_R9W (line 264) | X86_REG_R9W = 235
  constant X86_REG_R10W (line 265) | X86_REG_R10W = 236
  constant X86_REG_R11W (line 266) | X86_REG_R11W = 237
  constant X86_REG_R12W (line 267) | X86_REG_R12W = 238
  constant X86_REG_R13W (line 268) | X86_REG_R13W = 239
  constant X86_REG_R14W (line 269) | X86_REG_R14W = 240
  constant X86_REG_R15W (line 270) | X86_REG_R15W = 241
  constant X86_REG_IDTR (line 271) | X86_REG_IDTR = 242
  constant X86_REG_GDTR (line 272) | X86_REG_GDTR = 243
  constant X86_REG_LDTR (line 273) | X86_REG_LDTR = 244
  constant X86_REG_TR (line 274) | X86_REG_TR = 245
  constant X86_REG_FPCW (line 275) | X86_REG_FPCW = 246
  constant X86_REG_FPTAG (line 276) | X86_REG_FPTAG = 247
  constant X86_REG_MSR (line 277) | X86_REG_MSR = 248
  constant X86_REG_MXCSR (line 278) | X86_REG_MXCSR = 249
  constant X86_REG_FS_BASE (line 279) | X86_REG_FS_BASE = 250
  constant X86_REG_GS_BASE (line 280) | X86_REG_GS_BASE = 251
  constant X86_REG_FLAGS (line 281) | X86_REG_FLAGS = 252
  constant X86_REG_RFLAGS (line 282) | X86_REG_RFLAGS = 253
  constant X86_REG_FIP (line 283) | X86_REG_FIP = 254
  constant X86_REG_FCS (line 284) | X86_REG_FCS = 255
  constant X86_REG_FDP (line 285) | X86_REG_FDP = 256
  constant X86_REG_FDS (line 286) | X86_REG_FDS = 257
  constant X86_REG_FOP (line 287) | X86_REG_FOP = 258
  constant X86_REG_ENDING (line 288) | X86_REG_ENDING = 259
  constant X86_INS_INVALID (line 292) | X86_INS_INVALID = 0
  constant X86_INS_AAA (line 293) | X86_INS_AAA = 1
  constant X86_INS_AAD (line 294) | X86_INS_AAD = 2
  constant X86_INS_AAM (line 295) | X86_INS_AAM = 3
  constant X86_INS_AAS (line 296) | X86_INS_AAS = 4
  constant X86_INS_FABS (line 297) | X86_INS_FABS = 5
  constant X86_INS_ADC (line 298) | X86_INS_ADC = 6
  constant X86_INS_ADCX (line 299) | X86_INS_ADCX = 7
  constant X86_INS_ADD (line 300) | X86_INS_ADD = 8
  constant X86_INS_ADDPD (line 301) | X86_INS_ADDPD = 9
  constant X86_INS_ADDPS (line 302) | X86_INS_ADDPS = 10
  constant X86_INS_ADDSD (line 303) | X86_INS_ADDSD = 11
  constant X86_INS_ADDSS (line 304) | X86_INS_ADDSS = 12
  constant X86_INS_ADDSUBPD (line 305) | X86_INS_ADDSUBPD = 13
  constant X86_INS_ADDSUBPS (line 306) | X86_INS_ADDSUBPS = 14
  constant X86_INS_FADD (line 307) | X86_INS_FADD = 15
  constant X86_INS_FIADD (line 308) | X86_INS_FIADD = 16
  constant X86_INS_FADDP (line 309) | X86_INS_FADDP = 17
  constant X86_INS_ADOX (line 310) | X86_INS_ADOX = 18
  constant X86_INS_AESDECLAST (line 311) | X86_INS_AESDECLAST = 19
  constant X86_INS_AESDEC (line 312) | X86_INS_AESDEC = 20
  constant X86_INS_AESENCLAST (line 313) | X86_INS_AESENCLAST = 21
  constant X86_INS_AESENC (line 314) | X86_INS_AESENC = 22
  constant X86_INS_AESIMC (line 315) | X86_INS_AESIMC = 23
  constant X86_INS_AESKEYGENASSIST (line 316) | X86_INS_AESKEYGENASSIST = 24
  constant X86_INS_AND (line 317) | X86_INS_AND = 25
  constant X86_INS_ANDN (line 318) | X86_INS_ANDN = 26
  constant X86_INS_ANDNPD (line 319) | X86_INS_ANDNPD = 27
  constant X86_INS_ANDNPS (line 320) | X86_INS_ANDNPS = 28
  constant X86_INS_ANDPD (line 321) | X86_INS_ANDPD = 29
  constant X86_INS_ANDPS (line 322) | X86_INS_ANDPS = 30
  constant X86_INS_ARPL (line 323) | X86_INS_ARPL = 31
  constant X86_INS_BEXTR (line 324) | X86_INS_BEXTR = 32
  constant X86_INS_BLCFILL (line 325) | X86_INS_BLCFILL = 33
  constant X86_INS_BLCI (line 326) | X86_INS_BLCI = 34
  constant X86_INS_BLCIC (line 327) | X86_INS_BLCIC = 35
  constant X86_INS_BLCMSK (line 328) | X86_INS_BLCMSK = 36
  constant X86_INS_BLCS (line 329) | X86_INS_BLCS = 37
  constant X86_INS_BLENDPD (line 330) | X86_INS_BLENDPD = 38
  constant X86_INS_BLENDPS (line 331) | X86_INS_BLENDPS = 39
  constant X86_INS_BLENDVPD (line 332) | X86_INS_BLENDVPD = 40
  constant X86_INS_BLENDVPS (line 333) | X86_INS_BLENDVPS = 41
  constant X86_INS_BLSFILL (line 334) | X86_INS_BLSFILL = 42
  constant X86_INS_BLSI (line 335) | X86_INS_BLSI = 43
  constant X86_INS_BLSIC (line 336) | X86_INS_BLSIC = 44
  constant X86_INS_BLSMSK (line 337) | X86_INS_BLSMSK = 45
  constant X86_INS_BLSR (line 338) | X86_INS_BLSR = 46
  constant X86_INS_BOUND (line 339) | X86_INS_BOUND = 47
  constant X86_INS_BSF (line 340) | X86_INS_BSF = 48
  constant X86_INS_BSR (line 341) | X86_INS_BSR = 49
  constant X86_INS_BSWAP (line 342) | X86_INS_BSWAP = 50
  constant X86_INS_BT (line 343) | X86_INS_BT = 51
  constant X86_INS_BTC (line 344) | X86_INS_BTC = 52
  constant X86_INS_BTR (line 345) | X86_INS_BTR = 53
  constant X86_INS_BTS (line 346) | X86_INS_BTS = 54
  constant X86_INS_BZHI (line 347) | X86_INS_BZHI = 55
  constant X86_INS_CALL (line 348) | X86_INS_CALL = 56
  constant X86_INS_CBW (line 349) | X86_INS_CBW = 57
  constant X86_INS_CDQ (line 350) | X86_INS_CDQ = 58
  constant X86_INS_CDQE (line 351) | X86_INS_CDQE = 59
  constant X86_INS_FCHS (line 352) | X86_INS_FCHS = 60
  constant X86_INS_CLAC (line 353) | X86_INS_CLAC = 61
  constant X86_INS_CLC (line 354) | X86_INS_CLC = 62
  constant X86_INS_CLD (line 355) | X86_INS_CLD = 63
  constant X86_INS_CLFLUSH (line 356) | X86_INS_CLFLUSH = 64
  constant X86_INS_CLFLUSHOPT (line 357) | X86_INS_CLFLUSHOPT = 65
  constant X86_INS_CLGI (line 358) | X86_INS_CLGI = 66
  constant X86_INS_CLI (line 359) | X86_INS_CLI = 67
  constant X86_INS_CLTS (line 360) | X86_INS_CLTS = 68
  constant X86_INS_CLWB (line 361) | X86_INS_CLWB = 69
  constant X86_INS_CMC (line 362) | X86_INS_CMC = 70
  constant X86_INS_CMOVA (line 363) | X86_INS_CMOVA = 71
  constant X86_INS_CMOVAE (line 364) | X86_INS_CMOVAE = 72
  constant X86_INS_CMOVB (line 365) | X86_INS_CMOVB = 73
  constant X86_INS_CMOVBE (line 366) | X86_INS_CMOVBE = 74
  constant X86_INS_FCMOVBE (line 367) | X86_INS_FCMOVBE = 75
  constant X86_INS_FCMOVB (line 368) | X86_INS_FCMOVB = 76
  constant X86_INS_CMOVE (line 369) | X86_INS_CMOVE = 77
  constant X86_INS_FCMOVE (line 370) | X86_INS_FCMOVE = 78
  constant X86_INS_CMOVG (line 371) | X86_INS_CMOVG = 79
  constant X86_INS_CMOVGE (line 372) | X86_INS_CMOVGE = 80
  constant X86_INS_CMOVL (line 373) | X86_INS_CMOVL = 81
  constant X86_INS_CMOVLE (line 374) | X86_INS_CMOVLE = 82
  constant X86_INS_FCMOVNBE (line 375) | X86_INS_FCMOVNBE = 83
  constant X86_INS_FCMOVNB (line 376) | X86_INS_FCMOVNB = 84
  constant X86_INS_CMOVNE (line 377) | X86_INS_CMOVNE = 85
  constant X86_INS_FCMOVNE (line 378) | X86_INS_FCMOVNE = 86
  constant X86_INS_CMOVNO (line 379) | X86_INS_CMOVNO = 87
  constant X86_INS_CMOVNP (line 380) | X86_INS_CMOVNP = 88
  constant X86_INS_FCMOVNU (line 381) | X86_INS_FCMOVNU = 89
  constant X86_INS_CMOVNS (line 382) | X86_INS_CMOVNS = 90
  constant X86_INS_CMOVO (line 383) | X86_INS_CMOVO = 91
  constant X86_INS_CMOVP (line 384) | X86_INS_CMOVP = 92
  constant X86_INS_FCMOVU (line 385) | X86_INS_FCMOVU = 93
  constant X86_INS_CMOVS (line 386) | X86_INS_CMOVS = 94
  constant X86_INS_CMP (line 387) | X86_INS_CMP = 95
  constant X86_INS_CMPPD (line 388) | X86_INS_CMPPD = 96
  constant X86_INS_CMPPS (line 389) | X86_INS_CMPPS = 97
  constant X86_INS_CMPSB (line 390) | X86_INS_CMPSB = 98
  constant X86_INS_CMPSD (line 391) | X86_INS_CMPSD = 99
  constant X86_INS_CMPSQ (line 392) | X86_INS_CMPSQ = 100
  constant X86_INS_CMPSS (line 393) | X86_INS_CMPSS = 101
  constant X86_INS_CMPSW (line 394) | X86_INS_CMPSW = 102
  constant X86_INS_CMPXCHG16B (line 395) | X86_INS_CMPXCHG16B = 103
  constant X86_INS_CMPXCHG (line 396) | X86_INS_CMPXCHG = 104
  constant X86_INS_CMPXCHG8B (line 397) | X86_INS_CMPXCHG8B = 105
  constant X86_INS_COMISD (line 398) | X86_INS_COMISD = 106
  constant X86_INS_COMISS (line 399) | X86_INS_COMISS = 107
  constant X86_INS_FCOMP (line 400) | X86_INS_FCOMP = 108
  constant X86_INS_FCOMPI (line 401) | X86_INS_FCOMPI = 109
  constant X86_INS_FCOMI (line 402) | X86_INS_FCOMI = 110
  constant X86_INS_FCOM (line 403) | X86_INS_FCOM = 111
  constant X86_INS_FCOS (line 404) | X86_INS_FCOS = 112
  constant X86_INS_CPUID (line 405) | X86_INS_CPUID = 113
  constant X86_INS_CQO (line 406) | X86_INS_CQO = 114
  constant X86_INS_CRC32 (line 407) | X86_INS_CRC32 = 115
  constant X86_INS_CVTDQ2PD (line 408) | X86_INS_CVTDQ2PD = 116
  constant X86_INS_CVTDQ2PS (line 409) | X86_INS_CVTDQ2PS = 117
  constant X86_INS_CVTPD2DQ (line 410) | X86_INS_CVTPD2DQ = 118
  constant X86_INS_CVTPD2PS (line 411) | X86_INS_CVTPD2PS = 119
  constant X86_INS_CVTPS2DQ (line 412) | X86_INS_CVTPS2DQ = 120
  constant X86_INS_CVTPS2PD (line 413) | X86_INS_CVTPS2PD = 121
  constant X86_INS_CVTSD2SI (line 414) | X86_INS_CVTSD2SI = 122
  constant X86_INS_CVTSD2SS (line 415) | X86_INS_CVTSD2SS = 123
  constant X86_INS_CVTSI2SD (line 416) | X86_INS_CVTSI2SD = 124
  constant X86_INS_CVTSI2SS (line 417) | X86_INS_CVTSI2SS = 125
  constant X86_INS_CVTSS2SD (line 418) | X86_INS_CVTSS2SD = 126
  constant X86_INS_CVTSS2SI (line 419) | X86_INS_CVTSS2SI = 127
  constant X86_INS_CVTTPD2DQ (line 420) | X86_INS_CVTTPD2DQ = 128
  constant X86_INS_CVTTPS2DQ (line 421) | X86_INS_CVTTPS2DQ = 129
  constant X86_INS_CVTTSD2SI (line 422) | X86_INS_CVTTSD2SI = 130
  constant X86_INS_CVTTSS2SI (line 423) | X86_INS_CVTTSS2SI = 131
  constant X86_INS_CWD (line 424) | X86_INS_CWD = 132
  constant X86_INS_CWDE (line 425) | X86_INS_CWDE = 133
  constant X86_INS_DAA (line 426) | X86_INS_DAA = 134
  constant X86_INS_DAS (line 427) | X86_INS_DAS = 135
  constant X86_INS_DATA16 (line 428) | X86_INS_DATA16 = 136
  constant X86_INS_DEC (line 429) | X86_INS_DEC = 137
  constant X86_INS_DIV (line 430) | X86_INS_DIV = 138
  constant X86_INS_DIVPD (line 431) | X86_INS_DIVPD = 139
  constant X86_INS_DIVPS (line 432) | X86_INS_DIVPS = 140
  constant X86_INS_FDIVR (line 433) | X86_INS_FDIVR = 141
  constant X86_INS_FIDIVR (line 434) | X86_INS_FIDIVR = 142
  constant X86_INS_FDIVRP (line 435) | X86_INS_FDIVRP = 143
  constant X86_INS_DIVSD (line 436) | X86_INS_DIVSD = 144
  constant X86_INS_DIVSS (line 437) | X86_INS_DIVSS = 145
  constant X86_INS_FDIV (line 438) | X86_INS_FDIV = 146
  constant X86_INS_FIDIV (line 439) | X86_INS_FIDIV = 147
  constant X86_INS_FDIVP (line 440) | X86_INS_FDIVP = 148
  constant X86_INS_DPPD (line 441) | X86_INS_DPPD = 149
  constant X86_INS_DPPS (line 442) | X86_INS_DPPS = 150
  constant X86_INS_RET (line 443) | X86_INS_RET = 151
  constant X86_INS_ENCLS (line 444) | X86_INS_ENCLS = 152
  constant X86_INS_ENCLU (line 445) | X86_INS_ENCLU = 153
  constant X86_INS_ENTER (line 446) | X86_INS_ENTER = 154
  constant X86_INS_EXTRACTPS (line 447) | X86_INS_EXTRACTPS = 155
  constant X86_INS_EXTRQ (line 448) | X86_INS_EXTRQ = 156
  constant X86_INS_F2XM1 (line 449) | X86_INS_F2XM1 = 157
  constant X86_INS_LCALL (line 450) | X86_INS_LCALL = 158
  constant X86_INS_LJMP (line 451) | X86_INS_LJMP = 159
  constant X86_INS_FBLD (line 452) | X86_INS_FBLD = 160
  constant X86_INS_FBSTP (line 453) | X86_INS_FBSTP = 161
  constant X86_INS_FCOMPP (line 454) | X86_INS_FCOMPP = 162
  constant X86_INS_FDECSTP (line 455) | X86_INS_FDECSTP = 163
  constant X86_INS_FEMMS (line 456) | X86_INS_FEMMS = 164
  constant X86_INS_FFREE (line 457) | X86_INS_FFREE = 165
  constant X86_INS_FICOM (line 458) | X86_INS_FICOM = 166
  constant X86_INS_FICOMP (line 459) | X86_INS_FICOMP = 167
  constant X86_INS_FINCSTP (line 460) | X86_INS_FINCSTP = 168
  constant X86_INS_FLDCW (line 461) | X86_INS_FLDCW = 169
  constant X86_INS_FLDENV (line 462) | X86_INS_FLDENV = 170
  constant X86_INS_FLDL2E (line 463) | X86_INS_FLDL2E = 171
  constant X86_INS_FLDL2T (line 464) | X86_INS_FLDL2T = 172
  constant X86_INS_FLDLG2 (line 465) | X86_INS_FLDLG2 = 173
  constant X86_INS_FLDLN2 (line 466) | X86_INS_FLDLN2 = 174
  constant X86_INS_FLDPI (line 467) | X86_INS_FLDPI = 175
  constant X86_INS_FNCLEX (line 468) | X86_INS_FNCLEX = 176
  constant X86_INS_FNINIT (line 469) | X86_INS_FNINIT = 177
  constant X86_INS_FNOP (line 470) | X86_INS_FNOP = 178
  constant X86_INS_FNSTCW (line 471) | X86_INS_FNSTCW = 179
  constant X86_INS_FNSTSW (line 472) | X86_INS_FNSTSW = 180
  constant X86_INS_FPATAN (line 473) | X86_INS_FPATAN = 181
  constant X86_INS_FPREM (line 474) | X86_INS_FPREM = 182
  constant X86_INS_FPREM1 (line 475) | X86_INS_FPREM1 = 183
  constant X86_INS_FPTAN (line 476) | X86_INS_FPTAN = 184
  constant X86_INS_FFREEP (line 477) | X86_INS_FFREEP = 185
  constant X86_INS_FRNDINT (line 478) | X86_INS_FRNDINT = 186
  constant X86_INS_FRSTOR (line 479) | X86_INS_FRSTOR = 187
  constant X86_INS_FNSAVE (line 480) | X86_INS_FNSAVE = 188
  constant X86_INS_FSCALE (line 481) | X86_INS_FSCALE = 189
  constant X86_INS_FSETPM (line 482) | X86_INS_FSETPM = 190
  constant X86_INS_FSINCOS (line 483) | X86_INS_FSINCOS = 191
  constant X86_INS_FNSTENV (line 484) | X86_INS_FNSTENV = 192
  constant X86_INS_FXAM (line 485) | X86_INS_FXAM = 193
  constant X86_INS_FXRSTOR (line 486) | X86_INS_FXRSTOR = 194
  constant X86_INS_FXRSTOR64 (line 487) | X86_INS_FXRSTOR64 = 195
  constant X86_INS_FXSAVE (line 488) | X86_INS_FXSAVE = 196
  constant X86_INS_FXSAVE64 (line 489) | X86_INS_FXSAVE64 = 197
  constant X86_INS_FXTRACT (line 490) | X86_INS_FXTRACT = 198
  constant X86_INS_FYL2X (line 491) | X86_INS_FYL2X = 199
  constant X86_INS_FYL2XP1 (line 492) | X86_INS_FYL2XP1 = 200
  constant X86_INS_MOVAPD (line 493) | X86_INS_MOVAPD = 201
  constant X86_INS_MOVAPS (line 494) | X86_INS_MOVAPS = 202
  constant X86_INS_ORPD (line 495) | X86_INS_ORPD = 203
  constant X86_INS_ORPS (line 496) | X86_INS_ORPS = 204
  constant X86_INS_VMOVAPD (line 497) | X86_INS_VMOVAPD = 205
  constant X86_INS_VMOVAPS (line 498) | X86_INS_VMOVAPS = 206
  constant X86_INS_XORPD (line 499) | X86_INS_XORPD = 207
  constant X86_INS_XORPS (line 500) | X86_INS_XORPS = 208
  constant X86_INS_GETSEC (line 501) | X86_INS_GETSEC = 209
  constant X86_INS_HADDPD (line 502) | X86_INS_HADDPD = 210
  constant X86_INS_HADDPS (line 503) | X86_INS_HADDPS = 211
  constant X86_INS_HLT (line 504) | X86_INS_HLT = 212
  constant X86_INS_HSUBPD (line 505) | X86_INS_HSUBPD = 213
  constant X86_INS_HSUBPS (line 506) | X86_INS_HSUBPS = 214
  constant X86_INS_IDIV (line 507) | X86_INS_IDIV = 215
  constant X86_INS_FILD (line 508) | X86_INS_FILD = 216
  constant X86_INS_IMUL (line 509) | X86_INS_IMUL = 217
  constant X86_INS_IN (line 510) | X86_INS_IN = 218
  constant X86_INS_INC (line 511) | X86_INS_INC = 219
  constant X86_INS_INSB (line 512) | X86_INS_INSB = 220
  constant X86_INS_INSERTPS (line 513) | X86_INS_INSERTPS = 221
  constant X86_INS_INSERTQ (line 514) | X86_INS_INSERTQ = 222
  constant X86_INS_INSD (line 515) | X86_INS_INSD = 223
  constant X86_INS_INSW (line 516) | X86_INS_INSW = 224
  constant X86_INS_INT (line 517) | X86_INS_INT = 225
  constant X86_INS_INT1 (line 518) | X86_INS_INT1 = 226
  constant X86_INS_INT3 (line 519) | X86_INS_INT3 = 227
  constant X86_INS_INTO (line 520) | X86_INS_INTO = 228
  constant X86_INS_INVD (line 521) | X86_INS_INVD = 229
  constant X86_INS_INVEPT (line 522) | X86_INS_INVEPT = 230
  constant X86_INS_INVLPG (line 523) | X86_INS_INVLPG = 231
  constant X86_INS_INVLPGA (line 524) | X86_INS_INVLPGA = 232
  constant X86_INS_INVPCID (line 525) | X86_INS_INVPCID = 233
  constant X86_INS_INVVPID (line 526) | X86_INS_INVVPID = 234
  constant X86_INS_IRET (line 527) | X86_INS_IRET = 235
  constant X86_INS_IRETD (line 528) | X86_INS_IRETD = 236
  constant X86_INS_IRETQ (line 529) | X86_INS_IRETQ = 237
  constant X86_INS_FISTTP (line 530) | X86_INS_FISTTP = 238
  constant X86_INS_FIST (line 531) | X86_INS_FIST = 239
  constant X86_INS_FISTP (line 532) | X86_INS_FISTP = 240
  constant X86_INS_UCOMISD (line 533) | X86_INS_UCOMISD = 241
  constant X86_INS_UCOMISS (line 534) | X86_INS_UCOMISS = 242
  constant X86_INS_VCOMISD (line 535) | X86_INS_VCOMISD = 243
  constant X86_INS_VCOMISS (line 536) | X86_INS_VCOMISS = 244
  constant X86_INS_VCVTSD2SS (line 537) | X86_INS_VCVTSD2SS = 245
  constant X86_INS_VCVTSI2SD (line 538) | X86_INS_VCVTSI2SD = 246
  constant X86_INS_VCVTSI2SS (line 539) | X86_INS_VCVTSI2SS = 247
  constant X86_INS_VCVTSS2SD (line 540) | X86_INS_VCVTSS2SD = 248
  constant X86_INS_VCVTTSD2SI (line 541) | X86_INS_VCVTTSD2SI = 249
  constant X86_INS_VCVTTSD2USI (line 542) | X86_INS_VCVTTSD2USI = 250
  constant X86_INS_VCVTTSS2SI (line 543) | X86_INS_VCVTTSS2SI = 251
  constant X86_INS_VCVTTSS2USI (line 544) | X86_INS_VCVTTSS2USI = 252
  constant X86_INS_VCVTUSI2SD (line 545) | X86_INS_VCVTUSI2SD = 253
  constant X86_INS_VCVTUSI2SS (line 546) | X86_INS_VCVTUSI2SS = 254
  constant X86_INS_VUCOMISD (line 547) | X86_INS_VUCOMISD = 255
  constant X86_INS_VUCOMISS (line 548) | X86_INS_VUCOMISS = 256
  constant X86_INS_JAE (line 549) | X86_INS_JAE = 257
  constant X86_INS_JA (line 550) | X86_INS_JA = 258
  constant X86_INS_JBE (line 551) | X86_INS_JBE = 259
  constant X86_INS_JB (line 552) | X86_INS_JB = 260
  constant X86_INS_JCXZ (line 553) | X86_INS_JCXZ = 261
  constant X86_INS_JECXZ (line 554) | X86_INS_JECXZ = 262
  constant X86_INS_JE (line 555) | X86_INS_JE = 263
  constant X86_INS_JGE (line 556) | X86_INS_JGE = 264
  constant X86_INS_JG (line 557) | X86_INS_JG = 265
  constant X86_INS_JLE (line 558) | X86_INS_JLE = 266
  constant X86_INS_JL (line 559) | X86_INS_JL = 267
  constant X86_INS_JMP (line 560) | X86_INS_JMP = 268
  constant X86_INS_JNE (line 561) | X86_INS_JNE = 269
  constant X86_INS_JNO (line 562) | X86_INS_JNO = 270
  constant X86_INS_JNP (line 563) | X86_INS_JNP = 271
  constant X86_INS_JNS (line 564) | X86_INS_JNS = 272
  constant X86_INS_JO (line 565) | X86_INS_JO = 273
  constant X86_INS_JP (line 566) | X86_INS_JP = 274
  constant X86_INS_JRCXZ (line 567) | X86_INS_JRCXZ = 275
  constant X86_INS_JS (line 568) | X86_INS_JS = 276
  constant X86_INS_KANDB (line 569) | X86_INS_KANDB = 277
  constant X86_INS_KANDD (line 570) | X86_INS_KANDD = 278
  constant X86_INS_KANDNB (line 571) | X86_INS_KANDNB = 279
  constant X86_INS_KANDND (line 572) | X86_INS_KANDND = 280
  constant X86_INS_KANDNQ (line 573) | X86_INS_KANDNQ = 281
  constant X86_INS_KANDNW (line 574) | X86_INS_KANDNW = 282
  constant X86_INS_KANDQ (line 575) | X86_INS_KANDQ = 283
  constant X86_INS_KANDW (line 576) | X86_INS_KANDW = 284
  constant X86_INS_KMOVB (line 577) | X86_INS_KMOVB = 285
  constant X86_INS_KMOVD (line 578) | X86_INS_KMOVD = 286
  constant X86_INS_KMOVQ (line 579) | X86_INS_KMOVQ = 287
  constant X86_INS_KMOVW (line 580) | X86_INS_KMOVW = 288
  constant X86_INS_KNOTB (line 581) | X86_INS_KNOTB = 289
  constant X86_INS_KNOTD (line 582) | X86_INS_KNOTD = 290
  constant X86_INS_KNOTQ (line 583) | X86_INS_KNOTQ = 291
  constant X86_INS_KNOTW (line 584) | X86_INS_KNOTW = 292
  constant X86_INS_KORB (line 585) | X86_INS_KORB = 293
  constant X86_INS_KORD (line 586) | X86_INS_KORD = 294
  constant X86_INS_KORQ (line 587) | X86_INS_KORQ = 295
  constant X86_INS_KORTESTB (line 588) | X86_INS_KORTESTB = 296
  constant X86_INS_KORTESTD (line 589) | X86_INS_KORTESTD = 297
  constant X86_INS_KORTESTQ (line 590) | X86_INS_KORTESTQ = 298
  constant X86_INS_KORTESTW (line 591) | X86_INS_KORTESTW = 299
  constant X86_INS_KORW (line 592) | X86_INS_KORW = 300
  constant X86_INS_KSHIFTLB (line 593) | X86_INS_KSHIFTLB = 301
  constant X86_INS_KSHIFTLD (line 594) | X86_INS_KSHIFTLD = 302
  constant X86_INS_KSHIFTLQ (line 595) | X86_INS_KSHIFTLQ = 303
  constant X86_INS_KSHIFTLW (line 596) | X86_INS_KSHIFTLW = 304
  constant X86_INS_KSHIFTRB (line 597) | X86_INS_KSHIFTRB = 305
  constant X86_INS_KSHIFTRD (line 598) | X86_INS_KSHIFTRD = 306
  constant X86_INS_KSHIFTRQ (line 599) | X86_INS_KSHIFTRQ = 307
  constant X86_INS_KSHIFTRW (line 600) | X86_INS_KSHIFTRW = 308
  constant X86_INS_KUNPCKBW (line 601) | X86_INS_KUNPCKBW = 309
  constant X86_INS_KXNORB (line 602) | X86_INS_KXNORB = 310
  constant X86_INS_KXNORD (line 603) | X86_INS_KXNORD = 311
  constant X86_INS_KXNORQ (line 604) | X86_INS_KXNORQ = 312
  constant X86_INS_KXNORW (line 605) | X86_INS_KXNORW = 313
  constant X86_INS_KXORB (line 606) | X86_INS_KXORB = 314
  constant X86_INS_KXORD (line 607) | X86_INS_KXORD = 315
  constant X86_INS_KXORQ (line 608) | X86_INS_KXORQ = 316
  constant X86_INS_KXORW (line 609) | X86_INS_KXORW = 317
  constant X86_INS_LAHF (line 610) | X86_INS_LAHF = 318
  constant X86_INS_LAR (line 611) | X86_INS_LAR = 319
  constant X86_INS_LDDQU (line 612) | X86_INS_LDDQU = 320
  constant X86_INS_LDMXCSR (line 613) | X86_INS_LDMXCSR = 321
  constant X86_INS_LDS (line 614) | X86_INS_LDS = 322
  constant X86_INS_FLDZ (line 615) | X86_INS_FLDZ = 323
  constant X86_INS_FLD1 (line 616) | X86_INS_FLD1 = 324
  constant X86_INS_FLD (line 617) | X86_INS_FLD = 325
  constant X86_INS_LEA (line 618) | X86_INS_LEA = 326
  constant X86_INS_LEAVE (line 619) | X86_INS_LEAVE = 327
  constant X86_INS_LES (line 620) | X86_INS_LES = 328
  constant X86_INS_LFENCE (line 621) | X86_INS_LFENCE = 329
  constant X86_INS_LFS (line 622) | X86_INS_LFS = 330
  constant X86_INS_LGDT (line 623) | X86_INS_LGDT = 331
  constant X86_INS_LGS (line 624) | X86_INS_LGS = 332
  constant X86_INS_LIDT (line 625) | X86_INS_LIDT = 333
  constant X86_INS_LLDT (line 626) | X86_INS_LLDT = 334
  constant X86_INS_LMSW (line 627) | X86_INS_LMSW = 335
  constant X86_INS_OR (line 628) | X86_INS_OR = 336
  constant X86_INS_SUB (line 629) | X86_INS_SUB = 337
  constant X86_INS_XOR (line 630) | X86_INS_XOR = 338
  constant X86_INS_LODSB (line 631) | X86_INS_LODSB = 339
  constant X86_INS_LODSD (line 632) | X86_INS_LODSD = 340
  constant X86_INS_LODSQ (line 633) | X86_INS_LODSQ = 341
  constant X86_INS_LODSW (line 634) | X86_INS_LODSW = 342
  constant X86_INS_LOOP (line 635) | X86_INS_LOOP = 343
  constant X86_INS_LOOPE (line 636) | X86_INS_LOOPE = 344
  constant X86_INS_LOOPNE (line 637) | X86_INS_LOOPNE = 345
  constant X86_INS_RETF (line 638) | X86_INS_RETF = 346
  constant X86_INS_RETFQ (line 639) | X86_INS_RETFQ = 347
  constant X86_INS_LSL (line 640) | X86_INS_LSL = 348
  constant X86_INS_LSS (line 641) | X86_INS_LSS = 349
  constant X86_INS_LTR (line 642) | X86_INS_LTR = 350
  constant X86_INS_XADD (line 643) | X86_INS_XADD = 351
  constant X86_INS_LZCNT (line 644) | X86_INS_LZCNT = 352
  constant X86_INS_MASKMOVDQU (line 645) | X86_INS_MASKMOVDQU = 353
  constant X86_INS_MAXPD (line 646) | X86_INS_MAXPD = 354
  constant X86_INS_MAXPS (line 647) | X86_INS_MAXPS = 355
  constant X86_INS_MAXSD (line 648) | X86_INS_MAXSD = 356
  constant X86_INS_MAXSS (line 649) | X86_INS_MAXSS = 357
  constant X86_INS_MFENCE (line 650) | X86_INS_MFENCE = 358
  constant X86_INS_MINPD (line 651) | X86_INS_MINPD = 359
  constant X86_INS_MINPS (line 652) | X86_INS_MINPS = 360
  constant X86_INS_MINSD (line 653) | X86_INS_MINSD = 361
  constant X86_INS_MINSS (line 654) | X86_INS_MINSS = 362
  constant X86_INS_CVTPD2PI (line 655) | X86_INS_CVTPD2PI = 363
  constant X86_INS_CVTPI2PD (line 656) | X86_INS_CVTPI2PD = 364
  constant X86_INS_CVTPI2PS (line 657) | X86_INS_CVTPI2PS = 365
  constant X86_INS_CVTPS2PI (line 658) | X86_INS_CVTPS2PI = 366
  constant X86_INS_CVTTPD2PI (line 659) | X86_INS_CVTTPD2PI = 367
  constant X86_INS_CVTTPS2PI (line 660) | X86_INS_CVTTPS2PI = 368
  constant X86_INS_EMMS (line 661) | X86_INS_EMMS = 369
  constant X86_INS_MASKMOVQ (line 662) | X86_INS_MASKMOVQ = 370
  constant X86_INS_MOVD (line 663) | X86_INS_MOVD = 371
  constant X86_INS_MOVDQ2Q (line 664) | X86_INS_MOVDQ2Q = 372
  constant X86_INS_MOVNTQ (line 665) | X86_INS_MOVNTQ = 373
  constant X86_INS_MOVQ2DQ (line 666) | X86_INS_MOVQ2DQ = 374
  constant X86_INS_MOVQ (line 667) | X86_INS_MOVQ = 375
  constant X86_INS_PABSB (line 668) | X86_INS_PABSB = 376
  constant X86_INS_PABSD (line 669) | X86_INS_PABSD = 377
  constant X86_INS_PABSW (line 670) | X86_INS_PABSW = 378
  constant X86_INS_PACKSSDW (line 671) | X86_INS_PACKSSDW = 379
  constant X86_INS_PACKSSWB (line 672) | X86_INS_PACKSSWB = 380
  constant X86_INS_PACKUSWB (line 673) | X86_INS_PACKUSWB = 381
  constant X86_INS_PADDB (line 674) | X86_INS_PADDB = 382
  constant X86_INS_PADDD (line 675) | X86_INS_PADDD = 383
  constant X86_INS_PADDQ (line 676) | X86_INS_PADDQ = 384
  constant X86_INS_PADDSB (line 677) | X86_INS_PADDSB = 385
  constant X86_INS_PADDSW (line 678) | X86_INS_PADDSW = 386
  constant X86_INS_PADDUSB (line 679) | X86_INS_PADDUSB = 387
  constant X86_INS_PADDUSW (line 680) | X86_INS_PADDUSW = 388
  constant X86_INS_PADDW (line 681) | X86_INS_PADDW = 389
  constant X86_INS_PALIGNR (line 682) | X86_INS_PALIGNR = 390
  constant X86_INS_PANDN (line 683) | X86_INS_PANDN = 391
  constant X86_INS_PAND (line 684) | X86_INS_PAND = 392
  constant X86_INS_PAVGB (line 685) | X86_INS_PAVGB = 393
  constant X86_INS_PAVGW (line 686) | X86_INS_PAVGW = 394
  constant X86_INS_PCMPEQB (line 687) | X86_INS_PCMPEQB = 395
  constant X86_INS_PCMPEQD (line 688) | X86_INS_PCMPEQD = 396
  constant X86_INS_PCMPEQW (line 689) | X86_INS_PCMPEQW = 397
  constant X86_INS_PCMPGTB (line 690) | X86_INS_PCMPGTB = 398
  constant X86_INS_PCMPGTD (line 691) | X86_INS_PCMPGTD = 399
  constant X86_INS_PCMPGTW (line 692) | X86_INS_PCMPGTW = 400
  constant X86_INS_PEXTRW (line 693) | X86_INS_PEXTRW = 401
  constant X86_INS_PHADDSW (line 694) | X86_INS_PHADDSW = 402
  constant X86_INS_PHADDW (line 695) | X86_INS_PHADDW = 403
  constant X86_INS_PHADDD (line 696) | X86_INS_PHADDD = 404
  constant X86_INS_PHSUBD (line 697) | X86_INS_PHSUBD = 405
  constant X86_INS_PHSUBSW (line 698) | X86_INS_PHSUBSW = 406
  constant X86_INS_PHSUBW (line 699) | X86_INS_PHSUBW = 407
  constant X86_INS_PINSRW (line 700) | X86_INS_PINSRW = 408
  constant X86_INS_PMADDUBSW (line 701) | X86_INS_PMADDUBSW = 409
  constant X86_INS_PMADDWD (line 702) | X86_INS_PMADDWD = 410
  constant X86_INS_PMAXSW (line 703) | X86_INS_PMAXSW = 411
  constant X86_INS_PMAXUB (line 704) | X86_INS_PMAXUB = 412
  constant X86_INS_PMINSW (line 705) | X86_INS_PMINSW = 413
  constant X86_INS_PMINUB (line 706) | X86_INS_PMINUB = 414
  constant X86_INS_PMOVMSKB (line 707) | X86_INS_PMOVMSKB = 415
  constant X86_INS_PMULHRSW (line 708) | X86_INS_PMULHRSW = 416
  constant X86_INS_PMULHUW (line 709) | X86_INS_PMULHUW = 417
  constant X86_INS_PMULHW (line 710) | X86_INS_PMULHW = 418
  constant X86_INS_PMULLW (line 711) | X86_INS_PMULLW = 419
  constant X86_INS_PMULUDQ (line 712) | X86_INS_PMULUDQ = 420
  constant X86_INS_POR (line 713) | X86_INS_POR = 421
  constant X86_INS_PSADBW (line 714) | X86_INS_PSADBW = 422
  constant X86_INS_PSHUFB (line 715) | X86_INS_PSHUFB = 423
  constant X86_INS_PSHUFW (line 716) | X86_INS_PSHUFW = 424
  constant X86_INS_PSIGNB (line 717) | X86_INS_PSIGNB = 425
  constant X86_INS_PSIGND (line 718) | X86_INS_PSIGND = 426
  constant X86_INS_PSIGNW (line 719) | X86_INS_PSIGNW = 427
  constant X86_INS_PSLLD (line 720) | X86_INS_PSLLD = 428
  constant X86_INS_PSLLQ (line 721) | X86_INS_PSLLQ = 429
  constant X86_INS_PSLLW (line 722) | X86_INS_PSLLW = 430
  constant X86_INS_PSRAD (line 723) | X86_INS_PSRAD = 431
  constant X86_INS_PSRAW (line 724) | X86_INS_PSRAW = 432
  constant X86_INS_PSRLD (line 725) | X86_INS_PSRLD = 433
  constant X86_INS_PSRLQ (line 726) | X86_INS_PSRLQ = 434
  constant X86_INS_PSRLW (line 727) | X86_INS_PSRLW = 435
  constant X86_INS_PSUBB (line 728) | X86_INS_PSUBB = 436
  constant X86_INS_PSUBD (line 729) | X86_INS_PSUBD = 437
  constant X86_INS_PSUBQ (line 730) | X86_INS_PSUBQ = 438
  constant X86_INS_PSUBSB (line 731) | X86_INS_PSUBSB = 439
  constant X86_INS_PSUBSW (line 732) | X86_INS_PSUBSW = 440
  constant X86_INS_PSUBUSB (line 733) | X86_INS_PSUBUSB = 441
  constant X86_INS_PSUBUSW (line 734) | X86_INS_PSUBUSW = 442
  constant X86_INS_PSUBW (line 735) | X86_INS_PSUBW = 443
  constant X86_INS_PUNPCKHBW (line 736) | X86_INS_PUNPCKHBW = 444
  constant X86_INS_PUNPCKHDQ (line 737) | X86_INS_PUNPCKHDQ = 445
  constant X86_INS_PUNPCKHWD (line 738) | X86_INS_PUNPCKHWD = 446
  constant X86_INS_PUNPCKLBW (line 739) | X86_INS_PUNPCKLBW = 447
  constant X86_INS_PUNPCKLDQ (line 740) | X86_INS_PUNPCKLDQ = 448
  constant X86_INS_PUNPCKLWD (line 741) | X86_INS_PUNPCKLWD = 449
  constant X86_INS_PXOR (line 742) | X86_INS_PXOR = 450
  constant X86_INS_MONITOR (line 743) | X86_INS_MONITOR = 451
  constant X86_INS_MONTMUL (line 744) | X86_INS_MONTMUL = 452
  constant X86_INS_MOV (line 745) | X86_INS_MOV = 453
  constant X86_INS_MOVABS (line 746) | X86_INS_MOVABS = 454
  constant X86_INS_MOVBE (line 747) | X86_INS_MOVBE = 455
  constant X86_INS_MOVDDUP (line 748) | X86_INS_MOVDDUP = 456
  constant X86_INS_MOVDQA (line 749) | X86_INS_MOVDQA = 457
  constant X86_INS_MOVDQU (line 750) | X86_INS_MOVDQU = 458
  constant X86_INS_MOVHLPS (line 751) | X86_INS_MOVHLPS = 459
  constant X86_INS_MOVHPD (line 752) | X86_INS_MOVHPD = 460
  constant X86_INS_MOVHPS (line 753) | X86_INS_MOVHPS = 461
  constant X86_INS_MOVLHPS (line 754) | X86_INS_MOVLHPS = 462
  constant X86_INS_MOVLPD (line 755) | X86_INS_MOVLPD = 463
  constant X86_INS_MOVLPS (line 756) | X86_INS_MOVLPS = 464
  constant X86_INS_MOVMSKPD (line 757) | X86_INS_MOVMSKPD = 465
  constant X86_INS_MOVMSKPS (line 758) | X86_INS_MOVMSKPS = 466
  constant X86_INS_MOVNTDQA (line 759) | X86_INS_MOVNTDQA = 467
  constant X86_INS_MOVNTDQ (line 760) | X86_INS_MOVNTDQ = 468
  constant X86_INS_MOVNTI (line 761) | X86_INS_MOVNTI = 469
  constant X86_INS_MOVNTPD (line 762) | X86_INS_MOVNTPD = 470
  constant X86_INS_MOVNTPS (line 763) | X86_INS_MOVNTPS = 471
  constant X86_INS_MOVNTSD (line 764) | X86_INS_MOVNTSD = 472
  constant X86_INS_MOVNTSS (line 765) | X86_INS_MOVNTSS = 473
  constant X86_INS_MOVSB (line 766) | X86_INS_MOVSB = 474
  constant X86_INS_MOVSD (line 767) | X86_INS_MOVSD = 475
  constant X86_INS_MOVSHDUP (line 768) | X86_INS_MOVSHDUP = 476
  constant X86_INS_MOVSLDUP (line 769) | X86_INS_MOVSLDUP = 477
  constant X86_INS_MOVSQ (line 770) | X86_INS_MOVSQ = 478
  constant X86_INS_MOVSS (line 771) | X86_INS_MOVSS = 479
  constant X86_INS_MOVSW (line 772) | X86_INS_MOVSW = 480
  constant X86_INS_MOVSX (line 773) | X86_INS_MOVSX = 481
  constant X86_INS_MOVSXD (line 774) | X86_INS_MOVSXD = 482
  constant X86_INS_MOVUPD (line 775) | X86_INS_MOVUPD = 483
  constant X86_INS_MOVUPS (line 776) | X86_INS_MOVUPS = 484
  constant X86_INS_MOVZX (line 777) | X86_INS_MOVZX = 485
  constant X86_INS_MPSADBW (line 778) | X86_INS_MPSADBW = 486
  constant X86_INS_MUL (line 779) | X86_INS_MUL = 487
  constant X86_INS_MULPD (line 780) | X86_INS_MULPD = 488
  constant X86_INS_MULPS (line 781) | X86_INS_MULPS = 489
  constant X86_INS_MULSD (line 782) | X86_INS_MULSD = 490
  constant X86_INS_MULSS (line 783) | X86_INS_MULSS = 491
  constant X86_INS_MULX (line 784) | X86_INS_MULX = 492
  constant X86_INS_FMUL (line 785) | X86_INS_FMUL = 493
  constant X86_INS_FIMUL (line 786) | X86_INS_FIMUL = 494
  constant X86_INS_FMULP (line 787) | X86_INS_FMULP = 495
  constant X86_INS_MWAIT (line 788) | X86_INS_MWAIT = 496
  constant X86_INS_NEG (line 789) | X86_INS_NEG = 497
  constant X86_INS_NOP (line 790) | X86_INS_NOP = 498
  constant X86_INS_NOT (line 791) | X86_INS_NOT = 499
  constant X86_INS_OUT (line 792) | X86_INS_OUT = 500
  constant X86_INS_OUTSB (line 793) | X86_INS_OUTSB = 501
  constant X86_INS_OUTSD (line 794) | X86_INS_OUTSD = 502
  constant X86_INS_OUTSW (line 795) | X86_INS_OUTSW = 503
  constant X86_INS_PACKUSDW (line 796) | X86_INS_PACKUSDW = 504
  constant X86_INS_PAUSE (line 797) | X86_INS_PAUSE = 505
  constant X86_INS_PAVGUSB (line 798) | X86_INS_PAVGUSB = 506
  constant X86_INS_PBLENDVB (line 799) | X86_INS_PBLENDVB = 507
  constant X86_INS_PBLENDW (line 800) | X86_INS_PBLENDW = 508
  constant X86_INS_PCLMULQDQ (line 801) | X86_INS_PCLMULQDQ = 509
  constant X86_INS_PCMPEQQ (line 802) | X86_INS_PCMPEQQ = 510
  constant X86_INS_PCMPESTRI (line 803) | X86_INS_PCMPESTRI = 511
  constant X86_INS_PCMPESTRM (line 804) | X86_INS_PCMPESTRM = 512
  constant X86_INS_PCMPGTQ (line 805) | X86_INS_PCMPGTQ = 513
  constant X86_INS_PCMPISTRI (line 806) | X86_INS_PCMPISTRI = 514
  constant X86_INS_PCMPISTRM (line 807) | X86_INS_PCMPISTRM = 515
  constant X86_INS_PCOMMIT (line 808) | X86_INS_PCOMMIT = 516
  constant X86_INS_PDEP (line 809) | X86_INS_PDEP = 517
  constant X86_INS_PEXT (line 810) | X86_INS_PEXT = 518
  constant X86_INS_PEXTRB (line 811) | X86_INS_PEXTRB = 519
  constant X86_INS_PEXTRD (line 812) | X86_INS_PEXTRD = 520
  constant X86_INS_PEXTRQ (line 813) | X86_INS_PEXTRQ = 521
  constant X86_INS_PF2ID (line 814) | X86_INS_PF2ID = 522
  constant X86_INS_PF2IW (line 815) | X86_INS_PF2IW = 523
  constant X86_INS_PFACC (line 816) | X86_INS_PFACC = 524
  constant X86_INS_PFADD (line 817) | X86_INS_PFADD = 525
  constant X86_INS_PFCMPEQ (line 818) | X86_INS_PFCMPEQ = 526
  constant X86_INS_PFCMPGE (line 819) | X86_INS_PFCMPGE = 527
  constant X86_INS_PFCMPGT (line 820) | X86_INS_PFCMPGT = 528
  constant X86_INS_PFMAX (line 821) | X86_INS_PFMAX = 529
  constant X86_INS_PFMIN (line 822) | X86_INS_PFMIN = 530
  constant X86_INS_PFMUL (line 823) | X86_INS_PFMUL = 531
  constant X86_INS_PFNACC (line 824) | X86_INS_PFNACC = 532
  constant X86_INS_PFPNACC (line 825) | X86_INS_PFPNACC = 533
  constant X86_INS_PFRCPIT1 (line 826) | X86_INS_PFRCPIT1 = 534
  constant X86_INS_PFRCPIT2 (line 827) | X86_INS_PFRCPIT2 = 535
  constant X86_INS_PFRCP (line 828) | X86_INS_PFRCP = 536
  constant X86_INS_PFRSQIT1 (line 829) | X86_INS_PFRSQIT1 = 537
  constant X86_INS_PFRSQRT (line 830) | X86_INS_PFRSQRT = 538
  constant X86_INS_PFSUBR (line 831) | X86_INS_PFSUBR = 539
  constant X86_INS_PFSUB (line 832) | X86_INS_PFSUB = 540
  constant X86_INS_PHMINPOSUW (line 833) | X86_INS_PHMINPOSUW = 541
  constant X86_INS_PI2FD (line 834) | X86_INS_PI2FD = 542
  constant X86_INS_PI2FW (line 835) | X86_INS_PI2FW = 543
  constant X86_INS_PINSRB (line 836) | X86_INS_PINSRB = 544
  constant X86_INS_PINSRD (line 837) | X86_INS_PINSRD = 545
  constant X86_INS_PINSRQ (line 838) | X86_INS_PINSRQ = 546
  constant X86_INS_PMAXSB (line 839) | X86_INS_PMAXSB = 547
  constant X86_INS_PMAXSD (line 840) | X86_INS_PMAXSD = 548
  constant X86_INS_PMAXUD (line 841) | X86_INS_PMAXUD = 549
  constant X86_INS_PMAXUW (line 842) | X86_INS_PMAXUW = 550
  constant X86_INS_PMINSB (line 843) | X86_INS_PMINSB = 551
  constant X86_INS_PMINSD (line 844) | X86_INS_PMINSD = 552
  constant X86_INS_PMINUD (line 845) | X86_INS_PMINUD = 553
  constant X86_INS_PMINUW (line 846) | X86_INS_PMINUW = 554
  constant X86_INS_PMOVSXBD (line 847) | X86_INS_PMOVSXBD = 555
  constant X86_INS_PMOVSXBQ (line 848) | X86_INS_PMOVSXBQ = 556
  constant X86_INS_PMOVSXBW (line 849) | X86_INS_PMOVSXBW = 557
  constant X86_INS_PMOVSXDQ (line 850) | X86_INS_PMOVSXDQ = 558
  constant X86_INS_PMOVSXWD (line 851) | X86_INS_PMOVSXWD = 559
  constant X86_INS_PMOVSXWQ (line 852) | X86_INS_PMOVSXWQ = 560
  constant X86_INS_PMOVZXBD (line 853) | X86_INS_PMOVZXBD = 561
  constant X86_INS_PMOVZXBQ (line 854) | X86_INS_PMOVZXBQ = 562
  constant X86_INS_PMOVZXBW (line 855) | X86_INS_PMOVZXBW = 563
  constant X86_INS_PMOVZXDQ (line 856) | X86_INS_PMOVZXDQ = 564
  constant X86_INS_PMOVZXWD (line 857) | X86_INS_PMOVZXWD = 565
  constant X86_INS_PMOVZXWQ (line 858) | X86_INS_PMOVZXWQ = 566
  constant X86_INS_PMULDQ (line 859) | X86_INS_PMULDQ = 567
  constant X86_INS_PMULHRW (line 860) | X86_INS_PMULHRW = 568
  constant X86_INS_PMULLD (line 861) | X86_INS_PMULLD = 569
  constant X86_INS_POP (line 862) | X86_INS_POP = 570
  constant X86_INS_POPAW (line 863) | X86_INS_POPAW = 571
  constant X86_INS_POPAL (line 864) | X86_INS_POPAL = 572
  constant X86_INS_POPCNT (line 865) | X86_INS_POPCNT = 573
  constant X86_INS_POPF (line 866) | X86_INS_POPF = 574
  constant X86_INS_POPFD (line 867) | X86_INS_POPFD = 575
  constant X86_INS_POPFQ (line 868) | X86_INS_POPFQ = 576
  constant X86_INS_PREFETCH (line 869) | X86_INS_PREFETCH = 577
  constant X86_INS_PREFETCHNTA (line 870) | X86_INS_PREFETCHNTA = 578
  constant X86_INS_PREFETCHT0 (line 871) | X86_INS_PREFETCHT0 = 579
  constant X86_INS_PREFETCHT1 (line 872) | X86_INS_PREFETCHT1 = 580
  constant X86_INS_PREFETCHT2 (line 873) | X86_INS_PREFETCHT2 = 581
  constant X86_INS_PREFETCHW (line 874) | X86_INS_PREFETCHW = 582
  constant X86_INS_PSHUFD (line 875) | X86_INS_PSHUFD = 583
  constant X86_INS_PSHUFHW (line 876) | X86_INS_PSHUFHW = 584
  constant X86_INS_PSHUFLW (line 877) | X86_INS_PSHUFLW = 585
  constant X86_INS_PSLLDQ (line 878) | X86_INS_PSLLDQ = 586
  constant X86_INS_PSRLDQ (line 879) | X86_INS_PSRLDQ = 587
  constant X86_INS_PSWAPD (line 880) | X86_INS_PSWAPD = 588
  constant X86_INS_PTEST (line 881) | X86_INS_PTEST = 589
  constant X86_INS_PUNPCKHQDQ (line 882) | X86_INS_PUNPCKHQDQ = 590
  constant X86_INS_PUNPCKLQDQ (line 883) | X86_INS_PUNPCKLQDQ = 591
  constant X86_INS_PUSH (line 884) | X86_INS_PUSH = 592
  constant X86_INS_PUSHAW (line 885) | X86_INS_PUSHAW = 593
  constant X86_INS_PUSHAL (line 886) | X86_INS_PUSHAL = 594
  constant X86_INS_PUSHF (line 887) | X86_INS_PUSHF = 595
  constant X86_INS_PUSHFD (line 888) | X86_INS_PUSHFD = 596
  constant X86_INS_PUSHFQ (line 889) | X86_INS_PUSHFQ = 597
  constant X86_INS_RCL (line 890) | X86_INS_RCL = 598
  constant X86_INS_RCPPS (line 891) | X86_INS_RCPPS = 599
  constant X86_INS_RCPSS (line 892) | X86_INS_RCPSS = 600
  constant X86_INS_RCR (line 893) | X86_INS_RCR = 601
  constant X86_INS_RDFSBASE (line 894) | X86_INS_RDFSBASE = 602
  constant X86_INS_RDGSBASE (line 895) | X86_INS_RDGSBASE = 603
  constant X86_INS_RDMSR (line 896) | X86_INS_RDMSR = 604
  constant X86_INS_RDPMC (line 897) | X86_INS_RDPMC = 605
  constant X86_INS_RDRAND (line 898) | X86_INS_RDRAND = 606
  constant X86_INS_RDSEED (line 899) | X86_INS_RDSEED = 607
  constant X86_INS_RDTSC (line 900) | X86_INS_RDTSC = 608
  constant X86_INS_RDTSCP (line 901) | X86_INS_RDTSCP = 609
  constant X86_INS_ROL (line 902) | X86_INS_ROL = 610
  constant X86_INS_ROR (line 903) | X86_INS_ROR = 611
  constant X86_INS_RORX (line 904) | X86_INS_RORX = 612
  constant X86_INS_ROUNDPD (line 905) | X86_INS_ROUNDPD = 613
  constant X86_INS_ROUNDPS (line 906) | X86_INS_ROUNDPS = 614
  constant X86_INS_ROUNDSD (line 907) | X86_INS_ROUNDSD = 615
  constant X86_INS_ROUNDSS (line 908) | X86_INS_ROUNDSS = 616
  constant X86_INS_RSM (line 909) | X86_INS_RSM = 617
  constant X86_INS_RSQRTPS (line 910) | X86_INS_RSQRTPS = 618
  constant X86_INS_RSQRTSS (line 911) | X86_INS_RSQRTSS = 619
  constant X86_INS_SAHF (line 912) | X86_INS_SAHF = 620
  constant X86_INS_SAL (line 913) | X86_INS_SAL = 621
  constant X86_INS_SALC (line 914) | X86_INS_SALC = 622
  constant X86_INS_SAR (line 915) | X86_INS_SAR = 623
  constant X86_INS_SARX (line 916) | X86_INS_SARX = 624
  constant X86_INS_SBB (line 917) | X86_INS_SBB = 625
  constant X86_INS_SCASB (line 918) | X86_INS_SCASB = 626
  constant X86_INS_SCASD (line 919) | X86_INS_SCASD = 627
  constant X86_INS_SCASQ (line 920) | X86_INS_SCASQ = 628
  constant X86_INS_SCASW (line 921) | X86_INS_SCASW = 629
  constant X86_INS_SETAE (line 922) | X86_INS_SETAE = 630
  constant X86_INS_SETA (line 923) | X86_INS_SETA = 631
  constant X86_INS_SETBE (line 924) | X86_INS_SETBE = 632
  constant X86_INS_SETB (line 925) | X86_INS_SETB = 633
  constant X86_INS_SETE (line 926) | X86_INS_SETE = 634
  constant X86_INS_SETGE (line 927) | X86_INS_SETGE = 635
  constant X86_INS_SETG (line 928) | X86_INS_SETG = 636
  constant X86_INS_SETLE (line 929) | X86_INS_SETLE = 637
  constant X86_INS_SETL (line 930) | X86_INS_SETL = 638
  constant X86_INS_SETNE (line 931) | X86_INS_SETNE = 639
  constant X86_INS_SETNO (line 932) | X86_INS_SETNO = 640
  constant X86_INS_SETNP (line 933) | X86_INS_SETNP = 641
  constant X86_INS_SETNS (line 934) | X86_INS_SETNS = 642
  constant X86_INS_SETO (line 935) | X86_INS_SETO = 643
  constant X86_INS_SETP (line 936) | X86_INS_SETP = 644
  constant X86_INS_SETS (line 937) | X86_INS_SETS = 645
  constant X86_INS_SFENCE (line 938) | X86_INS_SFENCE = 646
  constant X86_INS_SGDT (line 939) | X86_INS_SGDT = 647
  constant X86_INS_SHA1MSG1 (line 940) | X86_INS_SHA1MSG1 = 648
  constant X86_INS_SHA1MSG2 (line 941) | X86_INS_SHA1MSG2 = 649
  constant X86_INS_SHA1NEXTE (line 942) | X86_INS_SHA1NEXTE = 650
  constant X86_INS_SHA1RNDS4 (line 943) | X86_INS_SHA1RNDS4 = 651
  constant X86_INS_SHA256MSG1 (line 944) | X86_INS_SHA256MSG1 = 652
  constant X86_INS_SHA256MSG2 (line 945) | X86_INS_SHA256MSG2 = 653
  constant X86_INS_SHA256RNDS2 (line 946) | X86_INS_SHA256RNDS2 = 654
  constant X86_INS_SHL (line 947) | X86_INS_SHL = 655
  constant X86_INS_SHLD (line 948) | X86_INS_SHLD = 656
  constant X86_INS_SHLX (line 949) | X86_INS_SHLX = 657
  constant X86_INS_SHR (line 950) | X86_INS_SHR = 658
  constant X86_INS_SHRD (line 951) | X86_INS_SHRD = 659
  constant X86_INS_SHRX (line 952) | X86_INS_SHRX = 660
  constant X86_INS_SHUFPD (line 953) | X86_INS_SHUFPD = 661
  constant X86_INS_SHUFPS (line 954) | X86_INS_SHUFPS = 662
  constant X86_INS_SIDT (line 955) | X86_INS_SIDT = 663
  constant X86_INS_FSIN (line 956) | X86_INS_FSIN = 664
  constant X86_INS_SKINIT (line 957) | X86_INS_SKINIT = 665
  constant X86_INS_SLDT (line 958) | X86_INS_SLDT = 666
  constant X86_INS_SMSW (line 959) | X86_INS_SMSW = 667
  constant X86_INS_SQRTPD (line 960) | X86_INS_SQRTPD = 668
  constant X86_INS_SQRTPS (line 961) | X86_INS_SQRTPS = 669
  constant X86_INS_SQRTSD (line 962) | X86_INS_SQRTSD = 670
  constant X86_INS_SQRTSS (line 963) | X86_INS_SQRTSS = 671
  constant X86_INS_FSQRT (line 964) | X86_INS_FSQRT = 672
  constant X86_INS_STAC (line 965) | X86_INS_STAC = 673
  constant X86_INS_STC (line 966) | X86_INS_STC = 674
  constant X86_INS_STD (line 967) | X86_INS_STD = 675
  constant X86_INS_STGI (line 968) | X86_INS_STGI = 676
  constant X86_INS_STI (line 969) | X86_INS_STI = 677
  constant X86_INS_STMXCSR (line 970) | X86_INS_STMXCSR = 678
  constant X86_INS_STOSB (line 971) | X86_INS_STOSB = 679
  constant X86_INS_STOSD (line 972) | X86_INS_STOSD = 680
  constant X86_INS_STOSQ (line 973) | X86_INS_STOSQ = 681
  constant X86_INS_STOSW (line 974) | X86_INS_STOSW = 682
  constant X86_INS_STR (line 975) | X86_INS_STR = 683
  constant X86_INS_FST (line 976) | X86_INS_FST = 684
  constant X86_INS_FSTP (line 977) | X86_INS_FSTP = 685
  constant X86_INS_FSTPNCE (line 978) | X86_INS_FSTPNCE = 686
  constant X86_INS_FXCH (line 979) | X86_INS_FXCH = 687
  constant X86_INS_SUBPD (line 980) | X86_INS_SUBPD = 688
  constant X86_INS_SUBPS (line 981) | X86_INS_SUBPS = 689
  constant X86_INS_FSUBR (line 982) | X86_INS_FSUBR = 690
  constant X86_INS_FISUBR (line 983) | X86_INS_FISUBR = 691
  constant X86_INS_FSUBRP (line 984) | X86_INS_FSUBRP = 692
  constant X86_INS_SUBSD (line 985) | X86_INS_SUBSD = 693
  constant X86_INS_SUBSS (line 986) | X86_INS_SUBSS = 694
  constant X86_INS_FSUB (line 987) | X86_INS_FSUB = 695
  constant X86_INS_FISUB (line 988) | X86_INS_FISUB = 696
  constant X86_INS_FSUBP (line 989) | X86_INS_FSUBP = 697
  constant X86_INS_SWAPGS (line 990) | X86_INS_SWAPGS = 698
  constant X86_INS_SYSCALL (line 991) | X86_INS_SYSCALL = 699
  constant X86_INS_SYSENTER (line 992) | X86_INS_SYSENTER = 700
  constant X86_INS_SYSEXIT (line 993) | X86_INS_SYSEXIT = 701
  constant X86_INS_SYSRET (line 994) | X86_INS_SYSRET = 702
  constant X86_INS_T1MSKC (line 995) | X86_INS_T1MSKC = 703
  constant X86_INS_TEST (line 996) | X86_INS_TEST = 704
  constant X86_INS_UD2 (line 997) | X86_INS_UD2 = 705
  constant X86_INS_FTST (line 998) | X86_INS_FTST = 706
  constant X86_INS_TZCNT (line 999) | X86_INS_TZCNT = 707
  constant X86_INS_TZMSK (line 1000) | X86_INS_TZMSK = 708
  constant X86_INS_FUCOMPI (line 1001) | X86_INS_FUCOMPI = 709
  constant X86_INS_FUCOMI (line 1002) | X86_INS_FUCOMI = 710
  constant X86_INS_FUCOMPP (line 1003) | X86_INS_FUCOMPP = 711
  constant X86_INS_FUCOMP (line 1004) | X86_INS_FUCOMP = 712
  constant X86_INS_FUCOM (line 1005) | X86_INS_FUCOM = 713
  constant X86_INS_UD2B (line 1006) | X86_INS_UD2B = 714
  constant X86_INS_UNPCKHPD (line 1007) | X86_INS_UNPCKHPD = 715
  constant X86_INS_UNPCKHPS (line 1008) | X86_INS_UNPCKHPS = 716
  constant X86_INS_UNPCKLPD (line 1009) | X86_INS_UNPCKLPD = 717
  constant X86_INS_UNPCKLPS (line 1010) | X86_INS_UNPCKLPS = 718
  constant X86_INS_VADDPD (line 1011) | X86_INS_VADDPD = 719
  constant X86_INS_VADDPS (line 1012) | X86_INS_VADDPS = 720
  constant X86_INS_VADDSD (line 1013) | X86_INS_VADDSD = 721
  constant X86_INS_VADDSS (line 1014) | X86_INS_VADDSS = 722
  constant X86_INS_VADDSUBPD (line 1015) | X86_INS_VADDSUBPD = 723
  constant X86_INS_VADDSUBPS (line 1016) | X86_INS_VADDSUBPS = 724
  constant X86_INS_VAESDECLAST (line 1017) | X86_INS_VAESDECLAST = 725
  constant X86_INS_VAESDEC (line 1018) | X86_INS_VAESDEC = 726
  constant X86_INS_VAESENCLAST (line 1019) | X86_INS_VAESENCLAST = 727
  constant X86_INS_VAESENC (line 1020) | X86_INS_VAESENC = 728
  constant X86_INS_VAESIMC (line 1021) | X86_INS_VAESIMC = 729
  constant X86_INS_VAESKEYGENASSIST (line 1022) | X86_INS_VAESKEYGENASSIST = 730
  constant X86_INS_VALIGND (line 1023) | X86_INS_VALIGND = 731
  constant X86_INS_VALIGNQ (line 1024) | X86_INS_VALIGNQ = 732
  constant X86_INS_VANDNPD (line 1025) | X86_INS_VANDNPD = 733
  constant X86_INS_VANDNPS (line 1026) | X86_INS_VANDNPS = 734
  constant X86_INS_VANDPD (line 1027) | X86_INS_VANDPD = 735
  constant X86_INS_VANDPS (line 1028) | X86_INS_VANDPS = 736
  constant X86_INS_VBLENDMPD (line 1029) | X86_INS_VBLENDMPD = 737
  constant X86_INS_VBLENDMPS (line 1030) | X86_INS_VBLENDMPS = 738
  constant X86_INS_VBLENDPD (line 1031) | X86_INS_VBLENDPD = 739
  constant X86_INS_VBLENDPS (line 1032) | X86_INS_VBLENDPS = 740
  constant X86_INS_VBLENDVPD (line 1033) | X86_INS_VBLENDVPD = 741
  constant X86_INS_VBLENDVPS (line 1034) | X86_INS_VBLENDVPS = 742
  constant X86_INS_VBROADCASTF128 (line 1035) | X86_INS_VBROADCASTF128 = 743
  constant X86_INS_VBROADCASTI32X4 (line 1036) | X86_INS_VBROADCASTI32X4 = 744
  constant X86_INS_VBROADCASTI64X4 (line 1037) | X86_INS_VBROADCASTI64X4 = 745
  constant X86_INS_VBROADCASTSD (line 1038) | X86_INS_VBROADCASTSD = 746
  constant X86_INS_VBROADCASTSS (line 1039) | X86_INS_VBROADCASTSS = 747
  constant X86_INS_VCMPPD (line 1040) | X86_INS_VCMPPD = 748
  constant X86_INS_VCMPPS (line 1041) | X86_INS_VCMPPS = 749
  constant X86_INS_VCMPSD (line 1042) | X86_INS_VCMPSD = 750
  constant X86_INS_VCMPSS (line 1043) | X86_INS_VCMPSS = 751
  constant X86_INS_VCOMPRESSPD (line 1044) | X86_INS_VCOMPRESSPD = 752
  constant X86_INS_VCOMPRESSPS (line 1045) | X86_INS_VCOMPRESSPS = 753
  constant X86_INS_VCVTDQ2PD (line 1046) | X86_INS_VCVTDQ2PD = 754
  constant X86_INS_VCVTDQ2PS (line 1047) | X86_INS_VCVTDQ2PS = 755
  constant X86_INS_VCVTPD2DQX (line 1048) | X86_INS_VCVTPD2DQX = 756
  constant X86_INS_VCVTPD2DQ (line 1049) | X86_INS_VCVTPD2DQ = 757
  constant X86_INS_VCVTPD2PSX (line 1050) | X86_INS_VCVTPD2PSX = 758
  constant X86_INS_VCVTPD2PS (line 1051) | X86_INS_VCVTPD2PS = 759
  constant X86_INS_VCVTPD2UDQ (line 1052) | X86_INS_VCVTPD2UDQ = 760
  constant X86_INS_VCVTPH2PS (line 1053) | X86_INS_VCVTPH2PS = 761
  constant X86_INS_VCVTPS2DQ (line 1054) | X86_INS_VCVTPS2DQ = 762
  constant X86_INS_VCVTPS2PD (line 1055) | X86_INS_VCVTPS2PD = 763
  constant X86_INS_VCVTPS2PH (line 1056) | X86_INS_VCVTPS2PH = 764
  constant X86_INS_VCVTPS2UDQ (line 1057) | X86_INS_VCVTPS2UDQ = 765
  constant X86_INS_VCVTSD2SI (line 1058) | X86_INS_VCVTSD2SI = 766
  constant X86_INS_VCVTSD2USI (line 1059) | X86_INS_VCVTSD2USI = 767
  constant X86_INS_VCVTSS2SI (line 1060) | X86_INS_VCVTSS2SI = 768
  constant X86_INS_VCVTSS2USI (line 1061) | X86_INS_VCVTSS2USI = 769
  constant X86_INS_VCVTTPD2DQX (line 1062) | X86_INS_VCVTTPD2DQX = 770
  constant X86_INS_VCVTTPD2DQ (line 1063) | X86_INS_VCVTTPD2DQ = 771
  constant X86_INS_VCVTTPD2UDQ (line 1064) | X86_INS_VCVTTPD2UDQ = 772
  constant X86_INS_VCVTTPS2DQ (line 1065) | X86_INS_VCVTTPS2DQ = 773
  constant X86_INS_VCVTTPS2UDQ (line 1066) | X86_INS_VCVTTPS2UDQ = 774
  constant X86_INS_VCVTUDQ2PD (line 1067) | X86_INS_VCVTUDQ2PD = 775
  constant X86_INS_VCVTUDQ2PS (line 1068) | X86_INS_VCVTUDQ2PS = 776
  constant X86_INS_VDIVPD (line 1069) | X86_INS_VDIVPD = 777
  constant X86_INS_VDIVPS (line 1070) | X86_INS_VDIVPS = 778
  constant X86_INS_VDIVSD (line 1071) | X86_INS_VDIVSD = 779
  constant X86_INS_VDIVSS (line 1072) | X86_INS_VDIVSS = 780
  constant X86_INS_VDPPD (line 1073) | X86_INS_VDPPD = 781
  constant X86_INS_VDPPS (line 1074) | X86_INS_VDPPS = 782
  constant X86_INS_VERR (line 1075) | X86_INS_VERR = 783
  constant X86_INS_VERW (line 1076) | X86_INS_VERW = 784
  constant X86_INS_VEXP2PD (line 1077) | X86_INS_VEXP2PD = 785
  constant X86_INS_VEXP2PS (line 1078) | X86_INS_VEXP2PS = 786
  constant X86_INS_VEXPANDPD (line 1079) | X86_INS_VEXPANDPD = 787
  constant X86_INS_VEXPANDPS (line 1080) | X86_INS_VEXPANDPS = 788
  constant X86_INS_VEXTRACTF128 (line 1081) | X86_INS_VEXTRACTF128 = 789
  constant X86_INS_VEXTRACTF32X4 (line 1082) | X86_INS_VEXTRACTF32X4 = 790
  constant X86_INS_VEXTRACTF64X4 (line 1083) | X86_INS_VEXTRACTF64X4 = 791
  constant X86_INS_VEXTRACTI128 (line 1084) | X86_INS_VEXTRACTI128 = 792
  constant X86_INS_VEXTRACTI32X4 (line 1085) | X86_INS_VEXTRACTI32X4 = 793
  constant X86_INS_VEXTRACTI64X4 (line 1086) | X86_INS_VEXTRACTI64X4 = 794
  constant X86_INS_VEXTRACTPS (line 1087) | X86_INS_VEXTRACTPS = 795
  constant X86_INS_VFMADD132PD (line 1088) | X86_INS_VFMADD132PD = 796
  constant X86_INS_VFMADD132PS (line 1089) | X86_INS_VFMADD132PS = 797
  constant X86_INS_VFMADDPD (line 1090) | X86_INS_VFMADDPD = 798
  constant X86_INS_VFMADD213PD (line 1091) | X86_INS_VFMADD213PD = 799
  constant X86_INS_VFMADD231PD (line 1092) | X86_INS_VFMADD231PD = 800
  constant X86_INS_VFMADDPS (line 1093) | X86_INS_VFMADDPS = 801
  constant X86_INS_VFMADD213PS (line 1094) | X86_INS_VFMADD213PS = 802
  constant X86_INS_VFMADD231PS (line 1095) | X86_INS_VFMADD231PS = 803
  constant X86_INS_VFMADDSD (line 1096) | X86_INS_VFMADDSD = 804
  constant X86_INS_VFMADD213SD (line 1097) | X86_INS_VFMADD213SD = 805
  constant X86_INS_VFMADD132SD (line 1098) | X86_INS_VFMADD132SD = 806
  constant X86_INS_VFMADD231SD (line 1099) | X86_INS_VFMADD231SD = 807
  constant X86_INS_VFMADDSS (line 1100) | X86_INS_VFMADDSS = 808
  constant X86_INS_VFMADD213SS (line 1101) | X86_INS_VFMADD213SS = 809
  constant X86_INS_VFMADD132SS (line 1102) | X86_INS_VFMADD132SS = 810
  constant X86_INS_VFMADD231SS (line 1103) | X86_INS_VFMADD231SS = 811
  constant X86_INS_VFMADDSUB132PD (line 1104) | X86_INS_VFMADDSUB132PD = 812
  constant X86_INS_VFMADDSUB132PS (line 1105) | X86_INS_VFMADDSUB132PS = 813
  constant X86_INS_VFMADDSUBPD (line 1106) | X86_INS_VFMADDSUBPD = 814
  constant X86_INS_VFMADDSUB213PD (line 1107) | X86_INS_VFMADDSUB213PD = 815
  constant X86_INS_VFMADDSUB231PD (line 1108) | X86_INS_VFMADDSUB231PD = 816
  constant X86_INS_VFMADDSUBPS (line 1109) | X86_INS_VFMADDSUBPS = 817
  constant X86_INS_VFMADDSUB213PS (line 1110) | X86_INS_VFMADDSUB213PS = 818
  constant X86_INS_VFMADDSUB231PS (line 1111) | X86_INS_VFMADDSUB231PS = 819
  constant X86_INS_VFMSUB132PD (line 1112) | X86_INS_VFMSUB132PD = 820
  constant X86_INS_VFMSUB132PS (line 1113) | X86_INS_VFMSUB132PS = 821
  constant X86_INS_VFMSUBADD132PD (line 1114) | X86_INS_VFMSUBADD132PD = 822
  constant X86_INS_VFMSUBADD132PS (line 1115) | X86_INS_VFMSUBADD132PS = 823
  constant X86_INS_VFMSUBADDPD (line 1116) | X86_INS_VFMSUBADDPD = 824
  constant X86_INS_VFMSUBADD213PD (line 1117) | X86_INS_VFMSUBADD213PD = 825
  constant X86_INS_VFMSUBADD231PD (line 1118) | X86_INS_VFMSUBADD231PD = 826
  constant X86_INS_VFMSUBADDPS (line 1119) | X86_INS_VFMSUBADDPS = 827
  constant X86_INS_VFMSUBADD213PS (line 1120) | X86_INS_VFMSUBADD213PS = 828
  constant X86_INS_VFMSUBADD231PS (line 1121) | X86_INS_VFMSUBADD231PS = 829
  constant X86_INS_VFMSUBPD (line 1122) | X86_INS_VFMSUBPD = 830
  constant X86_INS_VFMSUB213PD (line 1123) | X86_INS_VFMSUB213PD = 831
  constant X86_INS_VFMSUB231PD (line 1124) | X86_INS_VFMSUB231PD = 832
  constant X86_INS_VFMSUBPS (line 1125) | X86_INS_VFMSUBPS = 833
  constant X86_INS_VFMSUB213PS (line 1126) | X86_INS_VFMSUB213PS = 834
  constant X86_INS_VFMSUB231PS (line 1127) | X86_INS_VFMSUB231PS = 835
  constant X86_INS_VFMSUBSD (line 1128) | X86_INS_VFMSUBSD = 836
  constant X86_INS_VFMSUB213SD (line 1129) | X86_INS_VFMSUB213SD = 837
  constant X86_INS_VFMSUB132SD (line 1130) | X86_INS_VFMSUB132SD = 838
  constant X86_INS_VFMSUB231SD (line 1131) | X86_INS_VFMSUB231SD = 839
  constant X86_INS_VFMSUBSS (line 1132) | X86_INS_VFMSUBSS = 840
  constant X86_INS_VFMSUB213SS (line 1133) | X86_INS_VFMSUB213SS = 841
  constant X86_INS_VFMSUB132SS (line 1134) | X86_INS_VFMSUB132SS = 842
  constant X86_INS_VFMSUB231SS (line 1135) | X86_INS_VFMSUB231SS = 843
  constant X86_INS_VFNMADD132PD (line 1136) | X86_INS_VFNMADD132PD = 844
  constant X86_INS_VFNMADD132PS (line 1137) | X86_INS_VFNMADD132PS = 845
  constant X86_INS_VFNMADDPD (line 1138) | X86_INS_VFNMADDPD = 846
  constant X86_INS_VFNMADD213PD (line 1139) | X86_INS_VFNMADD213PD = 847
  constant X86_INS_VFNMADD231PD (line 1140) | X86_INS_VFNMADD231PD = 848
  constant X86_INS_VFNMADDPS (line 1141) | X86_INS_VFNMADDPS = 849
  constant X86_INS_VFNMADD213PS (line 1142) | X86_INS_VFNMADD213PS = 850
  constant X86_INS_VFNMADD231PS (line 1143) | X86_INS_VFNMADD231PS = 851
  constant X86_INS_VFNMADDSD (line 1144) | X86_INS_VFNMADDSD = 852
  constant X86_INS_VFNMADD213SD (line 1145) | X86_INS_VFNMADD213SD = 853
  constant X86_INS_VFNMADD132SD (line 1146) | X86_INS_VFNMADD132SD = 854
  constant X86_INS_VFNMADD231SD (line 1147) | X86_INS_VFNMADD231SD = 855
  constant X86_INS_VFNMADDSS (line 1148) | X86_INS_VFNMADDSS = 856
  constant X86_INS_VFNMADD213SS (line 1149) | X86_INS_VFNMADD213SS = 857
  constant X86_INS_VFNMADD132SS (line 1150) | X86_INS_VFNMADD132SS = 858
  constant X86_INS_VFNMADD231SS (line 1151) | X86_INS_VFNMADD231SS = 859
  constant X86_INS_VFNMSUB132PD (line 1152) | X86_INS_VFNMSUB132PD = 860
  constant X86_INS_VFNMSUB132PS (line 1153) | X86_INS_VFNMSUB132PS = 861
  constant X86_INS_VFNMSUBPD (line 1154) | X86_INS_VFNMSUBPD = 862
  constant X86_INS_VFNMSUB213PD (line 1155) | X86_INS_VFNMSUB213PD = 863
  constant X86_INS_VFNMSUB231PD (line 1156) | X86_INS_VFNMSUB231PD = 864
  constant X86_INS_VFNMSUBPS (line 1157) | X86_INS_VFNMSUBPS = 865
  constant X86_INS_VFNMSUB213PS (line 1158) | X86_INS_VFNMSUB213PS = 866
  constant X86_INS_VFNMSUB231PS (line 1159) | X86_INS_VFNMSUB231PS = 867
  constant X86_INS_VFNMSUBSD (line 1160) | X86_INS_VFNMSUBSD = 868
  constant X86_INS_VFNMSUB213SD (line 1161) | X86_INS_VFNMSUB213SD = 869
  constant X86_INS_VFNMSUB132SD (line 1162) | X86_INS_VFNMSUB132SD = 870
  constant X86_INS_VFNMSUB231SD (line 1163) | X86_INS_VFNMSUB231SD = 871
  constant X86_INS_VFNMSUBSS (line 1164) | X86_INS_VFNMSUBSS = 872
  constant X86_INS_VFNMSUB213SS (line 1165) | X86_INS_VFNMSUB213SS = 873
  constant X86_INS_VFNMSUB132SS (line 1166) | X86_INS_VFNMSUB132SS = 874
  constant X86_INS_VFNMSUB231SS (line 1167) | X86_INS_VFNMSUB231SS = 875
  constant X86_INS_VFRCZPD (line 1168) | X86_INS_VFRCZPD = 876
  constant X86_INS_VFRCZPS (line 1169) | X86_INS_VFRCZPS = 877
  constant X86_INS_VFRCZSD (line 1170) | X86_INS_VFRCZSD = 878
  constant X86_INS_VFRCZSS (line 1171) | X86_INS_VFRCZSS = 879
  constant X86_INS_VORPD (line 1172) | X86_INS_VORPD = 880
  constant X86_INS_VORPS (line 1173) | X86_INS_VORPS = 881
  constant X86_INS_VXORPD (line 1174) | X86_INS_VXORPD = 882
  constant X86_INS_VXORPS (line 1175) | X86_INS_VXORPS = 883
  constant X86_INS_VGATHERDPD (line 1176) | X86_INS_VGATHERDPD = 884
  constant X86_INS_VGATHERDPS (line 1177) | X86_INS_VGATHERDPS = 885
  constant X86_INS_VGATHERPF0DPD (line 1178) | X86_INS_VGATHERPF0DPD = 886
  constant X86_INS_VGATHERPF0DPS (line 1179) | X86_INS_VGATHERPF0DPS = 887
  constant X86_INS_VGATHERPF0QPD (line 1180) | X86_INS_VGATHERPF0QPD = 888
  constant X86_INS_VGATHERPF0QPS (line 1181) | X86_INS_VGATHERPF0QPS = 889
  constant X86_INS_VGATHERPF1DPD (line 1182) | X86_INS_VGATHERPF1DPD = 890
  constant X86_INS_VGATHERPF1DPS (line 1183) | X86_INS_VGATHERPF1DPS = 891
  constant X86_INS_VGATHERPF1QPD (line 1184) | X86_INS_VGATHERPF1QPD = 892
  constant X86_INS_VGATHERPF1QPS (line 1185) | X86_INS_VGATHERPF1QPS = 893
  constant X86_INS_VGATHERQPD (line 1186) | X86_INS_VGATHERQPD = 894
  constant X86_INS_VGATHERQPS (line 1187) | X86_INS_VGATHERQPS = 895
  constant X86_INS_VHADDPD (line 1188) | X86_INS_VHADDPD = 896
  constant X86_INS_VHADDPS (line 1189) | X86_INS_VHADDPS = 897
  constant X86_INS_VHSUBPD (line 1190) | X86_INS_VHSUBPD = 898
  constant X86_INS_VHSUBPS (line 1191) | X86_INS_VHSUBPS = 899
  constant X86_INS_VINSERTF128 (line 1192) | X86_INS_VINSERTF128 = 900
  constant X86_INS_VINSERTF32X4 (line 1193) | X86_INS_VINSERTF32X4 = 901
  constant X86_INS_VINSERTF32X8 (line 1194) | X86_INS_VINSERTF32X8 = 902
  constant X86_INS_VINSERTF64X2 (line 1195) | X86_INS_VINSERTF64X2 = 903
  constant X86_INS_VINSERTF64X4 (line 1196) | X86_INS_VINSERTF64X4 = 904
  constant X86_INS_VINSERTI128 (line 1197) | X86_INS_VINSERTI128 = 905
  constant X86_INS_VINSERTI32X4 (line 1198) | X86_INS_VINSERTI32X4 = 906
  constant X86_INS_VINSERTI32X8 (line 1199) | X86_INS_VINSERTI32X8 = 907
  constant X86_INS_VINSERTI64X2 (line 1200) | X86_INS_VINSERTI64X2 = 908
  constant X86_INS_VINSERTI64X4 (line 1201) | X86_INS_VINSERTI64X4 = 909
  constant X86_INS_VINSERTPS (line 1202) | X86_INS_VINSERTPS = 910
  constant X86_INS_VLDDQU (line 1203) | X86_INS_VLDDQU = 911
  constant X86_INS_VLDMXCSR (line 1204) | X86_INS_VLDMXCSR = 912
  constant X86_INS_VMASKMOVDQU (line 1205) | X86_INS_VMASKMOVDQU = 913
  constant X86_INS_VMASKMOVPD (line 1206) | X86_INS_VMASKMOVPD = 914
  constant X86_INS_VMASKMOVPS (line 1207) | X86_INS_VMASKMOVPS = 915
  constant X86_INS_VMAXPD (line 1208) | X86_INS_VMAXPD = 916
  constant X86_INS_VMAXPS (line 1209) | X86_INS_VMAXPS = 917
  constant X86_INS_VMAXSD (line 1210) | X86_INS_VMAXSD = 918
  constant X86_INS_VMAXSS (line 1211) | X86_INS_VMAXSS = 919
  constant X86_INS_VMCALL (line 1212) | X86_INS_VMCALL = 920
  constant X86_INS_VMCLEAR (line 1213) | X86_INS_VMCLEAR = 921
  constant X86_INS_VMFUNC (line 1214) | X86_INS_VMFUNC = 922
  constant X86_INS_VMINPD (line 1215) | X86_INS_VMINPD = 923
  constant X86_INS_VMINPS (line 1216) | X86_INS_VMINPS = 924
  constant X86_INS_VMINSD (line 1217) | X86_INS_VMINSD = 925
  constant X86_INS_VMINSS (line 1218) | X86_INS_VMINSS = 926
  constant X86_INS_VMLAUNCH (line 1219) | 
Copy disabled (too large) Download .json
Condensed preview — 1026 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (21,239K chars).
[
  {
    "path": ".clang-format",
    "chars": 460,
    "preview": "BasedOnStyle: LLVM\nIndentWidth: 4\nUseTab: Never\nBreakBeforeBraces: Linux\nAllowShortIfStatementsOnASingleLine: Never\nAllo"
  },
  {
    "path": ".github/workflows/Crate-publishing.yml",
    "chars": 1816,
    "preview": "name: Crate 📦 Distribution\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github."
  },
  {
    "path": ".github/workflows/Nuget-publishing.yml",
    "chars": 15949,
    "preview": "name: Nuget 📦 Distribution\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github."
  },
  {
    "path": ".github/workflows/build-uc2.yml",
    "chars": 20547,
    "preview": "name: Build UC2\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n  ca"
  },
  {
    "path": ".github/workflows/build-wheels-publish.yml",
    "chars": 7587,
    "preview": "name: Build and publish wheels with cibuildwheel\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_req"
  },
  {
    "path": ".github/workflows/prerelease.yml",
    "chars": 1378,
    "preview": "on:\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.re"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1376,
    "preview": "on:\n  workflow_dispatch:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.re"
  },
  {
    "path": ".github/workflows/zigbuild.yml",
    "chars": 3112,
    "preview": "name: Zig Build\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}\n  ca"
  },
  {
    "path": ".gitignore",
    "chars": 1122,
    "preview": ".DS_Store\n*.swp\n*.d\n*.o\n*.a\n*.dSYM\n*.so\n*.so.*\n*.exe\n*.dll\n*.class\n*.jar\n*.gem\n*~\n\nqemu/*-softmmu/\n\ntags\nqemu/config-hos"
  },
  {
    "path": ".gitmodules",
    "chars": 152,
    "preview": "[submodule \"docs/Unicorn_Engine_Documentation\"]\n\tpath = docs/Unicorn_Engine_Documentation\n\turl = https://github.com/kabe"
  },
  {
    "path": "AUTHORS.TXT",
    "chars": 81,
    "preview": "Nguyen Anh Quynh <aquynh -at- gmail.com>\nDang Hoang Vu <dang.hvu -at- gmail.com>\n"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 50482,
    "preview": "# CMake setup for Unicorn 2.\n# By Huitao Chen & Nguyen Anh Quynh, 2019-2020\n\ncmake_minimum_required(VERSION 3.5...3.20)\n"
  },
  {
    "path": "COPYING",
    "chars": 17992,
    "preview": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
  },
  {
    "path": "COPYING.LGPL2",
    "chars": 25383,
    "preview": "                  GNU LIBRARY GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1991 Fr"
  },
  {
    "path": "COPYING_GLIB",
    "chars": 25292,
    "preview": "\t\t  GNU LIBRARY GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1991 Free Software Foundation, Inc."
  },
  {
    "path": "CREDITS.TXT",
    "chars": 2196,
    "preview": "This file credits all the contributors of the Unicorn engine project.\n\n\nKey developers\n==============\nNguyen Anh Quynh <"
  },
  {
    "path": "Cargo.toml",
    "chars": 2330,
    "preview": "[workspace]\nmembers = [\"bindings/rust/unicorn-engine\"]\nresolver = \"2\"\n\n[workspace.package]\nrust-version = \"1.85.0\"\nversi"
  },
  {
    "path": "ChangeLog",
    "chars": 27324,
    "preview": "This file details the changelog of Unicorn Engine.\n\n-------------------------------\n[Version 2.1.4]: September 9th, 2025"
  },
  {
    "path": "README.md",
    "chars": 2365,
    "preview": "Unicorn Engine\n==============\n\n[![pypi downloads](https://pepy.tech/badge/unicorn)](https://pepy.tech/project/unicorn)\n["
  },
  {
    "path": "SECURITY.md",
    "chars": 41,
    "preview": "aquynh -at- gmail.com\n\nmio -at- lazym.io\n"
  },
  {
    "path": "TODO",
    "chars": 61,
    "preview": "Moved to https://github.com/unicorn-engine/unicorn/milestones"
  },
  {
    "path": "bindings/Makefile",
    "chars": 1265,
    "preview": "# Unicorn Engine\n# By Nguyen Anh Quynh & Dang Hoang Vu, 2015\nDIFF = diff\n\nSAMPLE_SOURCE = $(wildcard ../samples/*.c)\nSAM"
  },
  {
    "path": "bindings/README",
    "chars": 1346,
    "preview": "This directory contains bindings & test code for Python, Java, Go and .NET.\nSee <language>/README or <language>/README.T"
  },
  {
    "path": "bindings/const_generator.py",
    "chars": 12117,
    "preview": "#!/usr/bin/env python3\n# Unicorn Engine\n# By Dang Hoang Vu, 2013\nfrom __future__ import print_function\nimport sys, re, o"
  },
  {
    "path": "bindings/dotnet/README.md",
    "chars": 1049,
    "preview": "This documentation explains how to use the .NET binding for Unicorn\nfrom source. \n\n0. Install the core engine as a depen"
  },
  {
    "path": "bindings/dotnet/UnicornDotNet.sln",
    "chars": 1472,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.23107.0\nMini"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Binding/BindingFactory.fs",
    "chars": 229,
    "preview": "namespace UnicornEngine.Binding\n\n\nmodule BindingFactory =\n    let mutable _instance = NativeBinding.instance\n\n    let s"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Binding/IBinding.fs",
    "chars": 1485,
    "preview": "namespace UnicornEngine.Binding\n\nopen System\n\ntype IBinding =\n    interface\n        abstract Version : UIntPtr * UIntPt"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Binding/MockBinding.fs",
    "chars": 3414,
    "preview": "namespace UnicornEngine.Binding\n\nopen System\n\nmodule internal MockBinding =\n    // by using a mutables variables it is "
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Binding/NativeBinding.fs",
    "chars": 5627,
    "preview": "namespace UnicornEngine.Binding\n\nopen System\nopen System.Runtime.InteropServices\n\nmodule NativeBinding =\n\n    [<AutoOpe"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Arm.fs",
    "chars": 5636,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Arm64.fs",
    "chars": 10120,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Common.fs",
    "chars": 4286,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/M68k.fs",
    "chars": 1520,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Mips.fs",
    "chars": 6746,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Ppc.fs",
    "chars": 13690,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Riscv.fs",
    "chars": 9221,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/S390x.fs",
    "chars": 5278,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/Sparc.fs",
    "chars": 4319,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/TriCore.fs",
    "chars": 4079,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Const/X86.fs",
    "chars": 52994,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nnamespace UnicornEngine.Const\n\nopen System\n\n[<AutoOpen>]\nmodule"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/ConvertUtility.fs",
    "chars": 542,
    "preview": "namespace UnicornEngine\n\nopen System\n\n[<AutoOpen>]\nmodule internal ConvertUtility =\n\n    let int64ToBytes(v: Int64) =\n "
  },
  {
    "path": "bindings/dotnet/UnicornEngine/InternalHooks.fs",
    "chars": 1434,
    "preview": "namespace UnicornEngine\n\nopen System\nopen System.Runtime.InteropServices\n\n// internal hooks to be passed to native Unic"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/Unicorn.fs",
    "chars": 16997,
    "preview": "namespace UnicornEngine\n\nopen System\nopen System.Collections.Generic\nopen System.Runtime.InteropServices\nopen System.Li"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/UnicornEngine.fsproj",
    "chars": 1895,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n    <PackageId>Unicor"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/UnicornEngineException.fs",
    "chars": 168,
    "preview": "namespace UnicornEngine\n\nopen System\n\ntype UnicornEngineException(errNo: Int32, msg: String) =\n    inherit ApplicationE"
  },
  {
    "path": "bindings/dotnet/UnicornEngine/WinNativeImport.fs",
    "chars": 747,
    "preview": "namespace UnicornEngine\r\n\r\nopen System\r\nopen System.Runtime.InteropServices\r\n\r\nmodule private WinNativeImport =\r\n    mo"
  },
  {
    "path": "bindings/dotnet/UnicornSamples/Program.cs",
    "chars": 591,
    "preview": "using System;\n\nnamespace UnicornSamples\n{\n    internal static class Program\n    {\n        private static void Main(stri"
  },
  {
    "path": "bindings/dotnet/UnicornSamples/ShellcodeSample.cs",
    "chars": 6466,
    "preview": "using Gee.External.Capstone;\nusing Gee.External.Capstone.X86;\nusing System;\nusing System.Diagnostics;\nusing System.Text"
  },
  {
    "path": "bindings/dotnet/UnicornSamples/UnicornSamples.csproj",
    "chars": 1005,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n    <OutputType>Exe</"
  },
  {
    "path": "bindings/dotnet/UnicornSamples/Utils.cs",
    "chars": 1199,
    "preview": "using Gee.External.Capstone.X86;\nusing System;\nusing System.Text;\n\nnamespace UnicornSamples\n{\n    internal static class"
  },
  {
    "path": "bindings/dotnet/UnicornSamples/X86Sample32.cs",
    "chars": 10324,
    "preview": "using Gee.External.Capstone;\nusing Gee.External.Capstone.X86;\nusing System;\nusing System.Diagnostics;\nusing System.Text"
  },
  {
    "path": "bindings/go/Makefile",
    "chars": 277,
    "preview": "# Go binding for Unicorn engine. Ryan Hileman <lunixbochs@gmail.com>\n\n.PHONY: all gen_const test\n\nall: gen_const\n\tcd uni"
  },
  {
    "path": "bindings/go/README.md",
    "chars": 881,
    "preview": "To download/update the Unicorn Go bindings, run:\n\n    go get -u github.com/unicorn-engine/unicorn/bindings/go\n\nA very ba"
  },
  {
    "path": "bindings/go/sample.go",
    "chars": 2703,
    "preview": "package main\n\nimport (\n\t\"encoding/hex\"\n\t\"fmt\"\n\tuc \"github.com/unicorn-engine/unicorn/bindings/go/unicorn\"\n\t\"strings\"\n)\n\n"
  },
  {
    "path": "bindings/go/unicorn/arm64_const.go",
    "chars": 6958,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [arm64_const.go]\nconst (\n\n// ARM64 CPU\n\n\tCPU_ARM"
  },
  {
    "path": "bindings/go/unicorn/arm_const.go",
    "chars": 3752,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [arm_const.go]\nconst (\n\n// ARM CPU\n\n\tCPU_ARM_926"
  },
  {
    "path": "bindings/go/unicorn/cgo.go",
    "chars": 81,
    "preview": "package unicorn\n\n// #cgo CFLAGS: -I../../../include -O3 -Wall -Werror\nimport \"C\"\n"
  },
  {
    "path": "bindings/go/unicorn/cgo_dynamic.go",
    "chars": 75,
    "preview": "//go:build !static\n\npackage unicorn\n\n// #cgo LDFLAGS: -lunicorn\nimport \"C\"\n"
  },
  {
    "path": "bindings/go/unicorn/cgo_static.go",
    "chars": 142,
    "preview": "//go:build static\n\npackage unicorn\n\n// #cgo !darwin LDFLAGS: -lunicorn -lpthread -lm -latomic\n// #cgo  darwin LDFLAGS: -"
  },
  {
    "path": "bindings/go/unicorn/context.go",
    "chars": 612,
    "preview": "package unicorn\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// #include <unicorn/unicorn.h>\nimport \"C\"\n\ntype Context **C.uc_contex"
  },
  {
    "path": "bindings/go/unicorn/context_test.go",
    "chars": 432,
    "preview": "package unicorn\n\nimport (\n\t\"testing\"\n)\n\nfunc TestContext(t *testing.T) {\n\tu, err := NewUnicorn(ARCH_X86, MODE_32)\n\tif er"
  },
  {
    "path": "bindings/go/unicorn/hook.c",
    "chars": 1826,
    "preview": "#include <unicorn/unicorn.h>\n#include \"_cgo_export.h\"\n\nuc_err uc_hook_add(uc_engine *uc, uc_hook *hh, int type, void *ca"
  },
  {
    "path": "bindings/go/unicorn/hook.go",
    "chars": 4267,
    "preview": "package unicorn\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n/*\n#include <unicorn/unicorn.h>\n#include \"hook.h\"\n*/\nimport \"C\""
  },
  {
    "path": "bindings/go/unicorn/hook.h",
    "chars": 988,
    "preview": "uc_err uc_hook_add_wrap(uc_engine *handle, uc_hook *h2, uc_hook_type type, void *callback, uintptr_t user, uint64_t begi"
  },
  {
    "path": "bindings/go/unicorn/m68k_const.go",
    "chars": 1030,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [m68k_const.go]\nconst (\n\n// M68K CPU\n\n\tCPU_M68K_"
  },
  {
    "path": "bindings/go/unicorn/mips_const.go",
    "chars": 4528,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [mips_const.go]\nconst (\n\n// MIPS32 CPUS\n\n\tCPU_MI"
  },
  {
    "path": "bindings/go/unicorn/ppc_const.go",
    "chars": 9722,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [ppc_const.go]\nconst (\n\n// PPC CPU\n\n\tCPU_PPC32_4"
  },
  {
    "path": "bindings/go/unicorn/reg_batch.go",
    "chars": 2237,
    "preview": "package unicorn\n\nimport (\n\t\"errors\"\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n/*\n#include <unicorn/unicorn.h>\n\nvoid *reg_batch_setup(int *"
  },
  {
    "path": "bindings/go/unicorn/riscv_const.go",
    "chars": 6481,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [riscv_const.go]\nconst (\n\n// RISCV32 CPU\n\n\tCPU_R"
  },
  {
    "path": "bindings/go/unicorn/s390x_const.go",
    "chars": 3646,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [s390x_const.go]\nconst (\n\n// S390X CPU\n\n\tCPU_S39"
  },
  {
    "path": "bindings/go/unicorn/sparc_const.go",
    "chars": 3025,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [sparc_const.go]\nconst (\n\n// SPARC32 CPU\n\n\tCPU_S"
  },
  {
    "path": "bindings/go/unicorn/tricore_const.go",
    "chars": 2869,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [tricore_const.go]\nconst (\n\n// TRICORE CPU\n\n\tCPU"
  },
  {
    "path": "bindings/go/unicorn/uc.c",
    "chars": 895,
    "preview": "#include <stdlib.h>\n#include <unicorn/unicorn.h>\n#include \"_cgo_export.h\"\n\nuc_err uc_reg_read_batch_helper(uc_engine *ha"
  },
  {
    "path": "bindings/go/unicorn/uc.h",
    "chars": 252,
    "preview": "uc_err uc_reg_read_batch_helper(uc_engine *handle, int *regs, uint64_t *val_out, int count);\nuc_err uc_reg_write_batch_h"
  },
  {
    "path": "bindings/go/unicorn/unicorn.go",
    "chars": 6303,
    "preview": "package unicorn\n\nimport (\n\t\"runtime\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n/*\n#include <unicorn/unicorn.h>\n#include \"uc.h\"\n*/\nimport \"C\"\n"
  },
  {
    "path": "bindings/go/unicorn/unicorn_const.go",
    "chars": 2855,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [unicorn_const.go]\nconst (\n\tAPI_MAJOR = 2\n\tAPI_M"
  },
  {
    "path": "bindings/go/unicorn/unicorn_test.go",
    "chars": 1495,
    "preview": "package unicorn\n\nimport (\n\t\"testing\"\n)\n\nfunc TestMemUnmap(t *testing.T) {\n\tmu, err := NewUnicorn(ARCH_X86, MODE_32)\n\tif "
  },
  {
    "path": "bindings/go/unicorn/x86.go",
    "chars": 1292,
    "preview": "package unicorn\n\nimport (\n\t\"unsafe\"\n)\n\n// #include <unicorn/unicorn.h>\n// #include <unicorn/x86.h>\nimport \"C\"\n\ntype X86M"
  },
  {
    "path": "bindings/go/unicorn/x86_const.go",
    "chars": 36770,
    "preview": "package unicorn\n// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT [x86_const.go]\nconst (\n\n// X86 CPU\n\n\tCPU_X86_QEM"
  },
  {
    "path": "bindings/go/unicorn/x86_test.go",
    "chars": 4242,
    "preview": "package unicorn\n\nimport (\n\t\"testing\"\n)\n\nvar ADDRESS uint64 = 0x1000000\n\nfunc MakeUc(mode int, code string) (Unicorn, err"
  },
  {
    "path": "bindings/haskell/.gitignore",
    "chars": 225,
    "preview": "dist\ncabal-dev\n*.o\n*.hi\n*.chi\n*.chs.h\n*.dyn_o\n*.dyn_hi\n.virtualenv\n.hpc\n.hsenv\n.cabal-sandbox/\ncabal.sandbox.config\n*.pr"
  },
  {
    "path": "bindings/haskell/README.TXT",
    "chars": 916,
    "preview": "This documentation explains how to install Haskell binding for Unicorn\nfrom source.\n\n\n0. Install the core engine as depe"
  },
  {
    "path": "bindings/haskell/Setup.hs",
    "chars": 46,
    "preview": "import Distribution.Simple\nmain = defaultMain\n"
  },
  {
    "path": "bindings/haskell/samples/SampleArm.hs",
    "chars": 4017,
    "preview": "-- Sample code to demonstrate how to emulate ARM code\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU.A"
  },
  {
    "path": "bindings/haskell/samples/SampleArm64.hs",
    "chars": 2447,
    "preview": "-- Sample code to demonstrate how to emulate ARM64 code\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU"
  },
  {
    "path": "bindings/haskell/samples/SampleBatchReg.hs",
    "chars": 2771,
    "preview": "import Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU.X86 as X86\n\nimport Control.Monad.Trans.Class (lift)\nimpo"
  },
  {
    "path": "bindings/haskell/samples/SampleM68k.hs",
    "chars": 4587,
    "preview": "-- Sample code to demonstrate how to emulate m68k code\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU."
  },
  {
    "path": "bindings/haskell/samples/SampleMips.hs",
    "chars": 3942,
    "preview": "-- Sample code to demonstrate how to emulate Mips code (big endian)\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified"
  },
  {
    "path": "bindings/haskell/samples/SampleSparc.hs",
    "chars": 2439,
    "preview": "-- Sample code to demonstrate how to emulate Sparc code\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU"
  },
  {
    "path": "bindings/haskell/samples/SampleX86.hs",
    "chars": 25065,
    "preview": "-- Sample code to demonstrate how to emulate X86 code\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.CPU.X"
  },
  {
    "path": "bindings/haskell/samples/Shellcode.hs",
    "chars": 5606,
    "preview": "-- Sample code to trace code with Linux code with syscall\n\nimport Unicorn\nimport Unicorn.Hook\nimport qualified Unicorn.C"
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/Arm.chs",
    "chars": 615,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.Arm\nDescription : Definitions for the ARM archi"
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/Arm64.chs",
    "chars": 651,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.Arm64\nDescription : Definitions for the ARM64 ("
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/M68k.chs",
    "chars": 628,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.Mk68k\nDescription : Definitions for the MK68K a"
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/Mips.chs",
    "chars": 1577,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.Mips\nDescription : Definitions for the MIPS arc"
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/Sparc.chs",
    "chars": 634,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.Sparc\nDescription : Definitions for the SPARC a"
  },
  {
    "path": "bindings/haskell/src/Unicorn/CPU/X86.chs",
    "chars": 1994,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.CPU.X86\nDescription : Definitions for the X86 archi"
  },
  {
    "path": "bindings/haskell/src/Unicorn/Hook.hs",
    "chars": 9233,
    "preview": "{-|\nModule      : Unicorn.Hook\nDescription : Unicorn hooks.\nCopyright   : (c) Adrian Herrera, 2016\nLicense     : GPL-2\n\n"
  },
  {
    "path": "bindings/haskell/src/Unicorn/Internal/Core.chs",
    "chars": 1402,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.Internal.Core\nDescription : Core Unicorn components"
  },
  {
    "path": "bindings/haskell/src/Unicorn/Internal/Hook.chs",
    "chars": 15613,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n\n{-|\nModule      : Unicorn.Internal.Hook\nDescription : Unicorn hooks.\nCopyrigh"
  },
  {
    "path": "bindings/haskell/src/Unicorn/Internal/Unicorn.chs",
    "chars": 8301,
    "preview": "{-# LANGUAGE ForeignFunctionInterface #-}\n{-# LANGUAGE ScopedTypeVariables #-}\n\n{-|\nModule      : Unicorn.Internal.Unico"
  },
  {
    "path": "bindings/haskell/src/Unicorn/Internal/Util.hs",
    "chars": 718,
    "preview": "{-|\nModule      : Unicorn.Internal.Util\nDescription : Utility (aka helper) functions for the Unicorn emulator.\nCopyright"
  },
  {
    "path": "bindings/haskell/src/Unicorn.hs",
    "chars": 13064,
    "preview": "{-|\nModule      : Unicorn\nDescription : The Unicorn CPU emulator.\nCopyright   : (c) Adrian Herrera, 2016\nLicense     : G"
  },
  {
    "path": "bindings/haskell/src/cbits/unicorn_wrapper.c",
    "chars": 1148,
    "preview": "#include <stdlib.h>\n\n#include \"unicorn_wrapper.h\"\n\nvoid uc_close_wrapper(uc_engine *uc) {\n    uc_close(uc);\n}\n\nvoid uc_c"
  },
  {
    "path": "bindings/haskell/src/include/unicorn_wrapper.h",
    "chars": 825,
    "preview": "#ifndef UNICORN_WRAPPER_H\n#define UNICORN_WRAPPER_H\n\n#include <stdint.h>\n#include <unicorn/unicorn.h>\n\n/*\n * Wrap Unicor"
  },
  {
    "path": "bindings/haskell/unicorn.cabal",
    "chars": 1558,
    "preview": "-- Initial unicorn.cabal generated by cabal init.  For further \n-- documentation, see http://haskell.org/cabal/users-gui"
  },
  {
    "path": "bindings/java/.gitignore",
    "chars": 8,
    "preview": "target/\n"
  },
  {
    "path": "bindings/java/CMakeLists.txt",
    "chars": 725,
    "preview": "cmake_minimum_required(VERSION 3.1)\n\nfind_package(JNI)\n\nif (JNI_FOUND)\n    message (STATUS \"JNI_INCLUDE_DIRS=${JNI_INCLU"
  },
  {
    "path": "bindings/java/Makefile",
    "chars": 1182,
    "preview": "# Makefile for the native JNI library. Automatically called by Maven.\n\nJAVA_HOME ?= $(shell java -XshowSettings:properti"
  },
  {
    "path": "bindings/java/README.md",
    "chars": 1597,
    "preview": "This documentation explains how to install the Java binding for Unicorn\nfrom source.\n\n0. Follow `docs/COMPILE.md` in the"
  },
  {
    "path": "bindings/java/eclipse-formatter.xml",
    "chars": 45179,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<profiles version=\"22\">\n    <profile kind=\"CodeFormatterProfile\" "
  },
  {
    "path": "bindings/java/pom.xml",
    "chars": 2925,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Arm64Const.java",
    "chars": 16587,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface Arm64Const {\n\n    // ARM64 C"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Arm64SysHook.java",
    "chars": 1585,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Arm64_CP.java",
    "chars": 1422,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/ArmConst.java",
    "chars": 9478,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface ArmConst {\n\n    // ARM CPU\n\n"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Arm_CP.java",
    "chars": 882,
    "preview": "package unicorn;\n\n/** ARM coprocessor register for MRC, MCR, MRRC, MCRR */\npublic class Arm_CP {\n    public int cp, is64"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/BlockHook.java",
    "chars": 1207,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/CodeHook.java",
    "chars": 1192,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/CpuidHook.java",
    "chars": 1214,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/EdgeGeneratedHook.java",
    "chars": 1270,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/EventMemHook.java",
    "chars": 1808,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Hook.java",
    "chars": 796,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/InHook.java",
    "chars": 1252,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/InstructionHook.java",
    "chars": 829,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/InterruptHook.java",
    "chars": 1115,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/InvalidInstructionHook.java",
    "chars": 1367,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/M68kConst.java",
    "chars": 2443,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface M68kConst {\n\n    // M68K CPU"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/MemHook.java",
    "chars": 1679,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/MemRegion.java",
    "chars": 1120,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2016 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/MipsConst.java",
    "chars": 11239,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface MipsConst {\n\n    // MIPS32 C"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/MmioReadHandler.java",
    "chars": 1363,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/MmioWriteHandler.java",
    "chars": 1376,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/OutHook.java",
    "chars": 1220,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/PpcConst.java",
    "chars": 21900,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface PpcConst {\n\n    // PPC CPU\n\n"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/RiscvConst.java",
    "chars": 14827,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface RiscvConst {\n\n    // RISCV32"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/S390xConst.java",
    "chars": 8532,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface S390xConst {\n\n    // S390X C"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/SparcConst.java",
    "chars": 6922,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface SparcConst {\n\n    // SPARC32"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/SyscallHook.java",
    "chars": 1148,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/TcgOpcodeHook.java",
    "chars": 1546,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/TlbFillHook.java",
    "chars": 1798,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/TranslationBlock.java",
    "chars": 1144,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/TriCoreConst.java",
    "chars": 6514,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface TriCoreConst {\n\n    // TRICO"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/Unicorn.java",
    "chars": 55982,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle, 2023 Robert Xiao\n\nThis program is free"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/UnicornConst.java",
    "chars": 7205,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface UnicornConst {\n    public st"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/UnicornException.java",
    "chars": 908,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/X86Const.java",
    "chars": 86950,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\npackage unicorn;\n\npublic interface X86Const {\n\n    // X86 CPU\n\n"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/X86_Float80.java",
    "chars": 2254,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/X86_MMR.java",
    "chars": 1433,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2016 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/main/java/unicorn/X86_MSR.java",
    "chars": 1101,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/SampleNetworkAuditing.java",
    "chars": 19280,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_arm.java",
    "chars": 11261,
    "preview": "/* Unicorn Emulator Engine */\n/* By Nguyen Anh Quynh, 2015 */\n\n/* Sample code to demonstrate how to emulate ARM code */\n"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_arm64.java",
    "chars": 10158,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_ctl.java",
    "chars": 5260,
    "preview": "package samples;\n\nimport java.util.Arrays;\n\nimport unicorn.*;\n\npublic class Sample_ctl implements UnicornConst, X86Const"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_m68k.java",
    "chars": 5776,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_mips.java",
    "chars": 4509,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_mmu.java",
    "chars": 7907,
    "preview": "package samples;\n\nimport unicorn.*;\n\npublic class Sample_mmu implements UnicornConst, X86Const {\n    /** Code:\n     * <p"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_ppc.java",
    "chars": 2958,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_riscv.java",
    "chars": 15508,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_s390x.java",
    "chars": 2849,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_sparc.java",
    "chars": 3151,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_tricore.java",
    "chars": 2842,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_x86.java",
    "chars": 39849,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Sample_x86_mmr.java",
    "chars": 8484,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2016 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Shellcode.java",
    "chars": 4663,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2015 Chris Eagle\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/java/src/test/java/samples/Utils.java",
    "chars": 1282,
    "preview": "package samples;\n\npublic class Utils {\n    public static byte[] hexToBytes(String s) {\n        int len = s.length();\n   "
  },
  {
    "path": "bindings/java/src/test/java/tests/FunctionalityTests.java",
    "chars": 7585,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertThrows;\nimport static "
  },
  {
    "path": "bindings/java/src/test/java/tests/HookTests.java",
    "chars": 4882,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assert.assertThrows;\n\nimport org.ju"
  },
  {
    "path": "bindings/java/src/test/java/tests/MemTests.java",
    "chars": 5358,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertEquals;\n\nimport java.nio.ByteBuffer;\nimport java.nio.ByteOrder;\n\nim"
  },
  {
    "path": "bindings/java/src/test/java/tests/RegTests.java",
    "chars": 9416,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertArrayEquals;\nimport static org.junit.Assert.assertEquals;\nimport st"
  },
  {
    "path": "bindings/java/src/test/java/tests/RegressionTests.java",
    "chars": 2636,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertEquals;\n\nimport java.math.BigInteger;\n\nimport org.junit.Ignore;\nimp"
  },
  {
    "path": "bindings/java/src/test/java/tests/TestSamples.java",
    "chars": 59115,
    "preview": "package tests;\n\nimport static org.junit.Assert.assertEquals;\nimport static org.junit.Assume.assumeTrue;\n\nimport java.io."
  },
  {
    "path": "bindings/java/unicorn_Unicorn.c",
    "chars": 49197,
    "preview": "/*\n\nJava bindings for the Unicorn Emulator Engine\n\nCopyright(c) 2023 Robert Xiao\n\nThis program is free software; you can"
  },
  {
    "path": "bindings/pascal/LICENSE",
    "chars": 18008,
    "preview": "GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundati"
  },
  {
    "path": "bindings/pascal/README.md",
    "chars": 1303,
    "preview": "# unicorn-engine-pascal\n\nPascal/Delphi language binding for the [Unicorn emulator](http://www.unicorn-engine.org/)\n([Git"
  },
  {
    "path": "bindings/pascal/examples/x86.lpi",
    "chars": 2977,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectOptions>\n    <Version Value=\"10\"/>\n    <General>\n      <Flags>"
  },
  {
    "path": "bindings/pascal/examples/x86.lpr",
    "chars": 32236,
    "preview": "{\n  FreePascal/Delphi bindings for the UnicornEngine Emulator Engine .\n\n  Copyright(c) 2018 Coldzer0 .\n\n  License : GPLv"
  },
  {
    "path": "bindings/pascal/examples/x86.lps",
    "chars": 6172,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CONFIG>\n  <ProjectSession>\n    <Version Value=\"10\"/>\n    <BuildModes Active=\"Deb"
  },
  {
    "path": "bindings/pascal/unicorn/Arm64Const.pas",
    "chars": 8516,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit Arm64Const;\n\ninterface\n\nconst\n// ARM64 CPU\n\n  UC_CPU_ARM64"
  },
  {
    "path": "bindings/pascal/unicorn/ArmConst.pas",
    "chars": 4685,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit ArmConst;\n\ninterface\n\nconst\n// ARM CPU\n\n  UC_CPU_ARM_926 ="
  },
  {
    "path": "bindings/pascal/unicorn/M68kConst.pas",
    "chars": 1268,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit M68kConst;\n\ninterface\n\nconst\n// M68K CPU\n\n  UC_CPU_M68K_M5"
  },
  {
    "path": "bindings/pascal/unicorn/MipsConst.pas",
    "chars": 5616,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit MipsConst;\n\ninterface\n\nconst\n// MIPS32 CPUS\n\n  UC_CPU_MIPS"
  },
  {
    "path": "bindings/pascal/unicorn/PpcConst.pas",
    "chars": 11695,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit PpcConst;\n\ninterface\n\nconst\n// PPC CPU\n\n  UC_CPU_PPC32_401"
  },
  {
    "path": "bindings/pascal/unicorn/RiscvConst.pas",
    "chars": 7834,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit RiscvConst;\n\ninterface\n\nconst\n// RISCV32 CPU\n\n  UC_CPU_RIS"
  },
  {
    "path": "bindings/pascal/unicorn/S390xConst.pas",
    "chars": 4439,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit S390xConst;\n\ninterface\n\nconst\n// S390X CPU\n\n  UC_CPU_S390X"
  },
  {
    "path": "bindings/pascal/unicorn/SparcConst.pas",
    "chars": 3663,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit SparcConst;\n\ninterface\n\nconst\n// SPARC32 CPU\n\n  UC_CPU_SPA"
  },
  {
    "path": "bindings/pascal/unicorn/TriCoreConst.pas",
    "chars": 3467,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit TriCoreConst;\n\ninterface\n\nconst\n// TRICORE CPU\n\n  UC_CPU_T"
  },
  {
    "path": "bindings/pascal/unicorn/UnicornConst.pas",
    "chars": 3568,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit UnicornConst;\n\ninterface\n\nconst  UC_API_MAJOR = 2;\n  UC_AP"
  },
  {
    "path": "bindings/pascal/unicorn/Unicorn_dyn.pas",
    "chars": 24156,
    "preview": "{\n  FreePascal/Delphi bindings for the UnicornEngine Emulator Engine \\\n  Tested On Mac - Win - Linux >> with FreePascal "
  },
  {
    "path": "bindings/pascal/unicorn/X86Const.pas",
    "chars": 44873,
    "preview": "// For Unicorn Engine. AUTO-GENERATED FILE, DO NOT EDIT\n\nunit X86Const;\n\ninterface\n\nconst\n// X86 CPU\n\n  UC_CPU_X86_QEMU6"
  },
  {
    "path": "bindings/python/MANIFEST.in",
    "chars": 196,
    "preview": "recursive-include src *\nrecursive-include prebuilt *\ngraft unicorn/lib\ngraft unicorn/include\nglobal-include *.a\nglobal-i"
  },
  {
    "path": "bindings/python/Makefile",
    "chars": 2253,
    "preview": "# Python binding for Unicorn engine. Nguyen Anh Quynh <aquynh@gmail.com>\n\n.PHONY: gen_const install install3 clean sdist"
  },
  {
    "path": "bindings/python/README.md",
    "chars": 2955,
    "preview": "# Unicorn\n\nUnicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework\nbased on [QEMU](http://qe"
  },
  {
    "path": "bindings/python/prebuilt/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "bindings/python/pyproject.toml",
    "chars": 1466,
    "preview": "[build-system]\nrequires = [\"setuptools>=64\", \"build\", \"setuptools-scm\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[projec"
  },
  {
    "path": "bindings/python/setup.py",
    "chars": 5983,
    "preview": "# Python binding for Unicorn engine. Nguyen Anh Quynh <aquynh@gmail.com>\n\nimport glob\nimport logging\nimport os\nimport pl"
  },
  {
    "path": "bindings/python/tests/test_arm.py",
    "chars": 3640,
    "preview": "#!/usr/bin/env python\n# Sample code for ARM of Unicorn. Nguyen Anh Quynh <aquynh@gmail.com>\n# Python sample ported by Lo"
  },
  {
    "path": "bindings/python/tests/test_arm64.py",
    "chars": 3658,
    "preview": "#!/usr/bin/env python\n# Sample code for ARM64 of Unicorn. Nguyen Anh Quynh <aquynh@gmail.com>\n# Python sample ported by "
  },
  {
    "path": "bindings/python/tests/test_arm64eb.py",
    "chars": 2123,
    "preview": "#!/usr/bin/env python\n# Sample code for ARM64 of Unicorn. Nguyen Anh Quynh <aquynh@gmail.com>\n# Python sample ported by "
  }
]

// ... and 826 more files (download for full content)

About this extraction

This page contains the full source code of the unicorn-engine/unicorn GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1026 files (19.5 MB), approximately 5.2M tokens, and a symbol index with 19704 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!