-- GENERATED by C->Haskell Compiler, version 0.28.8 Switcheroo, 25 November 2017 (Haskell)
-- Edit the ORIGNAL .chs file instead!


{-# LINE 1 "src/Hapstone/Internal/Arm.chs" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-|
Module      : Hapstone.Internal.Arm
Description : ARM architecture header ported using C2HS + some boilerplate
Copyright   : (c) Inokentiy Babushkin, 2016
License     : BSD3
Maintainer  : Inokentiy Babushkin <inokentiy.babushkin@googlemail.com>
Stability   : experimental

This module contains ARM specific datatypes and their respective Storable
instances. Most of the types are used internally and can be looked up here.
Some of them are currently unused, as the headers only define them as symbolic
constants whose type is never used explicitly, which poses a problem for a
memory-safe port to the Haskell language, this is about to get fixed in a
future version.

Apart from that, because the module is generated using C2HS, some of the
documentation is misplaced or rendered incorrectly, so if in doubt, read the
source file.
-}
module Hapstone.Internal.Arm where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Storable as C2HSImp






{-# LINE 25 "src/Hapstone/Internal/Arm.chs" #-}


import Foreign
import Foreign.C.Types

-- | ARM shift type
data ArmShifter = ArmSftInvalid
                | ArmSftAsr
                | ArmSftLsl
                | ArmSftLsr
                | ArmSftRor
                | ArmSftRrx
                | ArmSftAsrReg
                | ArmSftLslReg
                | ArmSftLsrReg
                | ArmSftRorReg
                | ArmSftRrxReg
  deriving (Int -> ArmShifter -> ShowS
[ArmShifter] -> ShowS
ArmShifter -> String
(Int -> ArmShifter -> ShowS)
-> (ArmShifter -> String)
-> ([ArmShifter] -> ShowS)
-> Show ArmShifter
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ArmShifter] -> ShowS
$cshowList :: [ArmShifter] -> ShowS
show :: ArmShifter -> String
$cshow :: ArmShifter -> String
showsPrec :: Int -> ArmShifter -> ShowS
$cshowsPrec :: Int -> ArmShifter -> ShowS
Show,ArmShifter -> ArmShifter -> Bool
(ArmShifter -> ArmShifter -> Bool)
-> (ArmShifter -> ArmShifter -> Bool) -> Eq ArmShifter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ArmShifter -> ArmShifter -> Bool
$c/= :: ArmShifter -> ArmShifter -> Bool
== :: ArmShifter -> ArmShifter -> Bool
$c== :: ArmShifter -> ArmShifter -> Bool
Eq,ArmShifter
ArmShifter -> ArmShifter -> Bounded ArmShifter
forall a. a -> a -> Bounded a
maxBound :: ArmShifter
$cmaxBound :: ArmShifter
minBound :: ArmShifter
$cminBound :: ArmShifter
Bounded)
instance Enum ArmShifter where
  succ :: ArmShifter -> ArmShifter
succ ArmShifter
ArmSftInvalid = ArmShifter
ArmSftAsr
  succ ArmShifter
ArmSftAsr = ArmShifter
ArmSftLsl
  succ ArmShifter
ArmSftLsl = ArmShifter
ArmSftLsr
  succ ArmShifter
ArmSftLsr = ArmShifter
ArmSftRor
  succ ArmShifter
ArmSftRor = ArmShifter
ArmSftRrx
  succ ArmShifter
ArmSftRrx = ArmShifter
ArmSftAsrReg
  succ ArmShifter
ArmSftAsrReg = ArmShifter
ArmSftLslReg
  succ ArmShifter
ArmSftLslReg = ArmShifter
ArmSftLsrReg
  succ ArmShifter
ArmSftLsrReg = ArmShifter
ArmSftRorReg
  succ ArmShifter
ArmSftRorReg = ArmShifter
ArmSftRrxReg
  succ ArmShifter
ArmSftRrxReg = error String
"ArmShifter.succ: ArmSftRrxReg has no successor"

  succ :: ArmCpsmodeType -> ArmCpsmodeType
pred ArmSftAsr = ArmSftInvalid
  pred ArmSftLsl = ArmSftAsr
  pred ArmSftLsr = ArmSftLsl
  pred ArmSftRor = ArmSftLsr
  pred :: ArmCpsmodeType -> ArmCpsmodeType
pred ArmSftRrx = ArmSftRor
  pred ArmCpsmodeType
ArmSftAsrReg = ArmSftRrx
  pred ArmSftLslReg = ArmSftAsrReg
  pred ArmSftLsrReg = ArmSftLslReg
  pred ArmSftRorReg = ArmSftLsrReg
  pred ArmSftRrxReg = ArmSftRorReg
  pred ArmSftInvalid = error "ArmShifter.pred: ArmSftInvalid has no predecessor"

  enumFromTo :: ArmShifter -> ArmShifter -> [ArmShifter]
enumFromTo ArmShifter
from ArmShifter
to = ArmShifter -> [ArmShifter]
forall t. Enum t => t -> [t]
go ArmShifter
from
    where
      end :: Int
end = ArmShifter -> Int
forall a. Enum a => a -> Int
fromEnum ArmShifter
to
      go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
                 Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
                 EQ -> [v]
                 Ordering
GT -> []

  enumFrom :: ArmShifter -> [ArmShifter]
enumFrom ArmShifter
from = ArmShifter -> ArmShifter -> [ArmShifter]
forall a. Enum a => a -> a -> [a]
enumFromTo ArmShifter
from ArmShifter
ArmSftRrxReg

  fromEnum :: ArmShifter -> Int
fromEnum ArmShifter
ArmSftInvalid = Int
0
  fromEnum ArmShifter
ArmSftAsr = Int
1
  fromEnum ArmShifter
ArmSftLsl = Int
2
  enumFrom :: ArmCpsflagType -> [ArmCpsflagType]
fromEnum ArmShifter
ArmSftLsr = Int
3
  fromEnum ArmShifter
ArmSftRor = Int
4
  fromEnum :: ArmCpsflagType -> Int
fromEnum ArmShifter
ArmSftRrx = Int
5
  enumFrom :: ArmOpType -> [ArmOpType]
fromEnum ArmShifter
ArmSftAsrReg = Int
6
  fromEnum ArmShifter
ArmSftLslReg = Int
7
  fromEnum ArmShifter
ArmSftLsrReg = Int
8
  fromEnum ArmShifter
ArmSftRorReg = Int
9
  fromEnum ArmShifter
ArmSftRrxReg = Int
10

  toEnum 0 = ArmSftInvalid
  toEnum 1 = ArmSftAsr
  toEnum 2 = ArmSftLsl
  toEnum 3 = ArmSftLsr
  toEnum 4 = ArmSftRor
  toEnum 5 = ArmSftRrx
  toEnum 6 = ArmSftAsrReg
  toEnum 7 = ArmSftLslReg
  toEnum 8 = ArmSftLsrReg
  toEnum 9 = ArmSftRorReg
  toEnum 10 = ArmSftRrxReg
  toEnum Int
unmatched = String -> ArmShifter
forall a. HasCallStack => String -> a
error (String
"ArmShifter.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 32 "src/Hapstone/Internal/Arm.chs" #-}

-- | ARM condition code
data ArmConditionCode = ArmCcInvalid
                      | ArmCcEq
                      | ArmCcNe
                      | ArmCcHs
                      | ArmCcLo
                      | ArmCcMi
                      | ArmCcPl
                      | ArmCcVs
                      | ArmCcVc
                      | ArmCcHi
                      | ArmCcLs
                      | ArmCcGe
                      | ArmCcLt
                      | ArmCcGt
                      | ArmCcLe
                      | ArmCcAl
  deriving (Show,Eq,Bounded)
instance Enum ArmConditionCode where
  succ ArmCcInvalid = ArmCcEq
  succ ArmCcEq = ArmCcNe
  succ ArmCcNe = ArmCcHs
  succ ArmCcHs = ArmCcLo
  succ ArmCcLo = ArmCcMi
  succ ArmCcMi = ArmCcPl
  succ ArmCcPl = ArmCcVs
  succ ArmCcVs = ArmCcVc
  succ ArmCcVc = ArmCcHi
  succ ArmCcHi = ArmCcLs
  succ ArmCcLs = ArmCcGe
  succ ArmCcGe = ArmCcLt
  succ ArmCcLt = ArmCcGt
  succ ArmCcGt = ArmCcLe
  succ ArmCcLe = ArmCcAl
  succ ArmCcAl = error "ArmConditionCode.succ: ArmCcAl has no successor"

  pred ArmCcEq = ArmCcInvalid
  pred ArmCcNe = ArmCcEq
  pred ArmCcHs = ArmCcNe
  pred ArmCcLo = ArmCcHs
  pred ArmCcMi = ArmCcLo
  pred ArmCcPl = ArmCcMi
  pred ArmCcVs = ArmCcPl
  pred ArmCcVc = ArmCcVs
  pred ArmCcHi = ArmCcVc
  pred ArmCcLs = ArmCcHi
  pred ArmCcGe = ArmCcLs
  pred ArmCcLt = ArmCcGe
  pred ArmCcGt = ArmCcLt
  pred ArmCcLe = ArmCcGt
  pred ArmCcAl = ArmCcLe
  pred ArmCcInvalid = error "ArmConditionCode.pred: ArmCcInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmCcAl

  fromEnum :: ArmConditionCode -> Int
fromEnum ArmCcInvalid = Int
0
  fromEnum ArmConditionCode
ArmCcEq = Int
1
  fromEnum ArmConditionCode
ArmCcNe = Int
2
  fromEnum ArmConditionCode
ArmCcHs = Int
3
  fromEnum ArmConditionCode
ArmCcLo = Int
4
  fromEnum ArmConditionCode
ArmCcMi = Int
5
  fromEnum ArmConditionCode
ArmCcPl = Int
6
  fromEnum ArmConditionCode
ArmCcVs = Int
7
  enumFrom :: ArmMemBarrier -> [ArmMemBarrier]
fromEnum ArmConditionCode
ArmCcVc = Int
8
  fromEnum ArmCcHi = Int
9
  fromEnum ArmCcLs = 10
  fromEnum ArmConditionCode
ArmCcGe = Int
11
  fromEnum ArmConditionCode
ArmCcLt = Int
12
  fromEnum ArmConditionCode
ArmCcGt = Int
13
  fromEnum ArmConditionCode
ArmCcLe = Int
14
  fromEnum ArmConditionCode
ArmCcAl = Int
15

  toEnum 0 = ArmCcInvalid
  toEnum 1 = ArmCcEq
  toEnum 2 = ArmCcNe
  toEnum 3 = ArmCcHs
  toEnum 4 = ArmCcLo
  toEnum 5 = ArmCcMi
  toEnum 6 = ArmCcPl
  toEnum 7 = ArmCcVs
  toEnum 8 = ArmCcVc
  toEnum 9 = ArmCcHi
  toEnum 10 = ArmCcLs
  toEnum 11 = ArmCcGe
  toEnum 12 = ArmCcLt
  toEnum 13 = ArmCcGt
  toEnum 14 = ArmCcLe
  toEnum 15 = ArmCcAl
  toEnum unmatched = error ("ArmConditionCode.toEnum: Cannot match " ++ show unmatched)

{-# LINE 35 "src/Hapstone/Internal/Arm.chs" #-}

-- | system registers
data ArmSysreg = ArmSysregInvalid
               | ArmSysregSpsrC
               | ArmSysregSpsrX
               | ArmSysregSpsrS
               | ArmSysregSpsrF
               | ArmSysregCpsrC
               | ArmSysregCpsrX
               | ArmSysregCpsrS
               | ArmSysregCpsrF
               | ArmSysregApsr
               | ArmSysregApsrG
               | ArmSysregApsrNzcvq
               | ArmSysregApsrNzcvqg
               | ArmSysregIapsr
               | ArmSysregIapsrG
               | ArmSysregIapsrNzcvqg
               | ArmSysregIapsrNzcvq
               | ArmSysregEapsr
               | ArmSysregEapsrG
               | ArmSysregEapsrNzcvqg
               | ArmSysregEapsrNzcvq
               | ArmSysregXpsr
               | ArmSysregXpsrG
               | ArmSysregXpsrNzcvqg
               | ArmSysregXpsrNzcvq
               | ArmSysregIpsr
               | ArmSysregEpsr
               | ArmSysregIepsr
               | ArmSysregMsp
               | ArmSysregPsp
               | ArmSysregPrimask
               | ArmSysregBasepri
               | ArmSysregBasepriMax
               | ArmSysregFaultmask
               | ArmSysregControl
               | ArmSysregR8Usr
               | ArmSysregR9Usr
               | ArmSysregR10Usr
               | ArmSysregR11Usr
               | ArmSysregR12Usr
               | ArmSysregSpUsr
               | ArmSysregLrUsr
               | ArmSysregR8Fiq
               | ArmSysregR9Fiq
               | ArmSysregR10Fiq
               | ArmSysregR11Fiq
               | ArmSysregR12Fiq
               | ArmSysregSpFiq
               | ArmSysregLrFiq
               | ArmSysregLrIrq
               | ArmSysregSpIrq
               | ArmSysregLrSvc
               | ArmSysregSpSvc
               | ArmSysregLrAbt
               | ArmSysregSpAbt
               | ArmSysregLrUnd
               | ArmSysregSpUnd
               | ArmSysregLrMon
               | ArmSysregSpMon
               | ArmSysregElrHyp
               | ArmSysregSpHyp
               | ArmSysregSpsrFiq
               | ArmSysregSpsrIrq
               | ArmSysregSpsrSvc
               | ArmSysregSpsrAbt
               | ArmSysregSpsrUnd
               | ArmSysregSpsrMon
               | ArmSysregSpsrHyp
  deriving (Show,Eq,Bounded)
instance Enum ArmSysreg where
  succ ArmSysregInvalid = ArmSysregSpsrC
  succ ArmSysregSpsrC = ArmSysregSpsrX
  succ ArmSysregSpsrX = ArmSysregSpsrS
  succ ArmSysregSpsrS = ArmSysregSpsrF
  succ ArmSysregSpsrF = ArmSysregCpsrC
  succ ArmSysregCpsrC = ArmSysregCpsrX
  succ ArmSysregCpsrX = ArmSysregCpsrS
  succ ArmSysregCpsrS = ArmSysregCpsrF
  succ ArmSysregCpsrF = ArmSysregApsr
  succ ArmSysregApsr = ArmSysregApsrG
  succ ArmSysregApsrG = ArmSysregApsrNzcvq
  succ ArmSysregApsrNzcvq = ArmSysregApsrNzcvqg
  succ ArmSysregApsrNzcvqg = ArmSysregIapsr
  succ ArmSysregIapsr = ArmSysregIapsrG
  succ ArmSysregIapsrG = ArmSysregIapsrNzcvqg
  succ ArmSysregIapsrNzcvqg = ArmSysregIapsrNzcvq
  succ ArmSysregIapsrNzcvq = ArmSysregEapsr
  succ ArmSysregEapsr = ArmSysregEapsrG
  succ ArmSysregEapsrG = ArmSysregEapsrNzcvqg
  succ ArmSysregEapsrNzcvqg = ArmSysregEapsrNzcvq
  succ ArmSysregEapsrNzcvq = ArmSysregXpsr
  succ ArmSysregXpsr = ArmSysregXpsrG
  succ ArmSysregXpsrG = ArmSysregXpsrNzcvqg
  succ ArmSysregXpsrNzcvqg = ArmSysregXpsrNzcvq
  succ ArmSysregXpsrNzcvq = ArmSysregIpsr
  succ ArmSysregIpsr = ArmSysregEpsr
  succ ArmSysregEpsr = ArmSysregIepsr
  succ ArmSysregIepsr = ArmSysregMsp
  succ ArmSysregMsp = ArmSysregPsp
  pred :: ArmVectordataType -> ArmVectordataType
succ ArmSysregPsp = ArmSysregPrimask
  succ ArmVectordataType
ArmSysregPrimask = ArmSysregBasepri
  succ ArmVectordataType
ArmSysregBasepri = ArmSysregBasepriMax
  succ ArmSysregBasepriMax = ArmSysregFaultmask
  succ ArmSysregFaultmask = ArmSysregControl
  succ ArmVectordataType
ArmSysreg
ArmSysregControl = ArmSysreg
ArmSysregR8Usr
  succ ArmSysreg
ArmSysregR8Usr = ArmSysreg
ArmSysregR9Usr
  succ ArmSysreg
ArmSysregR9Usr = ArmSysreg
ArmSysregR10Usr
  succ ArmVectordataType
ArmSysreg
ArmSysregR10Usr = ArmSysreg
ArmSysregR11Usr
  succ ArmSysreg
ArmSysregR11Usr = ArmSysreg
ArmSysregR12Usr
  succ ArmSysreg
ArmSysregR12Usr = ArmSysreg
ArmSysregSpUsr
  succ ArmSysreg
ArmSysregSpUsr = ArmSysreg
ArmSysregLrUsr
  succ ArmSysreg
ArmSysregLrUsr = ArmSysreg
ArmSysregR8Fiq
  succ ArmSysreg
ArmSysregR8Fiq = ArmSysreg
ArmSysregR9Fiq
  succ ArmSysreg
ArmSysregR9Fiq = ArmSysreg
ArmSysregR10Fiq
  succ ArmSysreg
ArmSysregR10Fiq = ArmSysreg
ArmSysregR11Fiq
  succ ArmSysreg
ArmSysregR11Fiq = ArmSysreg
ArmSysregR12Fiq
  succ ArmSysreg
ArmSysregR12Fiq = ArmSysreg
ArmSysregSpFiq
  succ ArmSysreg
ArmSysregSpFiq = ArmSysreg
ArmSysregLrFiq
  succ ArmSysreg
ArmSysregLrFiq = ArmSysreg
ArmSysregLrIrq
  succ ArmSysreg
ArmSysregLrIrq = ArmSysreg
ArmSysregSpIrq
  succ ArmSysreg
ArmSysregSpIrq = ArmSysreg
ArmSysregLrSvc
  succ ArmSysreg
ArmSysregLrSvc = ArmSysreg
ArmSysregSpSvc
  succ ArmSysreg
ArmSysregSpSvc = ArmSysreg
ArmSysregLrAbt
  succ ArmSysreg
ArmSysregLrAbt = ArmSysreg
ArmSysregSpAbt
  succ ArmSysreg
ArmSysregSpAbt = ArmSysreg
ArmSysregLrUnd
  succ ArmSysreg
ArmSysregLrUnd = ArmSysreg
ArmSysregSpUnd
  succ ArmSysreg
ArmSysregSpUnd = ArmSysreg
ArmSysregLrMon
  succ ArmSysreg
ArmSysregLrMon = ArmSysreg
ArmSysregSpMon
  succ ArmSysreg
ArmSysregSpMon = ArmSysreg
ArmSysregElrHyp
  succ ArmSysreg
ArmSysregElrHyp = ArmSysreg
ArmSysregSpHyp
  succ ArmSysreg
ArmSysregSpHyp = ArmSysreg
ArmSysregSpsrFiq
  succ ArmSysreg
ArmSysregSpsrFiq = ArmSysreg
ArmSysregSpsrIrq
  succ ArmSysreg
ArmSysregSpsrIrq = ArmSysreg
ArmSysregSpsrSvc
  succ ArmSysreg
ArmSysregSpsrSvc = ArmSysreg
ArmSysregSpsrAbt
  succ ArmSysreg
ArmSysregSpsrAbt = ArmSysreg
ArmSysregSpsrUnd
  succ ArmSysreg
ArmSysregSpsrUnd = ArmSysreg
ArmSysregSpsrMon
  succ ArmSysreg
ArmSysregSpsrMon = ArmSysreg
ArmSysregSpsrHyp
  succ ArmSysreg
ArmSysregSpsrHyp = String -> ArmSysreg
forall a. HasCallStack => String -> a
error String
"ArmSysreg.succ: ArmSysregSpsrHyp has no successor"

  pred ArmSysregSpsrC = ArmSysregInvalid
  pred ArmSysregSpsrX = ArmSysregSpsrC
  pred ArmSysregSpsrS = ArmSysregSpsrX
  pred ArmSysregSpsrF = ArmSysregSpsrS
  pred ArmSysregCpsrC = ArmSysregSpsrF
  pred ArmSysregCpsrX = ArmSysregCpsrC
  succ :: ArmReg -> ArmReg
pred ArmSysregCpsrS = ArmSysregCpsrX
  pred ArmSysregCpsrF = ArmSysregCpsrS
  pred ArmSysregApsr = ArmSysregCpsrF
  pred ArmSysregApsrG = ArmSysregApsr
  pred ArmSysregApsrNzcvq = ArmSysregApsrG
  pred ArmSysregApsrNzcvqg = ArmSysregApsrNzcvq
  pred ArmSysregIapsr = ArmSysregApsrNzcvqg
  pred ArmReg
ArmSysregIapsrG = ArmSysregIapsr
  pred ArmSysregIapsrNzcvqg = ArmSysregIapsrG
  pred ArmSysregIapsrNzcvq = ArmSysregIapsrNzcvqg
  pred ArmSysregEapsr = ArmSysregIapsrNzcvq
  pred ArmSysregEapsrG = ArmSysregEapsr
  pred ArmSysregEapsrNzcvqg = ArmSysregEapsrG
  pred ArmSysregEapsrNzcvq = ArmSysregEapsrNzcvqg
  pred ArmSysregXpsr = ArmSysregEapsrNzcvq
  pred ArmSysregXpsrG = ArmSysregXpsr
  pred ArmSysregXpsrNzcvqg = ArmSysregXpsrG
  pred ArmSysregXpsrNzcvq = ArmSysregXpsrNzcvqg
  pred ArmSysregIpsr = ArmSysregXpsrNzcvq
  pred ArmSysregEpsr = ArmSysregIpsr
  pred ArmSysregIepsr = ArmSysregEpsr
  pred ArmSysregMsp = ArmSysregIepsr
  pred ArmSysregPsp = ArmSysregMsp
  pred ArmSysregPrimask = ArmSysregPsp
  pred ArmSysregBasepri = ArmSysregPrimask
  pred ArmSysregBasepriMax = ArmSysregBasepri
  pred ArmSysregFaultmask = ArmSysregBasepriMax
  pred ArmSysregControl = ArmSysregFaultmask
  pred ArmSysregR8Usr = ArmSysregControl
  pred ArmSysregR9Usr = ArmSysregR8Usr
  pred ArmSysregR10Usr = ArmSysregR9Usr
  pred ArmSysregR11Usr = ArmSysregR10Usr
  pred ArmSysregR12Usr = ArmSysregR11Usr
  pred ArmSysregSpUsr = ArmSysregR12Usr
  pred ArmSysregLrUsr = ArmSysregSpUsr
  pred ArmSysregR8Fiq = ArmSysregLrUsr
  pred ArmSysregR9Fiq = ArmSysregR8Fiq
  pred ArmSysregR10Fiq = ArmSysregR9Fiq
  pred ArmSysregR11Fiq = ArmSysregR10Fiq
  pred ArmSysregR12Fiq = ArmSysregR11Fiq
  pred ArmSysregSpFiq = ArmSysregR12Fiq
  pred ArmSysregLrFiq = ArmSysregSpFiq
  pred ArmSysregLrIrq = ArmSysregLrFiq
  pred ArmSysregSpIrq = ArmSysregLrIrq
  pred ArmSysregLrSvc = ArmSysregSpIrq
  pred ArmSysregSpSvc = ArmSysregLrSvc
  pred ArmSysregLrAbt = ArmSysregSpSvc
  pred ArmSysregSpAbt = ArmSysregLrAbt
  pred ArmSysregLrUnd = ArmSysregSpAbt
  pred ArmSysregSpUnd = ArmSysregLrUnd
  pred ArmSysregLrMon = ArmSysregSpUnd
  pred ArmSysregSpMon = ArmSysregLrMon
  pred ArmSysregElrHyp = ArmSysregSpMon
  pred ArmSysregSpHyp = ArmSysregElrHyp
  pred ArmSysregSpsrFiq = ArmSysregSpHyp
  pred ArmSysregSpsrIrq = ArmSysregSpsrFiq
  pred ArmSysregSpsrSvc = ArmSysregSpsrIrq
  pred ArmSysregSpsrAbt = ArmSysregSpsrSvc
  pred ArmSysregSpsrUnd = ArmSysregSpsrAbt
  pred ArmSysregSpsrMon = ArmSysregSpsrUnd
  pred ArmSysregSpsrHyp = ArmSysregSpsrMon
  pred ArmSysregInvalid = error "ArmSysreg.pred: ArmSysregInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmSysregSpsrHyp

  fromEnum ArmSysregInvalid = 0
  fromEnum ArmSysregSpsrC = 1
  fromEnum ArmSysregSpsrX = 2
  fromEnum ArmSysregSpsrS = 4
  fromEnum ArmSysregSpsrF = 8
  fromEnum ArmSysregCpsrC = 16
  fromEnum ArmSysregCpsrX = 32
  fromEnum ArmSysregCpsrS = 64
  fromEnum ArmSysregCpsrF = 128
  fromEnum ArmSysregApsr = 256
  fromEnum ArmSysregApsrG = 257
  fromEnum ArmSysregApsrNzcvq = 258
  fromEnum ArmSysregApsrNzcvqg = 259
  fromEnum ArmSysregIapsr = 260
  fromEnum ArmSysregIapsrG = 261
  fromEnum ArmSysregIapsrNzcvqg = 262
  fromEnum ArmSysregIapsrNzcvq = 263
  fromEnum ArmSysregEapsr = 264
  fromEnum ArmSysregEapsrG = 265
  fromEnum ArmSysregEapsrNzcvqg = 266
  fromEnum ArmSysregEapsrNzcvq = 267
  fromEnum ArmSysregXpsr = 268
  fromEnum ArmSysregXpsrG = 269
  fromEnum ArmSysregXpsrNzcvqg = 270
  fromEnum ArmSysregXpsrNzcvq = 271
  fromEnum ArmSysregIpsr = 272
  fromEnum ArmSysregEpsr = 273
  fromEnum ArmSysregIepsr = 274
  fromEnum ArmSysregMsp = 275
  fromEnum ArmSysregPsp = 276
  fromEnum ArmSysregPrimask = 277
  fromEnum ArmSysregBasepri = 278
  fromEnum ArmSysregBasepriMax = 279
  fromEnum ArmSysregFaultmask = 280
  fromEnum ArmSysregControl = 281
  fromEnum ArmSysregR8Usr = 282
  fromEnum ArmSysregR9Usr = 283
  fromEnum ArmSysregR10Usr = 284
  fromEnum ArmSysregR11Usr = 285
  fromEnum ArmSysregR12Usr = 286
  fromEnum ArmSysregSpUsr = 287
  fromEnum ArmSysregLrUsr = 288
  fromEnum ArmSysregR8Fiq = 289
  fromEnum ArmSysregR9Fiq = 290
  fromEnum ArmSysregR10Fiq = 291
  fromEnum ArmSysregR11Fiq = 292
  fromEnum ArmSysregR12Fiq = 293
  fromEnum ArmSysregSpFiq = 294
  fromEnum ArmSysregLrFiq = 295
  fromEnum ArmSysregLrIrq = 296
  fromEnum ArmSysregSpIrq = 297
  fromEnum ArmSysregLrSvc = 298
  fromEnum ArmSysregSpSvc = 299
  fromEnum ArmSysregLrAbt = 300
  fromEnum ArmSysregSpAbt = 301
  fromEnum ArmSysregLrUnd = 302
  fromEnum ArmSysregSpUnd = 303
  fromEnum ArmSysregLrMon = 304
  fromEnum ArmSysregSpMon = 305
  fromEnum ArmSysregElrHyp = 306
  fromEnum ArmSysregSpHyp = 307
  fromEnum ArmSysregSpsrFiq = 308
  fromEnum ArmSysregSpsrIrq = 309
  fromEnum ArmSysregSpsrSvc = 310
  fromEnum ArmSysregSpsrAbt = 311
  fromEnum ArmSysregSpsrUnd = 312
  fromEnum ArmSysregSpsrMon = 313
  fromEnum ArmSysregSpsrHyp = 314

  toEnum 0 = ArmSysregInvalid
  toEnum 1 = ArmSysregSpsrC
  toEnum 2 = ArmSysregSpsrX
  toEnum 4 = ArmSysregSpsrS
  toEnum 8 = ArmSysregSpsrF
  toEnum 16 = ArmSysregCpsrC
  toEnum 32 = ArmSysregCpsrX
  toEnum 64 = ArmSysregCpsrS
  toEnum 128 = ArmSysregCpsrF
  toEnum 256 = ArmSysregApsr
  toEnum 257 = ArmSysregApsrG
  toEnum 258 = ArmSysregApsrNzcvq
  toEnum 259 = ArmSysregApsrNzcvqg
  toEnum 260 = ArmSysregIapsr
  toEnum 261 = ArmSysregIapsrG
  toEnum 262 = ArmSysregIapsrNzcvqg
  toEnum 263 = ArmSysregIapsrNzcvq
  toEnum 264 = ArmSysregEapsr
  toEnum 265 = ArmSysregEapsrG
  toEnum 266 = ArmSysregEapsrNzcvqg
  toEnum 267 = ArmSysregEapsrNzcvq
  toEnum 268 = ArmSysregXpsr
  toEnum 269 = ArmSysregXpsrG
  toEnum 270 = ArmSysregXpsrNzcvqg
  toEnum 271 = ArmSysregXpsrNzcvq
  toEnum 272 = ArmSysregIpsr
  toEnum 273 = ArmSysregEpsr
  toEnum 274 = ArmSysregIepsr
  toEnum 275 = ArmSysregMsp
  toEnum 276 = ArmSysregPsp
  toEnum 277 = ArmSysregPrimask
  toEnum 278 = ArmSysregBasepri
  toEnum 279 = ArmSysregBasepriMax
  toEnum 280 = ArmSysregFaultmask
  toEnum 281 = ArmSysregControl
  toEnum 282 = ArmSysregR8Usr
  toEnum 283 = ArmSysregR9Usr
  toEnum 284 = ArmSysregR10Usr
  toEnum 285 = ArmSysregR11Usr
  toEnum 286 = ArmSysregR12Usr
  toEnum 287 = ArmSysregSpUsr
  toEnum 288 = ArmSysregLrUsr
  toEnum 289 = ArmSysregR8Fiq
  toEnum 290 = ArmSysregR9Fiq
  toEnum 291 = ArmSysregR10Fiq
  toEnum 292 = ArmSysregR11Fiq
  toEnum 293 = ArmSysregR12Fiq
  toEnum 294 = ArmSysregSpFiq
  toEnum 295 = ArmSysregLrFiq
  toEnum 296 = ArmSysregLrIrq
  toEnum 297 = ArmSysregSpIrq
  toEnum 298 = ArmSysregLrSvc
  toEnum 299 = ArmSysregSpSvc
  toEnum 300 = ArmSysregLrAbt
  toEnum 301 = ArmSysregSpAbt
  toEnum 302 = ArmSysregLrUnd
  toEnum 303 = ArmSysregSpUnd
  toEnum 304 = ArmSysregLrMon
  toEnum 305 = ArmSysregSpMon
  toEnum 306 = ArmSysregElrHyp
  toEnum 307 = ArmSysregSpHyp
  toEnum 308 = ArmSysregSpsrFiq
  toEnum 309 = ArmSysregSpsrIrq
  toEnum 310 = ArmSysregSpsrSvc
  toEnum 311 = ArmSysregSpsrAbt
  toEnum 312 = ArmSysregSpsrUnd
  toEnum 313 = ArmSysregSpsrMon
  toEnum 314 = ArmSysregSpsrHyp
  toEnum unmatched = error ("ArmSysreg.toEnum: Cannot match " ++ show unmatched)

{-# LINE 38 "src/Hapstone/Internal/Arm.chs" #-}

-- | memory barrier operands (map directly to the 4-bit encoding of the option
-- field for Memory Barrier operations, when given as an integer)
data ArmMemBarrier = ArmMbInvalid
                   | ArmMbReserved0
                   | ArmMbOshld
                   | ArmMbOshst
                   | ArmMbOsh
                   | ArmMbReserved4
                   | ArmMbNshld
                   | ArmMbNshst
                   | ArmMbNsh
                   | ArmMbReserved8
                   | ArmMbIshld
                   | ArmMbIshst
                   | ArmMbIsh
                   | ArmMbReserved12
                   | ArmMbLd
                   | ArmMbSt
                   | ArmMbSy
  deriving (Show,Eq,Bounded)
instance Enum ArmMemBarrier where
  succ ArmMbInvalid = ArmMbReserved0
  succ ArmMbReserved0 = ArmMbOshld
  succ ArmMbOshld = ArmMbOshst
  succ ArmMbOshst = ArmMbOsh
  succ ArmMbOsh = ArmMbReserved4
  succ ArmMbReserved4 = ArmMbNshld
  succ ArmMbNshld = ArmMbNshst
  succ ArmMbNshst = ArmMbNsh
  succ ArmMbNsh = ArmMbReserved8
  succ ArmMbReserved8 = ArmMbIshld
  succ ArmMbIshld = ArmMbIshst
  succ ArmMbIshst = ArmMbIsh
  succ ArmMbIsh = ArmMbReserved12
  succ ArmMbReserved12 = ArmMbLd
  succ ArmMbLd = ArmMbSt
  succ ArmMbSt = ArmMbSy
  succ ArmMbSy = error "ArmMemBarrier.succ: ArmMbSy has no successor"

  pred ArmMbReserved0 = ArmMbInvalid
  pred ArmMbOshld = ArmMbReserved0
  pred ArmMbOshst = ArmMbOshld
  pred ArmMbOsh = ArmMbOshst
  pred ArmMbReserved4 = ArmMbOsh
  pred ArmMbNshld = ArmMbReserved4
  pred ArmMbNshst = ArmMbNshld
  pred ArmMbNsh = ArmMbNshst
  pred ArmMbReserved8 = ArmMbNsh
  pred ArmMbIshld = ArmMbReserved8
  pred ArmMbIshst = ArmMbIshld
  pred ArmMbIsh = ArmMbIshst
  pred ArmMbReserved12 = ArmMbIsh
  pred ArmMbLd = ArmMbReserved12
  pred ArmMbSt = ArmMbLd
  pred ArmMbSy = ArmMbSt
  pred ArmMbInvalid = error "ArmMemBarrier.pred: ArmMbInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmMbSy

  fromEnum ArmMbInvalid = 0
  fromEnum ArmMbReserved0 = 1
  fromEnum ArmMbOshld = 2
  fromEnum ArmMbOshst = 3
  fromEnum ArmMbOsh = 4
  fromEnum ArmMbReserved4 = 5
  fromEnum ArmMbNshld = 6
  fromEnum ArmMbNshst = 7
  fromEnum ArmMbNsh = 8
  fromEnum ArmMbReserved8 = 9
  fromEnum ArmMbIshld = 10
  fromEnum ArmMbIshst = 11
  fromEnum ArmMbIsh = 12
  fromEnum ArmMbReserved12 = 13
  fromEnum ArmMbLd = 14
  fromEnum ArmMbSt = 15
  fromEnum ArmMbSy = 16

  toEnum 0 = ArmMbInvalid
  toEnum 1 = ArmMbReserved0
  toEnum 2 = ArmMbOshld
  toEnum 3 = ArmMbOshst
  toEnum 4 = ArmMbOsh
  toEnum 5 = ArmMbReserved4
  toEnum 6 = ArmMbNshld
  toEnum 7 = ArmMbNshst
  toEnum 8 = ArmMbNsh
  toEnum 9 = ArmMbReserved8
  toEnum 10 = ArmMbIshld
  toEnum 11 = ArmMbIshst
  toEnum 12 = ArmMbIsh
  toEnum 13 = ArmMbReserved12
  toEnum 14 = ArmMbLd
  toEnum 15 = ArmMbSt
  toEnum 16 = ArmMbSy
  toEnum unmatched = error ("ArmMemBarrier.toEnum: Cannot match " ++ show unmatched)

{-# LINE 42 "src/Hapstone/Internal/Arm.chs" #-}


-- | operand type for instruction's operands
data ArmOpType = ArmOpInvalid
               | ArmOpReg
               | ArmOpImm
               | ArmOpMem
               | ArmOpFp
               | ArmOpCimm
               | ArmOpPimm
               | ArmOpSetend
               | ArmOpSysreg
  deriving (Show,Eq,Bounded)
instance Enum ArmOpType where
  succ ArmOpInvalid = ArmOpReg
  succ ArmOpReg = ArmOpImm
  succ ArmOpImm = ArmOpMem
  succ ArmOpMem = ArmOpFp
  succ ArmOpFp = ArmOpCimm
  succ ArmOpCimm = ArmOpPimm
  succ ArmOpPimm = ArmOpSetend
  succ ArmOpSetend = ArmOpSysreg
  succ ArmOpSysreg = error "ArmOpType.succ: ArmOpSysreg has no successor"

  pred ArmOpReg = ArmOpInvalid
  pred ArmOpImm = ArmOpReg
  pred ArmOpMem = ArmOpImm
  pred ArmOpFp = ArmOpMem
  pred ArmOpCimm = ArmOpFp
  pred ArmOpPimm = ArmOpCimm
  pred ArmOpSetend = ArmOpPimm
  pred ArmOpSysreg = ArmOpSetend
  pred ArmOpInvalid = error "ArmOpType.pred: ArmOpInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmOpSysreg

  fromEnum ArmOpInvalid = 0
  fromEnum ArmOpReg = 1
  fromEnum ArmOpImm = 2
  fromEnum ArmOpMem = 3
  fromEnum ArmOpFp = 4
  fromEnum ArmOpCimm = 64
  fromEnum ArmOpPimm = 65
  fromEnum ArmOpSetend = 66
  fromEnum ArmOpSysreg = 67

  toEnum 0 = ArmOpInvalid
  toEnum 1 = ArmOpReg
  toEnum 2 = ArmOpImm
  toEnum 3 = ArmOpMem
  toEnum 4 = ArmOpFp
  toEnum 64 = ArmOpCimm
  toEnum 65 = ArmOpPimm
  toEnum 66 = ArmOpSetend
  toEnum 67 = ArmOpSysreg
  toEnum unmatched = error ("ArmOpType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 46 "src/Hapstone/Internal/Arm.chs" #-}


-- | operand type for SETEND instruction
data ArmSetendType = ArmSetendInvalid
                   | ArmSetendBe
                   | ArmSetendLe
  deriving (Show,Eq,Bounded)
instance Enum ArmSetendType where
  succ ArmSetendInvalid = ArmSetendBe
  succ ArmSetendBe = ArmSetendLe
  succ ArmSetendLe = error "ArmSetendType.succ: ArmSetendLe has no successor"

  pred ArmSetendBe = ArmSetendInvalid
  pred ArmSetendLe = ArmSetendBe
  pred ArmSetendInvalid = error "ArmSetendType.pred: ArmSetendInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmSetendLe

  fromEnum ArmSetendInvalid = 0
  fromEnum ArmSetendBe = 1
  fromEnum ArmSetendLe = 2

  toEnum 0 = ArmSetendInvalid
  toEnum 1 = ArmSetendBe
  toEnum 2 = ArmSetendLe
  toEnum unmatched = error ("ArmSetendType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 50 "src/Hapstone/Internal/Arm.chs" #-}

data ArmCpsmodeType = ArmCpsmodeInvalid
                    | ArmCpsmodeIe
                    | ArmCpsmodeId
  deriving (Show,Eq,Bounded)
instance Enum ArmCpsmodeType where
  succ ArmCpsmodeInvalid = ArmCpsmodeIe
  succ ArmCpsmodeIe = ArmCpsmodeId
  succ ArmCpsmodeId = error "ArmCpsmodeType.succ: ArmCpsmodeId has no successor"

  pred ArmCpsmodeIe = ArmCpsmodeInvalid
  pred ArmCpsmodeId = ArmCpsmodeIe
  pred ArmCpsmodeInvalid = error "ArmCpsmodeType.pred: ArmCpsmodeInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmCpsmodeId

  fromEnum ArmCpsmodeInvalid = 0
  fromEnum ArmCpsmodeIe = 2
  fromEnum ArmCpsmodeId = 3

  toEnum 0 = ArmCpsmodeInvalid
  toEnum 2 = ArmCpsmodeIe
  toEnum 3 = ArmCpsmodeId
  toEnum unmatched = error ("ArmCpsmodeType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 52 "src/Hapstone/Internal/Arm.chs" #-}

-- | operand type for SETEND instruction
data ArmCpsflagType = ArmCpsflagInvalid
                    | ArmCpsflagF
                    | ArmCpsflagI
                    | ArmCpsflagA
                    | ArmCpsflagNone
  deriving (Show,Eq,Bounded)
instance Enum ArmCpsflagType where
  succ ArmCpsflagInvalid = ArmCpsflagF
  succ ArmCpsflagF = ArmCpsflagI
  succ ArmCpsflagI = ArmCpsflagA
  succ ArmCpsflagA = ArmCpsflagNone
  succ ArmCpsflagNone = error "ArmCpsflagType.succ: ArmCpsflagNone has no successor"

  pred ArmCpsflagF = ArmCpsflagInvalid
  pred ArmCpsflagI = ArmCpsflagF
  pred ArmCpsflagA = ArmCpsflagI
  pred ArmCpsflagNone = ArmCpsflagA
  pred ArmCpsflagInvalid = error "ArmCpsflagType.pred: ArmCpsflagInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmCpsflagNone

  fromEnum ArmCpsflagInvalid = 0
  fromEnum ArmCpsflagF = 1
  fromEnum ArmCpsflagI = 2
  fromEnum ArmCpsflagA = 4
  fromEnum ArmCpsflagNone = 16

  toEnum 0 = ArmCpsflagInvalid
  toEnum 1 = ArmCpsflagF
  toEnum 2 = ArmCpsflagI
  toEnum 4 = ArmCpsflagA
  toEnum 16 = ArmCpsflagNone
  toEnum unmatched = error ("ArmCpsflagType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 55 "src/Hapstone/Internal/Arm.chs" #-}

-- | data type for elements of vector instructions
data ArmVectordataType = ArmVectordataInvalid
                       | ArmVectordataI8
                       | ArmVectordataI16
                       | ArmVectordataI32
                       | ArmVectordataI64
                       | ArmVectordataS8
                       | ArmVectordataS16
                       | ArmVectordataS32
                       | ArmVectordataS64
                       | ArmVectordataU8
                       | ArmVectordataU16
                       | ArmVectordataU32
                       | ArmVectordataU64
                       | ArmVectordataP8
                       | ArmVectordataF32
                       | ArmVectordataF64
                       | ArmVectordataF16f64
                       | ArmVectordataF64f16
                       | ArmVectordataF32f16
                       | ArmVectordataF16f32
                       | ArmVectordataF64f32
                       | ArmVectordataF32f64
                       | ArmVectordataS32f32
                       | ArmVectordataU32f32
                       | ArmVectordataF32s32
                       | ArmVectordataF32u32
                       | ArmVectordataF64s16
                       | ArmVectordataF32s16
                       | ArmVectordataF64s32
                       | ArmVectordataS16f64
                       | ArmVectordataS16f32
                       | ArmVectordataS32f64
                       | ArmVectordataU16f64
                       | ArmVectordataU16f32
                       | ArmVectordataU32f64
                       | ArmVectordataF64u16
                       | ArmVectordataF32u16
                       | ArmVectordataF64u32
  deriving (Show,Eq,Bounded)
instance Enum ArmVectordataType where
  succ ArmVectordataInvalid = ArmVectordataI8
  succ ArmVectordataI8 = ArmVectordataI16
  succ ArmVectordataI16 = ArmVectordataI32
  succ ArmVectordataI32 = ArmVectordataI64
  succ ArmVectordataI64 = ArmVectordataS8
  succ ArmVectordataS8 = ArmVectordataS16
  succ ArmVectordataS16 = ArmVectordataS32
  succ ArmVectordataS32 = ArmVectordataS64
  succ ArmVectordataS64 = ArmVectordataU8
  succ ArmVectordataU8 = ArmVectordataU16
  succ ArmVectordataU16 = ArmVectordataU32
  succ ArmVectordataU32 = ArmVectordataU64
  succ ArmVectordataU64 = ArmVectordataP8
  succ ArmVectordataP8 = ArmVectordataF32
  succ ArmVectordataF32 = ArmVectordataF64
  succ ArmVectordataF64 = ArmVectordataF16f64
  succ ArmVectordataF16f64 = ArmVectordataF64f16
  succ ArmVectordataF64f16 = ArmVectordataF32f16
  succ ArmVectordataF32f16 = ArmVectordataF16f32
  succ ArmVectordataF16f32 = ArmVectordataF64f32
  succ ArmVectordataF64f32 = ArmVectordataF32f64
  succ ArmVectordataF32f64 = ArmVectordataS32f32
  succ ArmVectordataS32f32 = ArmVectordataU32f32
  succ ArmVectordataU32f32 = ArmVectordataF32s32
  succ ArmVectordataF32s32 = ArmVectordataF32u32
  succ ArmVectordataF32u32 = ArmVectordataF64s16
  succ ArmVectordataF64s16 = ArmVectordataF32s16
  succ ArmVectordataF32s16 = ArmVectordataF64s32
  succ ArmVectordataF64s32 = ArmVectordataS16f64
  succ ArmVectordataS16f64 = ArmVectordataS16f32
  succ ArmVectordataS16f32 = ArmVectordataS32f64
  succ ArmVectordataS32f64 = ArmVectordataU16f64
  succ ArmVectordataU16f64 = ArmVectordataU16f32
  succ ArmVectordataU16f32 = ArmVectordataU32f64
  succ ArmVectordataU32f64 = ArmVectordataF64u16
  succ ArmVectordataF64u16 = ArmVectordataF32u16
  succ ArmVectordataF32u16 = ArmVectordataF64u32
  succ ArmVectordataF64u32 = error "ArmVectordataType.succ: ArmVectordataF64u32 has no successor"

  pred ArmVectordataI8 = ArmVectordataInvalid
  pred ArmVectordataI16 = ArmVectordataI8
  pred ArmVectordataI32 = ArmVectordataI16
  pred ArmVectordataI64 = ArmVectordataI32
  pred ArmVectordataS8 = ArmVectordataI64
  pred ArmVectordataS16 = ArmVectordataS8
  pred ArmVectordataS32 = ArmVectordataS16
  pred ArmVectordataS64 = ArmVectordataS32
  pred ArmVectordataU8 = ArmVectordataS64
  pred ArmVectordataU16 = ArmVectordataU8
  pred ArmVectordataU32 = ArmVectordataU16
  pred ArmVectordataU64 = ArmVectordataU32
  pred ArmVectordataP8 = ArmVectordataU64
  pred ArmVectordataF32 = ArmVectordataP8
  pred ArmVectordataF64 = ArmVectordataF32
  pred ArmVectordataF16f64 = ArmVectordataF64
  pred ArmVectordataF64f16 = ArmVectordataF16f64
  pred ArmVectordataF32f16 = ArmVectordataF64f16
  pred ArmVectordataF16f32 = ArmVectordataF32f16
  pred ArmVectordataF64f32 = ArmVectordataF16f32
  pred ArmVectordataF32f64 = ArmVectordataF64f32
  pred ArmVectordataS32f32 = ArmVectordataF32f64
  pred ArmVectordataU32f32 = ArmVectordataS32f32
  pred ArmVectordataF32s32 = ArmVectordataU32f32
  pred ArmVectordataF32u32 = ArmVectordataF32s32
  pred ArmVectordataF64s16 = ArmVectordataF32u32
  pred ArmVectordataF32s16 = ArmVectordataF64s16
  pred ArmVectordataF64s32 = ArmVectordataF32s16
  pred ArmVectordataS16f64 = ArmVectordataF64s32
  pred ArmVectordataS16f32 = ArmVectordataS16f64
  pred ArmVectordataS32f64 = ArmVectordataS16f32
  pred ArmVectordataU16f64 = ArmVectordataS32f64
  pred ArmVectordataU16f32 = ArmVectordataU16f64
  pred ArmVectordataU32f64 = ArmVectordataU16f32
  pred ArmVectordataF64u16 = ArmVectordataU32f64
  pred ArmVectordataF32u16 = ArmVectordataF64u16
  pred ArmVectordataF64u32 = ArmVectordataF32u16
  pred ArmVectordataInvalid = error "ArmVectordataType.pred: ArmVectordataInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmVectordataF64u32

  fromEnum ArmVectordataInvalid = 0
  fromEnum ArmVectordataI8 = 1
  fromEnum ArmVectordataI16 = 2
  fromEnum ArmVectordataI32 = 3
  fromEnum ArmVectordataI64 = 4
  fromEnum ArmVectordataS8 = 5
  fromEnum ArmVectordataS16 = 6
  fromEnum ArmVectordataS32 = 7
  fromEnum ArmVectordataS64 = 8
  fromEnum ArmVectordataU8 = 9
  fromEnum ArmVectordataU16 = 10
  fromEnum ArmVectordataU32 = 11
  fromEnum ArmVectordataU64 = 12
  fromEnum ArmVectordataP8 = 13
  fromEnum ArmVectordataF32 = 14
  fromEnum ArmVectordataF64 = 15
  fromEnum ArmVectordataF16f64 = 16
  fromEnum ArmVectordataF64f16 = 17
  fromEnum ArmVectordataF32f16 = 18
  fromEnum ArmVectordataF16f32 = 19
  fromEnum ArmVectordataF64f32 = 20
  fromEnum ArmVectordataF32f64 = 21
  fromEnum ArmVectordataS32f32 = 22
  fromEnum ArmVectordataU32f32 = 23
  fromEnum ArmVectordataF32s32 = 24
  fromEnum ArmVectordataF32u32 = 25
  fromEnum ArmVectordataF64s16 = 26
  fromEnum ArmVectordataF32s16 = 27
  fromEnum ArmVectordataF64s32 = 28
  fromEnum ArmVectordataS16f64 = 29
  fromEnum ArmVectordataS16f32 = 30
  fromEnum ArmVectordataS32f64 = 31
  fromEnum ArmVectordataU16f64 = 32
  fromEnum ArmVectordataU16f32 = 33
  fromEnum ArmVectordataU32f64 = 34
  fromEnum ArmVectordataF64u16 = 35
  fromEnum ArmVectordataF32u16 = 36
  fromEnum ArmVectordataF64u32 = 37

  toEnum 0 = ArmVectordataInvalid
  toEnum 1 = ArmVectordataI8
  toEnum 2 = ArmVectordataI16
  toEnum 3 = ArmVectordataI32
  toEnum 4 = ArmVectordataI64
  toEnum 5 = ArmVectordataS8
  toEnum 6 = ArmVectordataS16
  toEnum 7 = ArmVectordataS32
  toEnum 8 = ArmVectordataS64
  toEnum 9 = ArmVectordataU8
  toEnum 10 = ArmVectordataU16
  toEnum 11 = ArmVectordataU32
  toEnum 12 = ArmVectordataU64
  toEnum 13 = ArmVectordataP8
  toEnum 14 = ArmVectordataF32
  toEnum 15 = ArmVectordataF64
  toEnum 16 = ArmVectordataF16f64
  toEnum 17 = ArmVectordataF64f16
  toEnum 18 = ArmVectordataF32f16
  toEnum 19 = ArmVectordataF16f32
  toEnum 20 = ArmVectordataF64f32
  toEnum 21 = ArmVectordataF32f64
  toEnum 22 = ArmVectordataS32f32
  toEnum 23 = ArmVectordataU32f32
  toEnum 24 = ArmVectordataF32s32
  toEnum 25 = ArmVectordataF32u32
  toEnum 26 = ArmVectordataF64s16
  toEnum 27 = ArmVectordataF32s16
  toEnum 28 = ArmVectordataF64s32
  toEnum 29 = ArmVectordataS16f64
  toEnum 30 = ArmVectordataS16f32
  toEnum 31 = ArmVectordataS32f64
  toEnum 32 = ArmVectordataU16f64
  toEnum 33 = ArmVectordataU16f32
  toEnum 34 = ArmVectordataU32f64
  toEnum 35 = ArmVectordataF64u16
  toEnum 36 = ArmVectordataF32u16
  toEnum 37 = ArmVectordataF64u32
  toEnum unmatched = error ("ArmVectordataType.toEnum: Cannot match " ++ show unmatched)

{-# LINE 58 "src/Hapstone/Internal/Arm.chs" #-}


-- | ARM registers
data ArmReg = ArmRegInvalid
            | ArmRegApsr
            | ArmRegApsrNzcv
            | ArmRegCpsr
            | ArmRegFpexc
            | ArmRegFpinst
            | ArmRegFpscr
            | ArmRegFpscrNzcv
            | ArmRegFpsid
            | ArmRegItstate
            | ArmRegLr
            | ArmRegR14
            | ArmRegPc
            | ArmRegR15
            | ArmRegSp
            | ArmRegR13
            | ArmRegSpsr
            | ArmRegD0
            | ArmRegD1
            | ArmRegD2
            | ArmRegD3
            | ArmRegD4
            | ArmRegD5
            | ArmRegD6
            | ArmRegD7
            | ArmRegD8
            | ArmRegD9
            | ArmRegD10
            | ArmRegD11
            | ArmRegD12
            | ArmRegD13
            | ArmRegD14
            | ArmRegD15
            | ArmRegD16
            | ArmRegD17
            | ArmRegD18
            | ArmRegD19
            | ArmRegD20
            | ArmRegD21
            | ArmRegD22
            | ArmRegD23
            | ArmRegD24
            | ArmRegD25
            | ArmRegD26
            | ArmRegD27
            | ArmRegD28
            | ArmRegD29
            | ArmRegD30
            | ArmRegD31
            | ArmRegFpinst2
            | ArmRegMvfr0
            | ArmRegMvfr1
            | ArmRegMvfr2
            | ArmRegQ0
            | ArmRegQ1
            | ArmRegQ2
            | ArmRegQ3
            | ArmRegQ4
            | ArmRegQ5
            | ArmRegQ6
            | ArmRegQ7
            | ArmRegQ8
            | ArmRegQ9
            | ArmRegQ10
            | ArmRegQ11
            | ArmRegQ12
            | ArmRegQ13
            | ArmRegQ14
            | ArmRegQ15
            | ArmRegR0
            | ArmRegR1
            | ArmRegR2
            | ArmRegR3
            | ArmRegR4
            | ArmRegR5
            | ArmRegR6
            | ArmRegR7
            | ArmRegR8
            | ArmRegR9
            | ArmRegSb
            | ArmRegR10
            | ArmRegSl
            | ArmRegR11
            | ArmRegFp
            | ArmRegR12
            | ArmRegIp
            | ArmRegS0
            | ArmRegS1
            | ArmRegS2
            | ArmRegS3
            | ArmRegS4
            | ArmRegS5
            | ArmRegS6
            | ArmRegS7
            | ArmRegS8
            | ArmRegS9
            | ArmRegS10
            | ArmRegS11
            | ArmRegS12
            | ArmRegS13
            | ArmRegS14
            | ArmRegS15
            | ArmRegS16
            | ArmRegS17
            | ArmRegS18
            | ArmRegS19
            | ArmRegS20
            | ArmRegS21
            | ArmRegS22
            | ArmRegS23
            | ArmRegS24
            | ArmRegS25
            | ArmRegS26
            | ArmRegS27
            | ArmRegS28
            | ArmRegS29
            | ArmRegS30
            | ArmRegS31
            | ArmRegEnding
  deriving (Show,Eq,Bounded)
instance Enum ArmReg where
  succ ArmRegInvalid = ArmRegApsr
  succ ArmRegApsr = ArmRegApsrNzcv
  succ ArmRegApsrNzcv = ArmRegCpsr
  succ ArmRegCpsr = ArmRegFpexc
  succ ArmRegFpexc = ArmRegFpinst
  succ ArmRegFpinst = ArmRegFpscr
  succ ArmRegFpscr = ArmRegFpscrNzcv
  succ ArmRegFpscrNzcv = ArmRegFpsid
  succ ArmRegFpsid = ArmRegItstate
  succ ArmRegItstate = ArmRegLr
  succ ArmRegLr = ArmRegPc
  succ ArmRegR14 = ArmRegPc
  succ ArmRegPc = ArmRegSp
  succ ArmRegR15 = ArmRegSp
  succ ArmRegSp = ArmRegSpsr
  succ ArmRegR13 = ArmRegSpsr
  succ ArmRegSpsr = ArmRegD0
  succ ArmRegD0 = ArmRegD1
  succ ArmRegD1 = ArmRegD2
  succ ArmRegD2 = ArmRegD3
  succ ArmRegD3 = ArmRegD4
  succ ArmRegD4 = ArmRegD5
  succ ArmRegD5 = ArmRegD6
  succ ArmRegD6 = ArmRegD7
  succ ArmRegD7 = ArmRegD8
  succ ArmRegD8 = ArmRegD9
  succ ArmRegD9 = ArmRegD10
  succ ArmRegD10 = ArmRegD11
  succ ArmRegD11 = ArmRegD12
  succ ArmRegD12 = ArmRegD13
  succ ArmRegD13 = ArmRegD14
  succ ArmRegD14 = ArmRegD15
  succ ArmRegD15 = ArmRegD16
  succ ArmRegD16 = ArmRegD17
  succ ArmRegD17 = ArmRegD18
  succ ArmRegD18 = ArmRegD19
  succ ArmRegD19 = ArmRegD20
  succ ArmRegD20 = ArmRegD21
  succ ArmRegD21 = ArmRegD22
  succ ArmRegD22 = ArmRegD23
  succ ArmRegD23 = ArmRegD24
  succ ArmRegD24 = ArmRegD25
  succ ArmRegD25 = ArmRegD26
  succ ArmRegD26 = ArmRegD27
  succ ArmRegD27 = ArmRegD28
  succ ArmRegD28 = ArmRegD29
  succ ArmRegD29 = ArmRegD30
  succ ArmRegD30 = ArmRegD31
  succ ArmRegD31 = ArmRegFpinst2
  succ ArmRegFpinst2 = ArmRegMvfr0
  succ ArmRegMvfr0 = ArmRegMvfr1
  succ ArmRegMvfr1 = ArmRegMvfr2
  succ ArmRegMvfr2 = ArmRegQ0
  succ ArmRegQ0 = ArmRegQ1
  succ ArmRegQ1 = ArmRegQ2
  succ ArmRegQ2 = ArmRegQ3
  succ ArmRegQ3 = ArmRegQ4
  succ ArmRegQ4 = ArmRegQ5
  succ ArmRegQ5 = ArmRegQ6
  succ ArmRegQ6 = ArmRegQ7
  succ ArmRegQ7 = ArmRegQ8
  succ ArmRegQ8 = ArmRegQ9
  succ ArmRegQ9 = ArmRegQ10
  succ ArmRegQ10 = ArmRegQ11
  succ ArmRegQ11 = ArmRegQ12
  succ ArmRegQ12 = ArmRegQ13
  succ ArmRegQ13 = ArmRegQ14
  succ ArmRegQ14 = ArmRegQ15
  succ ArmRegQ15 = ArmRegR0
  succ ArmRegR0 = ArmRegR1
  succ ArmRegR1 = ArmRegR2
  succ ArmRegR2 = ArmRegR3
  succ ArmRegR3 = ArmRegR4
  succ ArmRegR4 = ArmRegR5
  succ ArmRegR5 = ArmRegR6
  succ ArmRegR6 = ArmRegR7
  succ ArmRegR7 = ArmRegR8
  succ ArmRegR8 = ArmRegR9
  succ ArmRegR9 = ArmRegR10
  succ ArmRegSb = ArmRegR10
  succ ArmRegR10 = ArmRegR11
  succ ArmRegSl = ArmRegR11
  succ ArmRegR11 = ArmRegR12
  succ ArmRegFp = ArmRegR12
  succ ArmRegR12 = ArmRegS0
  succ ArmRegIp = ArmRegS0
  succ ArmRegS0 = ArmRegS1
  succ ArmRegS1 = ArmRegS2
  succ ArmRegS2 = ArmRegS3
  succ ArmRegS3 = ArmRegS4
  succ ArmRegS4 = ArmRegS5
  succ ArmRegS5 = ArmRegS6
  succ ArmRegS6 = ArmRegS7
  succ ArmRegS7 = ArmRegS8
  succ ArmRegS8 = ArmRegS9
  succ ArmRegS9 = ArmRegS10
  succ ArmRegS10 = ArmRegS11
  succ ArmRegS11 = ArmRegS12
  succ ArmRegS12 = ArmRegS13
  succ ArmRegS13 = ArmRegS14
  succ ArmRegS14 = ArmRegS15
  succ ArmRegS15 = ArmRegS16
  succ ArmRegS16 = ArmRegS17
  succ ArmRegS17 = ArmRegS18
  succ ArmRegS18 = ArmRegS19
  succ ArmRegS19 = ArmRegS20
  succ ArmRegS20 = ArmRegS21
  succ ArmRegS21 = ArmRegS22
  succ ArmRegS22 = ArmRegS23
  succ ArmRegS23 = ArmRegS24
  succ ArmRegS24 = ArmRegS25
  succ ArmRegS25 = ArmRegS26
  succ ArmRegS26 = ArmRegS27
  succ ArmRegS27 = ArmRegS28
  succ ArmRegS28 = ArmRegS29
  succ ArmRegS29 = ArmRegS30
  succ ArmRegS30 = ArmRegS31
  succ ArmRegS31 = ArmRegEnding
  succ ArmRegEnding = error "ArmReg.succ: ArmRegEnding has no successor"

  pred ArmRegApsr = ArmRegInvalid
  pred ArmRegApsrNzcv = ArmRegApsr
  pred ArmRegCpsr = ArmRegApsrNzcv
  pred ArmRegFpexc = ArmRegCpsr
  pred ArmRegFpinst = ArmRegFpexc
  pred ArmRegFpscr = ArmRegFpinst
  pred ArmRegFpscrNzcv = ArmRegFpscr
  pred ArmRegFpsid = ArmRegFpscrNzcv
  pred ArmRegItstate = ArmRegFpsid
  pred ArmRegLr = ArmRegItstate
  pred ArmRegR14 = ArmRegItstate
  pred ArmRegPc = ArmRegLr
  pred ArmRegR15 = ArmRegLr
  pred ArmRegSp = ArmRegPc
  pred ArmRegR13 = ArmRegPc
  pred ArmRegSpsr = ArmRegSp
  pred ArmRegD0 = ArmRegSpsr
  pred ArmRegD1 = ArmRegD0
  pred ArmRegD2 = ArmRegD1
  pred ArmRegD3 = ArmRegD2
  pred ArmRegD4 = ArmRegD3
  pred ArmRegD5 = ArmRegD4
  pred ArmRegD6 = ArmRegD5
  pred ArmRegD7 = ArmRegD6
  pred ArmRegD8 = ArmRegD7
  pred ArmRegD9 = ArmRegD8
  pred ArmRegD10 = ArmRegD9
  pred ArmRegD11 = ArmRegD10
  pred ArmRegD12 = ArmRegD11
  pred ArmRegD13 = ArmRegD12
  pred ArmRegD14 = ArmRegD13
  pred ArmRegD15 = ArmRegD14
  pred ArmRegD16 = ArmRegD15
  pred ArmRegD17 = ArmRegD16
  pred ArmRegD18 = ArmRegD17
  pred ArmRegD19 = ArmRegD18
  pred ArmRegD20 = ArmRegD19
  pred ArmRegD21 = ArmRegD20
  pred ArmRegD22 = ArmRegD21
  pred ArmRegD23 = ArmRegD22
  pred ArmRegD24 = ArmRegD23
  pred ArmRegD25 = ArmRegD24
  pred ArmRegD26 = ArmRegD25
  pred ArmRegD27 = ArmRegD26
  pred ArmRegD28 = ArmRegD27
  pred ArmRegD29 = ArmRegD28
  pred ArmRegD30 = ArmRegD29
  pred ArmRegD31 = ArmRegD30
  pred ArmRegFpinst2 = ArmRegD31
  pred ArmRegMvfr0 = ArmRegFpinst2
  pred ArmRegMvfr1 = ArmRegMvfr0
  pred ArmRegMvfr2 = ArmRegMvfr1
  pred ArmRegQ0 = ArmRegMvfr2
  pred ArmRegQ1 = ArmRegQ0
  pred ArmRegQ2 = ArmRegQ1
  pred ArmRegQ3 = ArmRegQ2
  pred ArmRegQ4 = ArmRegQ3
  pred ArmRegQ5 = ArmRegQ4
  pred ArmRegQ6 = ArmRegQ5
  pred ArmRegQ7 = ArmRegQ6
  pred ArmRegQ8 = ArmRegQ7
  pred ArmRegQ9 = ArmRegQ8
  pred ArmRegQ10 = ArmRegQ9
  pred ArmRegQ11 = ArmRegQ10
  pred ArmRegQ12 = ArmRegQ11
  pred ArmRegQ13 = ArmRegQ12
  pred ArmRegQ14 = ArmRegQ13
  pred ArmRegQ15 = ArmRegQ14
  pred ArmRegR0 = ArmRegQ15
  pred ArmRegR1 = ArmRegR0
  pred ArmRegR2 = ArmRegR1
  pred ArmRegR3 = ArmRegR2
  pred ArmRegR4 = ArmRegR3
  pred ArmRegR5 = ArmRegR4
  pred ArmRegR6 = ArmRegR5
  pred ArmRegR7 = ArmRegR6
  pred ArmRegR8 = ArmRegR7
  pred ArmRegR9 = ArmRegR8
  pred ArmRegSb = ArmRegR8
  pred ArmRegR10 = ArmRegR9
  pred ArmRegSl = ArmRegR9
  pred ArmRegR11 = ArmRegR10
  pred ArmRegFp = ArmRegR10
  pred ArmRegR12 = ArmRegR11
  pred ArmRegIp = ArmRegR11
  pred ArmRegS0 = ArmRegR12
  pred ArmRegS1 = ArmRegS0
  pred ArmRegS2 = ArmRegS1
  pred ArmRegS3 = ArmRegS2
  pred ArmRegS4 = ArmRegS3
  pred ArmRegS5 = ArmRegS4
  pred ArmRegS6 = ArmRegS5
  pred ArmRegS7 = ArmRegS6
  pred ArmRegS8 = ArmRegS7
  pred ArmRegS9 = ArmRegS8
  pred ArmRegS10 = ArmRegS9
  pred ArmRegS11 = ArmRegS10
  pred ArmRegS12 = ArmRegS11
  pred ArmRegS13 = ArmRegS12
  pred ArmRegS14 = ArmRegS13
  pred ArmRegS15 = ArmRegS14
  pred ArmRegS16 = ArmRegS15
  pred ArmRegS17 = ArmRegS16
  pred ArmRegS18 = ArmRegS17
  pred ArmRegS19 = ArmRegS18
  pred ArmRegS20 = ArmRegS19
  pred ArmRegS21 = ArmRegS20
  pred ArmRegS22 = ArmRegS21
  pred ArmRegS23 = ArmRegS22
  pred ArmRegS24 = ArmRegS23
  pred ArmRegS25 = ArmRegS24
  pred ArmRegS26 = ArmRegS25
  pred ArmRegS27 = ArmRegS26
  pred ArmRegS28 = ArmRegS27
  pred ArmRegS29 = ArmRegS28
  pred ArmRegS30 = ArmRegS29
  pred ArmRegS31 = ArmRegS30
  pred ArmRegEnding = ArmRegS31
  pred ArmRegInvalid = error "ArmReg.pred: ArmRegInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmRegEnding

  fromEnum ArmRegInvalid = 0
  fromEnum ArmRegApsr = 1
  fromEnum ArmRegApsrNzcv = 2
  fromEnum ArmRegCpsr = 3
  fromEnum ArmRegFpexc = 4
  fromEnum ArmRegFpinst = 5
  fromEnum ArmRegFpscr = 6
  fromEnum ArmRegFpscrNzcv = 7
  fromEnum ArmRegFpsid = 8
  fromEnum ArmRegItstate = 9
  fromEnum ArmRegLr = 10
  fromEnum ArmRegR14 = 10
  fromEnum ArmRegPc = 11
  fromEnum ArmRegR15 = 11
  fromEnum ArmRegSp = 12
  fromEnum ArmRegR13 = 12
  fromEnum ArmRegSpsr = 13
  fromEnum ArmRegD0 = 14
  fromEnum ArmRegD1 = 15
  fromEnum ArmRegD2 = 16
  fromEnum ArmRegD3 = 17
  fromEnum ArmRegD4 = 18
  fromEnum ArmRegD5 = 19
  fromEnum ArmRegD6 = 20
  fromEnum ArmRegD7 = 21
  fromEnum ArmRegD8 = 22
  fromEnum ArmRegD9 = 23
  fromEnum ArmRegD10 = 24
  fromEnum ArmRegD11 = 25
  fromEnum ArmRegD12 = 26
  fromEnum ArmRegD13 = 27
  fromEnum ArmRegD14 = 28
  fromEnum ArmRegD15 = 29
  fromEnum ArmRegD16 = 30
  fromEnum ArmRegD17 = 31
  fromEnum ArmRegD18 = 32
  fromEnum ArmRegD19 = 33
  fromEnum ArmRegD20 = 34
  fromEnum ArmRegD21 = 35
  fromEnum ArmRegD22 = 36
  fromEnum ArmRegD23 = 37
  fromEnum ArmRegD24 = 38
  fromEnum ArmRegD25 = 39
  fromEnum ArmRegD26 = 40
  fromEnum ArmRegD27 = 41
  fromEnum ArmRegD28 = 42
  fromEnum ArmRegD29 = 43
  fromEnum ArmRegD30 = 44
  fromEnum ArmRegD31 = 45
  fromEnum ArmRegFpinst2 = 46
  fromEnum ArmRegMvfr0 = 47
  fromEnum ArmRegMvfr1 = 48
  fromEnum ArmRegMvfr2 = 49
  fromEnum ArmRegQ0 = 50
  fromEnum ArmRegQ1 = 51
  fromEnum ArmRegQ2 = 52
  fromEnum ArmRegQ3 = 53
  fromEnum ArmRegQ4 = 54
  fromEnum ArmRegQ5 = 55
  fromEnum ArmRegQ6 = 56
  fromEnum ArmRegQ7 = 57
  fromEnum ArmRegQ8 = 58
  fromEnum ArmRegQ9 = 59
  fromEnum ArmRegQ10 = 60
  fromEnum ArmRegQ11 = 61
  fromEnum ArmRegQ12 = 62
  fromEnum ArmRegQ13 = 63
  fromEnum ArmRegQ14 = 64
  fromEnum ArmRegQ15 = 65
  fromEnum ArmRegR0 = 66
  fromEnum ArmRegR1 = 67
  fromEnum ArmRegR2 = 68
  fromEnum ArmRegR3 = 69
  fromEnum ArmRegR4 = 70
  fromEnum ArmRegR5 = 71
  fromEnum ArmRegR6 = 72
  fromEnum ArmRegR7 = 73
  fromEnum ArmRegR8 = 74
  fromEnum ArmRegR9 = 75
  fromEnum ArmRegSb = 75
  fromEnum ArmRegR10 = 76
  fromEnum ArmRegSl = 76
  fromEnum ArmRegR11 = 77
  fromEnum ArmRegFp = 77
  fromEnum ArmRegR12 = 78
  fromEnum ArmRegIp = 78
  fromEnum ArmRegS0 = 79
  fromEnum ArmRegS1 = 80
  fromEnum ArmRegS2 = 81
  fromEnum ArmRegS3 = 82
  fromEnum ArmRegS4 = 83
  fromEnum ArmRegS5 = 84
  fromEnum ArmRegS6 = 85
  fromEnum ArmRegS7 = 86
  fromEnum ArmRegS8 = 87
  fromEnum ArmRegS9 = 88
  fromEnum ArmRegS10 = 89
  fromEnum ArmRegS11 = 90
  fromEnum ArmRegS12 = 91
  fromEnum ArmRegS13 = 92
  fromEnum ArmRegS14 = 93
  fromEnum ArmRegS15 = 94
  fromEnum ArmRegS16 = 95
  fromEnum ArmRegS17 = 96
  fromEnum ArmRegS18 = 97
  fromEnum ArmRegS19 = 98
  fromEnum ArmRegS20 = 99
  fromEnum ArmRegS21 = 100
  fromEnum ArmRegS22 = 101
  fromEnum ArmRegS23 = 102
  fromEnum ArmRegS24 = 103
  fromEnum ArmRegS25 = 104
  fromEnum ArmRegS26 = 105
  fromEnum ArmRegS27 = 106
  fromEnum ArmRegS28 = 107
  fromEnum ArmRegS29 = 108
  fromEnum ArmRegS30 = 109
  fromEnum ArmRegS31 = 110
  fromEnum ArmRegEnding = 111

  toEnum :: Int -> ArmReg
toEnum Int
0 = ArmReg
ArmRegInvalid
  toEnum Int
1 = ArmReg
ArmRegApsr
  toEnum Int
2 = ArmReg
ArmRegApsrNzcv
  toEnum Int
3 = ArmReg
ArmRegCpsr
  toEnum Int
4 = ArmReg
ArmRegFpexc
  toEnum Int
5 = ArmReg
ArmRegFpinst
  toEnum Int
6 = ArmReg
ArmRegFpscr
  toEnum Int
7 = ArmReg
ArmRegFpscrNzcv
  toEnum Int
8 = ArmReg
ArmRegFpsid
  toEnum Int
9 = ArmReg
ArmRegItstate
  toEnum Int
10 = ArmReg
ArmRegLr
  toEnum Int
11 = ArmReg
ArmRegPc
  toEnum Int
12 = ArmReg
ArmRegSp
  toEnum Int
13 = ArmReg
ArmRegSpsr
  toEnum Int
14 = ArmReg
ArmRegD0
  toEnum Int
15 = ArmReg
ArmRegD1
  toEnum Int
16 = ArmReg
ArmRegD2
  toEnum Int
17 = ArmReg
ArmRegD3
  toEnum Int
18 = ArmReg
ArmRegD4
  toEnum Int
19 = ArmReg
ArmRegD5
  toEnum Int
20 = ArmReg
ArmRegD6
  toEnum Int
21 = ArmReg
ArmRegD7
  toEnum Int
22 = ArmReg
ArmRegD8
  toEnum Int
23 = ArmReg
ArmRegD9
  toEnum Int
24 = ArmReg
ArmRegD10
  toEnum Int
25 = ArmReg
ArmRegD11
  toEnum Int
26 = ArmReg
ArmRegD12
  toEnum Int
27 = ArmReg
ArmRegD13
  toEnum Int
28 = ArmReg
ArmRegD14
  toEnum Int
29 = ArmReg
ArmRegD15
  toEnum Int
30 = ArmReg
ArmRegD16
  toEnum Int
31 = ArmReg
ArmRegD17
  toEnum Int
32 = ArmReg
ArmRegD18
  toEnum Int
33 = ArmReg
ArmRegD19
  toEnum Int
34 = ArmReg
ArmRegD20
  toEnum Int
35 = ArmReg
ArmRegD21
  toEnum Int
36 = ArmReg
ArmRegD22
  toEnum Int
37 = ArmReg
ArmRegD23
  toEnum Int
38 = ArmReg
ArmRegD24
  toEnum Int
39 = ArmReg
ArmRegD25
  toEnum Int
40 = ArmReg
ArmRegD26
  toEnum Int
41 = ArmReg
ArmRegD27
  toEnum Int
42 = ArmReg
ArmRegD28
  toEnum Int
43 = ArmReg
ArmRegD29
  toEnum Int
44 = ArmReg
ArmRegD30
  toEnum Int
45 = ArmReg
ArmRegD31
  toEnum Int
46 = ArmReg
ArmRegFpinst2
  toEnum Int
47 = ArmReg
ArmRegMvfr0
  toEnum Int
48 = ArmReg
ArmRegMvfr1
  toEnum Int
49 = ArmReg
ArmRegMvfr2
  toEnum Int
50 = ArmReg
ArmRegQ0
  toEnum Int
51 = ArmReg
ArmRegQ1
  toEnum Int
52 = ArmReg
ArmRegQ2
  toEnum Int
53 = ArmReg
ArmRegQ3
  toEnum Int
54 = ArmReg
ArmRegQ4
  toEnum Int
55 = ArmReg
ArmRegQ5
  toEnum Int
56 = ArmReg
ArmRegQ6
  toEnum Int
57 = ArmReg
ArmRegQ7
  toEnum Int
58 = ArmReg
ArmRegQ8
  toEnum Int
59 = ArmReg
ArmRegQ9
  toEnum Int
60 = ArmReg
ArmRegQ10
  toEnum Int
61 = ArmReg
ArmRegQ11
  toEnum Int
62 = ArmReg
ArmRegQ12
  toEnum Int
63 = ArmReg
ArmRegQ13
  toEnum Int
64 = ArmReg
ArmRegQ14
  toEnum Int
65 = ArmReg
ArmRegQ15
  toEnum Int
66 = ArmReg
ArmRegR0
  toEnum Int
67 = ArmReg
ArmRegR1
  toEnum Int
68 = ArmReg
ArmRegR2
  toEnum Int
69 = ArmReg
ArmRegR3
  toEnum Int
70 = ArmReg
ArmRegR4
  toEnum Int
71 = ArmReg
ArmRegR5
  toEnum Int
72 = ArmReg
ArmRegR6
  toEnum Int
73 = ArmReg
ArmRegR7
  toEnum Int
74 = ArmReg
ArmRegR8
  toEnum Int
75 = ArmReg
ArmRegR9
  toEnum Int
76 = ArmReg
ArmRegR10
  toEnum Int
77 = ArmReg
ArmRegR11
  toEnum Int
78 = ArmReg
ArmRegR12
  toEnum Int
79 = ArmReg
ArmRegS0
  toEnum Int
80 = ArmReg
ArmRegS1
  toEnum Int
81 = ArmReg
ArmRegS2
  toEnum Int
82 = ArmReg
ArmRegS3
  toEnum Int
83 = ArmReg
ArmRegS4
  toEnum Int
84 = ArmReg
ArmRegS5
  toEnum Int
85 = ArmReg
ArmRegS6
  toEnum Int
86 = ArmReg
ArmRegS7
  toEnum Int
87 = ArmReg
ArmRegS8
  toEnum Int
88 = ArmReg
ArmRegS9
  toEnum Int
89 = ArmReg
ArmRegS10
  toEnum Int
90 = ArmReg
ArmRegS11
  toEnum Int
91 = ArmReg
ArmRegS12
  toEnum Int
92 = ArmReg
ArmRegS13
  toEnum Int
93 = ArmReg
ArmRegS14
  toEnum Int
94 = ArmReg
ArmRegS15
  toEnum Int
95 = ArmReg
ArmRegS16
  toEnum Int
96 = ArmReg
ArmRegS17
  toEnum Int
97 = ArmReg
ArmRegS18
  toEnum Int
98 = ArmReg
ArmRegS19
  toEnum Int
99 = ArmReg
ArmRegS20
  toEnum Int
100 = ArmReg
ArmRegS21
  toEnum Int
101 = ArmReg
ArmRegS22
  toEnum Int
102 = ArmReg
ArmRegS23
  toEnum Int
103 = ArmReg
ArmRegS24
  toEnum Int
104 = ArmReg
ArmRegS25
  toEnum Int
105 = ArmReg
ArmRegS26
  toEnum Int
106 = ArmReg
ArmRegS27
  toEnum Int
107 = ArmReg
ArmRegS28
  toEnum Int
108 = ArmReg
ArmRegS29
  toEnum Int
109 = ArmReg
ArmRegS30
  toEnum Int
110 = ArmReg
ArmRegS31
  toEnum Int
111 = ArmReg
ArmRegEnding
  toEnum Int
unmatched = String -> ArmReg
forall a. HasCallStack => String -> a
error (String
"ArmReg.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 62 "src/Hapstone/Internal/Arm.chs" #-}


-- | memory access operands
-- associated with 'ArmOpMem' operand type
data ArmOpMemStruct = ArmOpMemStruct
    { base :: ArmReg -- ^ base register
    , index :: ArmReg -- ^ index register
    , scale :: Int32 -- ^ scale for index register (1 or -1)
    , disp :: Int32 -- ^ displacement/offset value
    } deriving (Show, Eq)

instance Storable ArmOpMemStruct where
    sizeOf _ = 20
{-# LINE 74 "src/Hapstone/Internal/Arm.chs" #-}

    alignment _ = 4
{-# LINE 75 "src/Hapstone/Internal/Arm.chs" #-}

    peek p = ArmOpMemStruct
        <$> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
        <*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
        <*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p)
    poke p (ArmOpMemStruct b i s d) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum b)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum i)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) p (fromIntegral s)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) p (fromIntegral d)

-- | possible operand types (corresponding to the tagged union in the C header)
data CsArmOpValue
    = Reg Word32 -- ^ register value for 'ArmOpReg' operands
    | Sysreg Word32 -- ^ register value for 'ArmOpSysreg' operands
    | Imm Int32 -- ^ immediate value for 'ArmOpImm' operands
    | Cimm Int32 -- ^ immediate value for 'ArmOpCimm' operands
    | Pimm Int32 -- ^ immediate value for 'ArmOpPimm' operands
    | Fp Double -- ^ floating point value for 'ArmOpFp' operands
    | Mem ArmOpMemStruct -- ^ base,index,scale,disp value for
                         -- 'ArmOpMem' operands
    | Setend ArmSetendType -- ^ SETEND instruction's operand type
    | Undefined -- ^ invalid operand value, for 'ArmOpInvalid' operand
    deriving (Show, Eq)

-- | instruction operands
data CsArmOp = CsArmOp
    { vectorIndex :: Int32 -- ^ vector index for some vector operands, else -1
    , shift :: (ArmShifter, Word32) -- ^ shifter type and value
    , value :: CsArmOpValue -- ^ operand type and value
    , subtracted :: Bool -- ^ if 'True', operand is subtracted, else added
    , access :: Word8 -- ^ access mode of operand
    , neon_lane :: Int8 -- ^ neon lane index for NEON instructions, else -1
    } deriving (Show, Eq)

instance Storable CsArmOp where
    sizeOf _ = 40
    alignment _ = 8
    peek p = CsArmOp
        <$> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
        <*> ((,) <$>
            ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p) <*>
            (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CUInt}) p))
        <*> do
            t <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p :: IO Int
            let bP = plusPtr p 16
            case toEnum t of
              ArmOpReg -> (Reg . fromIntegral) <$> (peek bP :: IO CUInt)
              ArmOpSysreg -> (Sysreg . fromIntegral) <$> (peek bP :: IO CUInt)
              ArmOpImm -> (Imm . fromIntegral) <$> (peek bP :: IO CInt)
              ArmOpCimm -> (Cimm . fromIntegral) <$> (peek bP :: IO CInt)
              ArmOpPimm -> (Pimm . fromIntegral) <$> (peek bP :: IO CInt)
              ArmOpFp -> (Fp . realToFrac) <$> (peek bP :: IO CDouble)
              ArmOpMem -> Mem <$> (peek bP :: IO ArmOpMemStruct)
              ArmOpSetend -> (Setend . toEnum . fromIntegral) <$>
                  (peek bP :: IO CInt)
              _ -> return Undefined
        <*> (toBool <$> (peekByteOff p 36 :: IO Word8)) -- subtracted
        <*> (peekByteOff p 37 :: IO Word8) -- access
        <*> (peekByteOff p 38 :: IO Int8) -- neon_lane
    poke p (CsArmOp vI (sh, shV) val sub acc neon) = do
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral vI)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum sh)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CUInt)}) p (fromIntegral shV)
        let bP = plusPtr p 16
            setType = (\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) p . fromIntegral . fromEnum
        case val of
          Reg r -> do
              poke bP (fromIntegral r :: CUInt)
              setType ArmOpReg
          Sysreg r -> do
              poke bP (fromIntegral r :: CUInt)
              setType ArmOpSysreg
          Imm i -> do
              poke bP (fromIntegral i :: CInt)
              setType ArmOpImm
          Cimm i -> do
              poke bP (fromIntegral i :: CInt)
              setType ArmOpCimm
          Pimm i -> do
              poke bP (fromIntegral i :: CInt)
              setType ArmOpPimm
          Fp f -> do
              poke bP (realToFrac f :: CDouble)
              setType ArmOpFp
          Mem m -> do
              poke bP m
              setType ArmOpMem
          Setend s -> do
              poke bP (fromIntegral $ fromEnum s :: CInt)
              setType ArmOpSetend
          _ -> setType ArmOpInvalid
        pokeByteOff p 36 (fromBool sub :: Word8) -- subtracted
        pokeByteOff p 37 acc -- access
        pokeByteOff p 38 neon -- neon_lane

-- | instruction datatype
data CsArm = CsArm
    { usermode :: Bool -- ^ usermode registers to be loaded (for LDM/STM
                       -- instructions)
    , vectorSize :: Int32 -- ^ scalar size for vector instructions
    , vectorData :: ArmVectordataType -- ^ data type for elements of vector
                                      -- instructions
    , cpsMode :: ArmCpsmodeType -- ^ CPS mode for CPS instructions
    , cpsFlag :: ArmCpsflagType -- ^ CPS mode for CPS instructions
    , cc :: ArmConditionCode -- condition code
    , updateFlags :: Bool -- does this instruction update flags?
    , writeback :: Bool -- ^ does this instruction request writeback?
    , memBarrier :: ArmMemBarrier -- ^ options for some memory barrier
                                  -- instructions
    , operands :: [CsArmOp] -- ^ operand list of this instruction, *MUST*
                            -- have <= 36 elements, else you'll get a runtime
                            -- error when you (implicitly) try to write it to
                            -- memory via it's Storable instance
    } deriving (Show, Eq)

instance Storable CsArm where
    sizeOf _ = 1480
    alignment _ = 8
    peek p = CsArm
        <$> (toBool <$> (peekByteOff p 0 :: IO Word8)) -- usermode
        <*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CInt}) p)
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 20 :: IO C2HSImp.CInt}) p)
        <*> (toBool <$> (peekByteOff p 24 :: IO Word8)) -- update_flags
        <*> (toBool <$> (peekByteOff p 25 :: IO Word8)) -- writeback
        <*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 28 :: IO C2HSImp.CInt}) p)
        <*> do num <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 32 :: IO C2HSImp.CUChar}) p
               let ptr = plusPtr p 40
               peekArray num ptr
    poke p (CsArm u vS vD cM cF cc uF w m o) = do
        pokeByteOff p 0 (fromBool u :: Word8) -- usermode
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral vS)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum vD)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum cM)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum cF)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 20 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum cc)
        pokeByteOff p 24 (fromBool uF :: Word8) -- update_flags
        pokeByteOff p 25 (fromBool w :: Word8) -- writeback
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 28 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum m)
        (\ptr val -> do {C2HSImp.pokeByteOff ptr 32 (val :: C2HSImp.CUChar)}) p (fromIntegral $ length o)
        if length o > 36
           then error "operands overflew 36 elements"
           else pokeArray (plusPtr p 40) o

-- | ARM instructions
data ArmInsn = ArmInsInvalid
             | ArmInsAdc
             | ArmInsAdd
             | ArmInsAdr
             | ArmInsAesd
             | ArmInsAese
             | ArmInsAesimc
             | ArmInsAesmc
             | ArmInsAnd
             | ArmInsBfc
             | ArmInsBfi
             | ArmInsBic
             | ArmInsBkpt
             | ArmInsBl
             | ArmInsBlx
             | ArmInsBx
             | ArmInsBxj
             | ArmInsB
             | ArmInsCdp
             | ArmInsCdp2
             | ArmInsClrex
             | ArmInsClz
             | ArmInsCmn
             | ArmInsCmp
             | ArmInsCps
             | ArmInsCrc32b
             | ArmInsCrc32cb
             | ArmInsCrc32ch
             | ArmInsCrc32cw
             | ArmInsCrc32h
             | ArmInsCrc32w
             | ArmInsDbg
             | ArmInsDmb
             | ArmInsDsb
             | ArmInsEor
             | ArmInsEret
             | ArmInsVmov
             | ArmInsFldmdbx
             | ArmInsFldmiax
             | ArmInsVmrs
             | ArmInsFstmdbx
             | ArmInsFstmiax
             | ArmInsHint
             | ArmInsHlt
             | ArmInsHvc
             | ArmInsIsb
             | ArmInsLda
             | ArmInsLdab
             | ArmInsLdaex
             | ArmInsLdaexb
             | ArmInsLdaexd
             | ArmInsLdaexh
             | ArmInsLdah
             | ArmInsLdc2l
             | ArmInsLdc2
             | ArmInsLdcl
             | ArmInsLdc
             | ArmInsLdmda
             | ArmInsLdmdb
             | ArmInsLdm
             | ArmInsLdmib
             | ArmInsLdrbt
             | ArmInsLdrb
             | ArmInsLdrd
             | ArmInsLdrex
             | ArmInsLdrexb
             | ArmInsLdrexd
             | ArmInsLdrexh
             | ArmInsLdrh
             | ArmInsLdrht
             | ArmInsLdrsb
             | ArmInsLdrsbt
             | ArmInsLdrsh
             | ArmInsLdrsht
             | ArmInsLdrt
             | ArmInsLdr
             | ArmInsMcr
             | ArmInsMcr2
             | ArmInsMcrr
             | ArmInsMcrr2
             | ArmInsMla
             | ArmInsMls
             | ArmInsMov
             | ArmInsMovt
             | ArmInsMovw
             | ArmInsMrc
             | ArmInsMrc2
             | ArmInsMrrc
             | ArmInsMrrc2
             | ArmInsMrs
             | ArmInsMsr
             | ArmInsMul
             | ArmInsMvn
             | ArmInsOrr
             | ArmInsPkhbt
             | ArmInsPkhtb
             | ArmInsPldw
             | ArmInsPld
             | ArmInsPli
             | ArmInsQadd
             | ArmInsQadd16
             | ArmInsQadd8
             | ArmInsQasx
             | ArmInsQdadd
             | ArmInsQdsub
             | ArmInsQsax
             | ArmInsQsub
             | ArmInsQsub16
             | ArmInsQsub8
             | ArmInsRbit
             | ArmInsRev
             | ArmInsRev16
             | ArmInsRevsh
             | ArmInsRfeda
             | ArmInsRfedb
             | ArmInsRfeia
             | ArmInsRfeib
             | ArmInsRsb
             | ArmInsRsc
             | ArmInsSadd16
             | ArmInsSadd8
             | ArmInsSasx
             | ArmInsSbc
             | ArmInsSbfx
             | ArmInsSdiv
             | ArmInsSel
             | ArmInsSetend
             | ArmInsSha1c
             | ArmInsSha1h
             | ArmInsSha1m
             | ArmInsSha1p
             | ArmInsSha1su0
             | ArmInsSha1su1
             | ArmInsSha256h
             | ArmInsSha256h2
             | ArmInsSha256su0
             | ArmInsSha256su1
             | ArmInsShadd16
             | ArmInsShadd8
             | ArmInsShasx
             | ArmInsShsax
             | ArmInsShsub16
             | ArmInsShsub8
             | ArmInsSmc
             | ArmInsSmlabb
             | ArmInsSmlabt
             | ArmInsSmlad
             | ArmInsSmladx
             | ArmInsSmlal
             | ArmInsSmlalbb
             | ArmInsSmlalbt
             | ArmInsSmlald
             | ArmInsSmlaldx
             | ArmInsSmlaltb
             | ArmInsSmlaltt
             | ArmInsSmlatb
             | ArmInsSmlatt
             | ArmInsSmlawb
             | ArmInsSmlawt
             | ArmInsSmlsd
             | ArmInsSmlsdx
             | ArmInsSmlsld
             | ArmInsSmlsldx
             | ArmInsSmmla
             | ArmInsSmmlar
             | ArmInsSmmls
             | ArmInsSmmlsr
             | ArmInsSmmul
             | ArmInsSmmulr
             | ArmInsSmuad
             | ArmInsSmuadx
             | ArmInsSmulbb
             | ArmInsSmulbt
             | ArmInsSmull
             | ArmInsSmultb
             | ArmInsSmultt
             | ArmInsSmulwb
             | ArmInsSmulwt
             | ArmInsSmusd
             | ArmInsSmusdx
             | ArmInsSrsda
             | ArmInsSrsdb
             | ArmInsSrsia
             | ArmInsSrsib
             | ArmInsSsat
             | ArmInsSsat16
             | ArmInsSsax
             | ArmInsSsub16
             | ArmInsSsub8
             | ArmInsStc2l
             | ArmInsStc2
             | ArmInsStcl
             | ArmInsStc
             | ArmInsStl
             | ArmInsStlb
             | ArmInsStlex
             | ArmInsStlexb
             | ArmInsStlexd
             | ArmInsStlexh
             | ArmInsStlh
             | ArmInsStmda
             | ArmInsStmdb
             | ArmInsStm
             | ArmInsStmib
             | ArmInsStrbt
             | ArmInsStrb
             | ArmInsStrd
             | ArmInsStrex
             | ArmInsStrexb
             | ArmInsStrexd
             | ArmInsStrexh
             | ArmInsStrh
             | ArmInsStrht
             | ArmInsStrt
             | ArmInsStr
             | ArmInsSub
             | ArmInsSvc
             | ArmInsSwp
             | ArmInsSwpb
             | ArmInsSxtab
             | ArmInsSxtab16
             | ArmInsSxtah
             | ArmInsSxtb
             | ArmInsSxtb16
             | ArmInsSxth
             | ArmInsTeq
             | ArmInsTrap
             | ArmInsTst
             | ArmInsUadd16
             | ArmInsUadd8
             | ArmInsUasx
             | ArmInsUbfx
             | ArmInsUdf
             | ArmInsUdiv
             | ArmInsUhadd16
             | ArmInsUhadd8
             | ArmInsUhasx
             | ArmInsUhsax
             | ArmInsUhsub16
             | ArmInsUhsub8
             | ArmInsUmaal
             | ArmInsUmlal
             | ArmInsUmull
             | ArmInsUqadd16
             | ArmInsUqadd8
             | ArmInsUqasx
             | ArmInsUqsax
             | ArmInsUqsub16
             | ArmInsUqsub8
             | ArmInsUsad8
             | ArmInsUsada8
             | ArmInsUsat
             | ArmInsUsat16
             | ArmInsUsax
             | ArmInsUsub16
             | ArmInsUsub8
             | ArmInsUxtab
             | ArmInsUxtab16
             | ArmInsUxtah
             | ArmInsUxtb
             | ArmInsUxtb16
             | ArmInsUxth
             | ArmInsVabal
             | ArmInsVaba
             | ArmInsVabdl
             | ArmInsVabd
             | ArmInsVabs
             | ArmInsVacge
             | ArmInsVacgt
             | ArmInsVadd
             | ArmInsVaddhn
             | ArmInsVaddl
             | ArmInsVaddw
             | ArmInsVand
             | ArmInsVbic
             | ArmInsVbif
             | ArmInsVbit
             | ArmInsVbsl
             | ArmInsVceq
             | ArmInsVcge
             | ArmInsVcgt
             | ArmInsVcle
             | ArmInsVcls
             | ArmInsVclt
             | ArmInsVclz
             | ArmInsVcmp
             | ArmInsVcmpe
             | ArmInsVcnt
             | ArmInsVcvta
             | ArmInsVcvtb
             | ArmInsVcvt
             | ArmInsVcvtm
             | ArmInsVcvtn
             | ArmInsVcvtp
             | ArmInsVcvtt
             | ArmInsVdiv
             | ArmInsVdup
             | ArmInsVeor
             | ArmInsVext
             | ArmInsVfma
             | ArmInsVfms
             | ArmInsVfnma
             | ArmInsVfnms
             | ArmInsVhadd
             | ArmInsVhsub
             | ArmInsVld1
             | ArmInsVld2
             | ArmInsVld3
             | ArmInsVld4
             | ArmInsVldmdb
             | ArmInsVldmia
             | ArmInsVldr
             | ArmInsVmaxnm
             | ArmInsVmax
             | ArmInsVminnm
             | ArmInsVmin
             | ArmInsVmla
             | ArmInsVmlal
             | ArmInsVmls
             | ArmInsVmlsl
             | ArmInsVmovl
             | ArmInsVmovn
             | ArmInsVmsr
             | ArmInsVmul
             | ArmInsVmull
             | ArmInsVmvn
             | ArmInsVneg
             | ArmInsVnmla
             | ArmInsVnmls
             | ArmInsVnmul
             | ArmInsVorn
             | ArmInsVorr
             | ArmInsVpadal
             | ArmInsVpaddl
             | ArmInsVpadd
             | ArmInsVpmax
             | ArmInsVpmin
             | ArmInsVqabs
             | ArmInsVqadd
             | ArmInsVqdmlal
             | ArmInsVqdmlsl
             | ArmInsVqdmulh
             | ArmInsVqdmull
             | ArmInsVqmovun
             | ArmInsVqmovn
             | ArmInsVqneg
             | ArmInsVqrdmulh
             | ArmInsVqrshl
             | ArmInsVqrshrn
             | ArmInsVqrshrun
             | ArmInsVqshl
             | ArmInsVqshlu
             | ArmInsVqshrn
             | ArmInsVqshrun
             | ArmInsVqsub
             | ArmInsVraddhn
             | ArmInsVrecpe
             | ArmInsVrecps
             | ArmInsVrev16
             | ArmInsVrev32
             | ArmInsVrev64
             | ArmInsVrhadd
             | ArmInsVrinta
             | ArmInsVrintm
             | ArmInsVrintn
             | ArmInsVrintp
             | ArmInsVrintr
             | ArmInsVrintx
             | ArmInsVrintz
             | ArmInsVrshl
             | ArmInsVrshrn
             | ArmInsVrshr
             | ArmInsVrsqrte
             | ArmInsVrsqrts
             | ArmInsVrsra
             | ArmInsVrsubhn
             | ArmInsVseleq
             | ArmInsVselge
             | ArmInsVselgt
             | ArmInsVselvs
             | ArmInsVshll
             | ArmInsVshl
             | ArmInsVshrn
             | ArmInsVshr
             | ArmInsVsli
             | ArmInsVsqrt
             | ArmInsVsra
             | ArmInsVsri
             | ArmInsVst1
             | ArmInsVst2
             | ArmInsVst3
             | ArmInsVst4
             | ArmInsVstmdb
             | ArmInsVstmia
             | ArmInsVstr
             | ArmInsVsub
             | ArmInsVsubhn
             | ArmInsVsubl
             | ArmInsVsubw
             | ArmInsVswp
             | ArmInsVtbl
             | ArmInsVtbx
             | ArmInsVcvtr
             | ArmInsVtrn
             | ArmInsVtst
             | ArmInsVuzp
             | ArmInsVzip
             | ArmInsAddw
             | ArmInsAsr
             | ArmInsDcps1
             | ArmInsDcps2
             | ArmInsDcps3
             | ArmInsIt
             | ArmInsLsl
             | ArmInsLsr
             | ArmInsOrn
             | ArmInsRor
             | ArmInsRrx
             | ArmInsSubw
             | ArmInsTbb
             | ArmInsTbh
             | ArmInsCbnz
             | ArmInsCbz
             | ArmInsPop
             | ArmInsPush
             | ArmInsNop
             | ArmInsYield
             | ArmInsWfe
             | ArmInsWfi
             | ArmInsSev
             | ArmInsSevl
             | ArmInsVpush
             | ArmInsVpop
             | ArmInsEnding
  deriving (Show,Eq,Bounded)
instance Enum ArmInsn where
  succ ArmInsInvalid = ArmInsAdc
  succ ArmInsAdc = ArmInsAdd
  succ ArmInsAdd = ArmInsAdr
  succ ArmInsAdr = ArmInsAesd
  succ ArmInsAesd = ArmInsAese
  succ ArmInsAese = ArmInsAesimc
  succ ArmInsAesimc = ArmInsAesmc
  succ ArmInsAesmc = ArmInsAnd
  succ ArmInsAnd = ArmInsBfc
  succ ArmInsBfc = ArmInsBfi
  succ ArmInsBfi = ArmInsBic
  succ ArmInsBic = ArmInsBkpt
  succ ArmInsBkpt = ArmInsBl
  succ ArmInsBl = ArmInsBlx
  succ ArmInsBlx = ArmInsBx
  succ ArmInsBx = ArmInsBxj
  succ ArmInsBxj = ArmInsB
  succ ArmInsB = ArmInsCdp
  succ ArmInsCdp = ArmInsCdp2
  succ ArmInsCdp2 = ArmInsClrex
  succ ArmInsClrex = ArmInsClz
  succ ArmInsClz = ArmInsCmn
  succ ArmInsCmn = ArmInsCmp
  succ ArmInsCmp = ArmInsCps
  succ ArmInsCps = ArmInsCrc32b
  succ ArmInsCrc32b = ArmInsCrc32cb
  succ ArmInsCrc32cb = ArmInsCrc32ch
  succ ArmInsCrc32ch = ArmInsCrc32cw
  succ ArmInsCrc32cw = ArmInsCrc32h
  succ ArmInsCrc32h = ArmInsCrc32w
  succ ArmInsCrc32w = ArmInsDbg
  succ ArmInsDbg = ArmInsDmb
  succ ArmInsDmb = ArmInsDsb
  succ ArmInsDsb = ArmInsEor
  succ ArmInsEor = ArmInsEret
  succ ArmInsEret = ArmInsVmov
  succ ArmInsVmov = ArmInsFldmdbx
  succ ArmInsFldmdbx = ArmInsFldmiax
  succ ArmInsFldmiax = ArmInsVmrs
  succ ArmInsVmrs = ArmInsFstmdbx
  succ ArmInsFstmdbx = ArmInsFstmiax
  succ ArmInsFstmiax = ArmInsHint
  succ ArmInsHint = ArmInsHlt
  succ ArmInsHlt = ArmInsHvc
  succ ArmInsHvc = ArmInsIsb
  succ ArmInsIsb = ArmInsLda
  succ ArmInsLda = ArmInsLdab
  succ ArmInsLdab = ArmInsLdaex
  succ ArmInsLdaex = ArmInsLdaexb
  succ ArmInsLdaexb = ArmInsLdaexd
  succ ArmInsLdaexd = ArmInsLdaexh
  succ ArmInsLdaexh = ArmInsLdah
  succ ArmInsLdah = ArmInsLdc2l
  succ ArmInsLdc2l = ArmInsLdc2
  succ ArmInsLdc2 = ArmInsLdcl
  succ ArmInsLdcl = ArmInsLdc
  succ ArmInsLdc = ArmInsLdmda
  succ ArmInsLdmda = ArmInsLdmdb
  succ ArmInsLdmdb = ArmInsLdm
  succ ArmInsLdm = ArmInsLdmib
  succ ArmInsLdmib = ArmInsLdrbt
  succ ArmInsLdrbt = ArmInsLdrb
  succ ArmInsLdrb = ArmInsLdrd
  succ ArmInsLdrd = ArmInsLdrex
  succ ArmInsLdrex = ArmInsLdrexb
  succ ArmInsLdrexb = ArmInsLdrexd
  succ ArmInsLdrexd = ArmInsLdrexh
  succ ArmInsLdrexh = ArmInsLdrh
  succ ArmInsLdrh = ArmInsLdrht
  succ ArmInsLdrht = ArmInsLdrsb
  succ ArmInsLdrsb = ArmInsLdrsbt
  succ ArmInsLdrsbt = ArmInsLdrsh
  succ ArmInsLdrsh = ArmInsLdrsht
  succ ArmInsLdrsht = ArmInsLdrt
  succ ArmInsLdrt = ArmInsLdr
  succ ArmInsLdr = ArmInsMcr
  succ ArmInsMcr = ArmInsMcr2
  succ ArmInsMcr2 = ArmInsMcrr
  succ ArmInsMcrr = ArmInsMcrr2
  succ ArmInsMcrr2 = ArmInsMla
  succ ArmInsMla = ArmInsMls
  succ ArmInsMls = ArmInsMov
  succ ArmInsMov = ArmInsMovt
  succ ArmInsMovt = ArmInsMovw
  succ ArmInsMovw = ArmInsMrc
  succ ArmInsMrc = ArmInsMrc2
  succ ArmInsMrc2 = ArmInsMrrc
  succ ArmInsMrrc = ArmInsMrrc2
  succ ArmInsMrrc2 = ArmInsMrs
  succ ArmInsMrs = ArmInsMsr
  succ ArmInsMsr = ArmInsMul
  succ ArmInsMul = ArmInsMvn
  succ ArmInsMvn = ArmInsOrr
  succ ArmInsOrr = ArmInsPkhbt
  succ ArmInsPkhbt = ArmInsPkhtb
  succ ArmInsPkhtb = ArmInsPldw
  succ ArmInsPldw = ArmInsPld
  succ ArmInsPld = ArmInsPli
  succ ArmInsPli = ArmInsQadd
  succ ArmInsQadd = ArmInsQadd16
  succ ArmInsQadd16 = ArmInsQadd8
  succ ArmInsQadd8 = ArmInsQasx
  succ ArmInsQasx = ArmInsQdadd
  succ ArmInsQdadd = ArmInsQdsub
  succ ArmInsQdsub = ArmInsQsax
  succ ArmInsQsax = ArmInsQsub
  succ ArmInsQsub = ArmInsQsub16
  succ ArmInsQsub16 = ArmInsQsub8
  succ ArmInsQsub8 = ArmInsRbit
  succ ArmInsRbit = ArmInsRev
  succ ArmInsRev = ArmInsRev16
  succ ArmInsRev16 = ArmInsRevsh
  succ ArmInsRevsh = ArmInsRfeda
  succ ArmInsRfeda = ArmInsRfedb
  succ ArmInsRfedb = ArmInsRfeia
  succ ArmInsRfeia = ArmInsRfeib
  succ ArmInsRfeib = ArmInsRsb
  succ ArmInsRsb = ArmInsRsc
  succ ArmInsRsc = ArmInsSadd16
  succ ArmInsSadd16 = ArmInsSadd8
  succ ArmInsSadd8 = ArmInsSasx
  succ ArmInsSasx = ArmInsSbc
  succ ArmInsSbc = ArmInsSbfx
  succ ArmInsSbfx = ArmInsSdiv
  succ ArmInsSdiv = ArmInsSel
  succ ArmInsSel = ArmInsSetend
  succ ArmInsSetend = ArmInsSha1c
  succ ArmInsSha1c = ArmInsSha1h
  succ ArmInsSha1h = ArmInsSha1m
  succ ArmInsSha1m = ArmInsSha1p
  succ ArmInsSha1p = ArmInsSha1su0
  succ ArmInsSha1su0 = ArmInsSha1su1
  succ ArmInsSha1su1 = ArmInsSha256h
  succ ArmInsSha256h = ArmInsSha256h2
  succ ArmInsSha256h2 = ArmInsSha256su0
  succ ArmInsSha256su0 = ArmInsSha256su1
  succ ArmInsSha256su1 = ArmInsShadd16
  succ ArmInsShadd16 = ArmInsShadd8
  succ ArmInsShadd8 = ArmInsShasx
  succ ArmInsShasx = ArmInsShsax
  succ ArmInsShsax = ArmInsShsub16
  succ ArmInsShsub16 = ArmInsShsub8
  succ ArmInsShsub8 = ArmInsSmc
  succ ArmInsSmc = ArmInsSmlabb
  succ ArmInsSmlabb = ArmInsSmlabt
  succ ArmInsSmlabt = ArmInsSmlad
  succ ArmInsSmlad = ArmInsSmladx
  succ ArmInsSmladx = ArmInsSmlal
  succ ArmInsSmlal = ArmInsSmlalbb
  succ ArmInsSmlalbb = ArmInsSmlalbt
  succ ArmInsSmlalbt = ArmInsSmlald
  succ ArmInsSmlald = ArmInsSmlaldx
  succ ArmInsSmlaldx = ArmInsSmlaltb
  succ ArmInsSmlaltb = ArmInsSmlaltt
  succ ArmInsSmlaltt = ArmInsSmlatb
  succ ArmInsSmlatb = ArmInsSmlatt
  succ ArmInsSmlatt = ArmInsSmlawb
  succ ArmInsSmlawb = ArmInsSmlawt
  succ ArmInsSmlawt = ArmInsSmlsd
  succ ArmInsSmlsd = ArmInsSmlsdx
  succ ArmInsSmlsdx = ArmInsSmlsld
  succ ArmInsSmlsld = ArmInsSmlsldx
  succ ArmInsSmlsldx = ArmInsSmmla
  succ ArmInsSmmla = ArmInsSmmlar
  succ ArmInsSmmlar = ArmInsSmmls
  succ ArmInsSmmls = ArmInsSmmlsr
  succ ArmInsSmmlsr = ArmInsSmmul
  succ ArmInsSmmul = ArmInsSmmulr
  succ ArmInsSmmulr = ArmInsSmuad
  succ ArmInsSmuad = ArmInsSmuadx
  succ ArmInsSmuadx = ArmInsSmulbb
  succ ArmInsSmulbb = ArmInsSmulbt
  succ ArmInsSmulbt = ArmInsSmull
  succ ArmInsSmull = ArmInsSmultb
  succ ArmInsSmultb = ArmInsSmultt
  succ ArmInsSmultt = ArmInsSmulwb
  succ ArmInsSmulwb = ArmInsSmulwt
  succ ArmInsSmulwt = ArmInsSmusd
  succ ArmInsSmusd = ArmInsSmusdx
  succ ArmInsSmusdx = ArmInsSrsda
  succ ArmInsSrsda = ArmInsSrsdb
  succ ArmInsSrsdb = ArmInsSrsia
  succ ArmInsSrsia = ArmInsSrsib
  succ ArmInsSrsib = ArmInsSsat
  succ ArmInsSsat = ArmInsSsat16
  succ ArmInsSsat16 = ArmInsSsax
  succ ArmInsSsax = ArmInsSsub16
  succ ArmInsSsub16 = ArmInsSsub8
  succ ArmInsSsub8 = ArmInsStc2l
  succ ArmInsStc2l = ArmInsStc2
  succ ArmInsStc2 = ArmInsStcl
  succ ArmInsStcl = ArmInsStc
  succ ArmInsStc = ArmInsStl
  succ ArmInsStl = ArmInsStlb
  succ ArmInsStlb = ArmInsStlex
  succ ArmInsStlex = ArmInsStlexb
  succ ArmInsStlexb = ArmInsStlexd
  succ ArmInsStlexd = ArmInsStlexh
  succ ArmInsStlexh = ArmInsStlh
  succ ArmInsStlh = ArmInsStmda
  succ ArmInsStmda = ArmInsStmdb
  succ ArmInsStmdb = ArmInsStm
  succ ArmInsStm = ArmInsStmib
  succ ArmInsStmib = ArmInsStrbt
  succ ArmInsStrbt = ArmInsStrb
  succ ArmInsStrb = ArmInsStrd
  succ ArmInsStrd = ArmInsStrex
  succ ArmInsStrex = ArmInsStrexb
  succ ArmInsStrexb = ArmInsStrexd
  succ ArmInsStrexd = ArmInsStrexh
  succ ArmInsStrexh = ArmInsStrh
  succ ArmInsStrh = ArmInsStrht
  succ ArmInsStrht = ArmInsStrt
  succ ArmInsStrt = ArmInsStr
  succ ArmInsStr = ArmInsSub
  succ ArmInsSub = ArmInsSvc
  succ ArmInsSvc = ArmInsSwp
  succ ArmInsSwp = ArmInsSwpb
  succ ArmInsSwpb = ArmInsSxtab
  succ ArmInsSxtab = ArmInsSxtab16
  succ ArmInsSxtab16 = ArmInsSxtah
  succ ArmInsSxtah = ArmInsSxtb
  succ ArmInsSxtb = ArmInsSxtb16
  succ ArmInsSxtb16 = ArmInsSxth
  succ ArmInsSxth = ArmInsTeq
  succ ArmInsTeq = ArmInsTrap
  succ ArmInsTrap = ArmInsTst
  succ ArmInsTst = ArmInsUadd16
  succ ArmInsUadd16 = ArmInsUadd8
  succ ArmInsUadd8 = ArmInsUasx
  succ ArmInsUasx = ArmInsUbfx
  succ ArmInsUbfx = ArmInsUdf
  succ ArmInsUdf = ArmInsUdiv
  succ ArmInsUdiv = ArmInsUhadd16
  succ ArmInsUhadd16 = ArmInsUhadd8
  succ ArmInsUhadd8 = ArmInsUhasx
  succ ArmInsUhasx = ArmInsUhsax
  succ ArmInsUhsax = ArmInsUhsub16
  succ ArmInsUhsub16 = ArmInsUhsub8
  succ ArmInsUhsub8 = ArmInsUmaal
  succ ArmInsUmaal = ArmInsUmlal
  succ ArmInsUmlal = ArmInsUmull
  succ ArmInsUmull = ArmInsUqadd16
  succ ArmInsUqadd16 = ArmInsUqadd8
  succ ArmInsUqadd8 = ArmInsUqasx
  succ ArmInsUqasx = ArmInsUqsax
  succ ArmInsUqsax = ArmInsUqsub16
  succ ArmInsUqsub16 = ArmInsUqsub8
  succ ArmInsUqsub8 = ArmInsUsad8
  succ ArmInsUsad8 = ArmInsUsada8
  succ ArmInsUsada8 = ArmInsUsat
  succ ArmInsUsat = ArmInsUsat16
  succ ArmInsUsat16 = ArmInsUsax
  succ ArmInsUsax = ArmInsUsub16
  succ ArmInsUsub16 = ArmInsUsub8
  succ ArmInsUsub8 = ArmInsUxtab
  succ ArmInsUxtab = ArmInsUxtab16
  succ ArmInsUxtab16 = ArmInsUxtah
  succ ArmInsUxtah = ArmInsUxtb
  succ ArmInsUxtb = ArmInsUxtb16
  succ ArmInsUxtb16 = ArmInsUxth
  succ ArmInsUxth = ArmInsVabal
  succ ArmInsVabal = ArmInsVaba
  succ ArmInsVaba = ArmInsVabdl
  succ ArmInsVabdl = ArmInsVabd
  succ ArmInsVabd = ArmInsVabs
  succ ArmInsVabs = ArmInsVacge
  succ ArmInsVacge = ArmInsVacgt
  succ ArmInsVacgt = ArmInsVadd
  succ ArmInsVadd = ArmInsVaddhn
  succ ArmInsVaddhn = ArmInsVaddl
  succ ArmInsVaddl = ArmInsVaddw
  succ ArmInsVaddw = ArmInsVand
  succ ArmInsVand = ArmInsVbic
  succ ArmInsVbic = ArmInsVbif
  succ ArmInsVbif = ArmInsVbit
  succ ArmInsVbit = ArmInsVbsl
  succ ArmInsVbsl = ArmInsVceq
  succ ArmInsVceq = ArmInsVcge
  succ ArmInsVcge = ArmInsVcgt
  succ ArmInsVcgt = ArmInsVcle
  succ ArmInsVcle = ArmInsVcls
  succ ArmInsVcls = ArmInsVclt
  succ ArmInsVclt = ArmInsVclz
  succ ArmInsVclz = ArmInsVcmp
  succ ArmInsVcmp = ArmInsVcmpe
  succ ArmInsVcmpe = ArmInsVcnt
  succ ArmInsVcnt = ArmInsVcvta
  succ ArmInsVcvta = ArmInsVcvtb
  succ ArmInsVcvtb = ArmInsVcvt
  succ ArmInsVcvt = ArmInsVcvtm
  succ ArmInsVcvtm = ArmInsVcvtn
  succ ArmInsVcvtn = ArmInsVcvtp
  succ ArmInsVcvtp = ArmInsVcvtt
  succ ArmInsVcvtt = ArmInsVdiv
  succ ArmInsVdiv = ArmInsVdup
  succ ArmInsVdup = ArmInsVeor
  succ ArmInsVeor = ArmInsVext
  succ ArmInsVext = ArmInsVfma
  succ ArmInsVfma = ArmInsVfms
  succ ArmInsVfms = ArmInsVfnma
  succ ArmInsVfnma = ArmInsVfnms
  succ ArmInsVfnms = ArmInsVhadd
  succ ArmInsVhadd = ArmInsVhsub
  succ ArmInsVhsub = ArmInsVld1
  succ ArmInsVld1 = ArmInsVld2
  succ ArmInsVld2 = ArmInsVld3
  succ ArmInsVld3 = ArmInsVld4
  succ ArmInsVld4 = ArmInsVldmdb
  succ ArmInsVldmdb = ArmInsVldmia
  succ ArmInsVldmia = ArmInsVldr
  succ ArmInsVldr = ArmInsVmaxnm
  succ ArmInsVmaxnm = ArmInsVmax
  succ ArmInsVmax = ArmInsVminnm
  succ ArmInsVminnm = ArmInsVmin
  succ ArmInsVmin = ArmInsVmla
  succ ArmInsVmla = ArmInsVmlal
  succ ArmInsVmlal = ArmInsVmls
  succ ArmInsVmls = ArmInsVmlsl
  succ ArmInsVmlsl = ArmInsVmovl
  succ ArmInsVmovl = ArmInsVmovn
  succ ArmInsVmovn = ArmInsVmsr
  succ ArmInsVmsr = ArmInsVmul
  succ ArmInsVmul = ArmInsVmull
  succ ArmInsVmull = ArmInsVmvn
  succ ArmInsVmvn = ArmInsVneg
  succ ArmInsVneg = ArmInsVnmla
  succ ArmInsVnmla = ArmInsVnmls
  succ ArmInsVnmls = ArmInsVnmul
  succ ArmInsVnmul = ArmInsVorn
  succ ArmInsVorn = ArmInsVorr
  succ ArmInsVorr = ArmInsVpadal
  succ ArmInsVpadal = ArmInsVpaddl
  succ ArmInsVpaddl = ArmInsVpadd
  succ ArmInsVpadd = ArmInsVpmax
  succ ArmInsVpmax = ArmInsVpmin
  succ ArmInsVpmin = ArmInsVqabs
  succ ArmInsVqabs = ArmInsVqadd
  succ ArmInsVqadd = ArmInsVqdmlal
  succ ArmInsVqdmlal = ArmInsVqdmlsl
  succ ArmInsVqdmlsl = ArmInsVqdmulh
  succ ArmInsVqdmulh = ArmInsVqdmull
  succ ArmInsVqdmull = ArmInsVqmovun
  succ ArmInsVqmovun = ArmInsVqmovn
  succ ArmInsVqmovn = ArmInsVqneg
  succ ArmInsVqneg = ArmInsVqrdmulh
  succ ArmInsVqrdmulh = ArmInsVqrshl
  succ ArmInsVqrshl = ArmInsVqrshrn
  succ ArmInsVqrshrn = ArmInsVqrshrun
  succ ArmInsVqrshrun = ArmInsVqshl
  succ ArmInsVqshl = ArmInsVqshlu
  succ ArmInsVqshlu = ArmInsVqshrn
  succ ArmInsVqshrn = ArmInsVqshrun
  succ ArmInsVqshrun = ArmInsVqsub
  succ ArmInsVqsub = ArmInsVraddhn
  succ ArmInsVraddhn = ArmInsVrecpe
  succ ArmInsVrecpe = ArmInsVrecps
  succ ArmInsVrecps = ArmInsVrev16
  succ ArmInsVrev16 = ArmInsVrev32
  succ ArmInsVrev32 = ArmInsVrev64
  succ ArmInsVrev64 = ArmInsVrhadd
  succ ArmInsVrhadd = ArmInsVrinta
  succ ArmInsVrinta = ArmInsVrintm
  succ ArmInsVrintm = ArmInsVrintn
  succ ArmInsVrintn = ArmInsVrintp
  succ ArmInsVrintp = ArmInsVrintr
  succ ArmInsVrintr = ArmInsVrintx
  succ ArmInsVrintx = ArmInsVrintz
  succ ArmInsVrintz = ArmInsVrshl
  succ ArmInsVrshl = ArmInsVrshrn
  succ ArmInsVrshrn = ArmInsVrshr
  succ ArmInsVrshr = ArmInsVrsqrte
  succ ArmInsVrsqrte = ArmInsVrsqrts
  succ ArmInsVrsqrts = ArmInsVrsra
  succ ArmInsVrsra = ArmInsVrsubhn
  succ ArmInsVrsubhn = ArmInsVseleq
  succ ArmInsVseleq = ArmInsVselge
  succ ArmInsVselge = ArmInsVselgt
  succ ArmInsVselgt = ArmInsVselvs
  succ ArmInsVselvs = ArmInsVshll
  succ ArmInsVshll = ArmInsVshl
  succ ArmInsVshl = ArmInsVshrn
  succ ArmInsVshrn = ArmInsVshr
  succ ArmInsVshr = ArmInsVsli
  succ ArmInsVsli = ArmInsVsqrt
  succ ArmInsVsqrt = ArmInsVsra
  succ ArmInsVsra = ArmInsVsri
  succ ArmInsVsri = ArmInsVst1
  succ ArmInsVst1 = ArmInsVst2
  succ ArmInsVst2 = ArmInsVst3
  succ ArmInsVst3 = ArmInsVst4
  succ ArmInsVst4 = ArmInsVstmdb
  succ ArmInsVstmdb = ArmInsVstmia
  succ ArmInsVstmia = ArmInsVstr
  succ ArmInsVstr = ArmInsVsub
  succ ArmInsVsub = ArmInsVsubhn
  succ ArmInsVsubhn = ArmInsVsubl
  succ ArmInsVsubl = ArmInsVsubw
  succ ArmInsVsubw = ArmInsVswp
  succ ArmInsVswp = ArmInsVtbl
  succ ArmInsVtbl = ArmInsVtbx
  succ ArmInsVtbx = ArmInsVcvtr
  succ ArmInsVcvtr = ArmInsVtrn
  succ ArmInsVtrn = ArmInsVtst
  succ ArmInsVtst = ArmInsVuzp
  succ ArmInsVuzp = ArmInsVzip
  succ ArmInsVzip = ArmInsAddw
  succ ArmInsAddw = ArmInsAsr
  succ ArmInsAsr = ArmInsDcps1
  succ ArmInsDcps1 = ArmInsDcps2
  succ ArmInsDcps2 = ArmInsDcps3
  succ ArmInsDcps3 = ArmInsIt
  succ ArmInsIt = ArmInsLsl
  succ ArmInsLsl = ArmInsLsr
  succ ArmInsLsr = ArmInsOrn
  succ ArmInsOrn = ArmInsRor
  succ ArmInsRor = ArmInsRrx
  succ ArmInsRrx = ArmInsSubw
  succ ArmInsSubw = ArmInsTbb
  succ ArmInsTbb = ArmInsTbh
  succ ArmInsTbh = ArmInsCbnz
  succ ArmInsCbnz = ArmInsCbz
  succ ArmInsCbz = ArmInsPop
  succ ArmInsPop = ArmInsPush
  succ ArmInsPush = ArmInsNop
  succ ArmInsNop = ArmInsYield
  succ ArmInsYield = ArmInsWfe
  succ ArmInsWfe = ArmInsWfi
  succ ArmInsWfi = ArmInsSev
  succ ArmInsSev = ArmInsSevl
  succ ArmInsSevl = ArmInsVpush
  succ ArmInsVpush = ArmInsVpop
  succ ArmInsVpop = ArmInsEnding
  succ ArmInsEnding = error "ArmInsn.succ: ArmInsEnding has no successor"

  pred :: ArmInsn -> ArmInsn
pred ArmInsn
ArmInsAdc = ArmInsn
ArmInsInvalid
  pred ArmInsn
ArmInsAdd = ArmInsn
ArmInsAdc
  pred ArmInsn
ArmInsAdr = ArmInsn
ArmInsAdd
  pred ArmInsn
ArmInsAesd = ArmInsn
ArmInsAdr
  pred ArmInsn
ArmInsAese = ArmInsn
ArmInsAesd
  pred ArmInsn
ArmInsAesimc = ArmInsn
ArmInsAese
  pred ArmInsn
ArmInsAesmc = ArmInsn
ArmInsAesimc
  pred ArmInsn
ArmInsAnd = ArmInsn
ArmInsAesmc
  pred ArmInsn
ArmInsBfc = ArmInsn
ArmInsAnd
  pred ArmInsn
ArmInsBfi = ArmInsn
ArmInsBfc
  pred ArmInsn
ArmInsBic = ArmInsn
ArmInsBfi
  pred ArmInsn
ArmInsBkpt = ArmInsn
ArmInsBic
  pred ArmInsn
ArmInsBl = ArmInsn
ArmInsBkpt
  pred ArmInsn
ArmInsBlx = ArmInsn
ArmInsBl
  pred ArmInsn
ArmInsBx = ArmInsn
ArmInsBlx
  pred ArmInsn
ArmInsBxj = ArmInsn
ArmInsBx
  pred ArmInsn
ArmInsB = ArmInsn
ArmInsBxj
  pred ArmInsn
ArmInsCdp = ArmInsn
ArmInsB
  pred ArmInsn
ArmInsCdp2 = ArmInsn
ArmInsCdp
  pred ArmInsn
ArmInsClrex = ArmInsn
ArmInsCdp2
  pred ArmInsn
ArmInsClz = ArmInsn
ArmInsClrex
  pred ArmInsn
ArmInsCmn = ArmInsn
ArmInsClz
  pred ArmInsn
ArmInsCmp = ArmInsn
ArmInsCmn
  pred ArmInsn
ArmInsCps = ArmInsn
ArmInsCmp
  pred ArmInsn
ArmInsCrc32b = ArmInsn
ArmInsCps
  pred ArmInsn
ArmInsCrc32cb = ArmInsn
ArmInsCrc32b
  pred ArmInsn
ArmInsCrc32ch = ArmInsn
ArmInsCrc32cb
  pred ArmInsn
ArmInsCrc32cw = ArmInsn
ArmInsCrc32ch
  pred ArmInsn
ArmInsCrc32h = ArmInsn
ArmInsCrc32cw
  pred ArmInsn
ArmInsCrc32w = ArmInsn
ArmInsCrc32h
  pred ArmInsn
ArmInsDbg = ArmInsn
ArmInsCrc32w
  pred ArmInsn
ArmInsDmb = ArmInsn
ArmInsDbg
  pred ArmInsn
ArmInsDsb = ArmInsn
ArmInsDmb
  pred ArmInsn
ArmInsEor = ArmInsn
ArmInsDsb
  pred ArmInsn
ArmInsEret = ArmInsn
ArmInsEor
  pred ArmInsn
ArmInsVmov = ArmInsn
ArmInsEret
  pred ArmInsn
ArmInsFldmdbx = ArmInsn
ArmInsVmov
  pred ArmInsn
ArmInsFldmiax = ArmInsn
ArmInsFldmdbx
  pred ArmInsn
ArmInsVmrs = ArmInsn
ArmInsFldmiax
  pred ArmInsn
ArmInsFstmdbx = ArmInsn
ArmInsVmrs
  pred ArmInsn
ArmInsFstmiax = ArmInsn
ArmInsFstmdbx
  pred ArmInsn
ArmInsHint = ArmInsn
ArmInsFstmiax
  pred ArmInsn
ArmInsHlt = ArmInsn
ArmInsHint
  pred ArmInsn
ArmInsHvc = ArmInsn
ArmInsHlt
  pred ArmInsn
ArmInsIsb = ArmInsn
ArmInsHvc
  pred ArmInsn
ArmInsLda = ArmInsn
ArmInsIsb
  pred ArmInsn
ArmInsLdab = ArmInsn
ArmInsLda
  pred ArmInsn
ArmInsLdaex = ArmInsn
ArmInsLdab
  pred ArmInsn
ArmInsLdaexb = ArmInsn
ArmInsLdaex
  pred ArmInsn
ArmInsLdaexd = ArmInsn
ArmInsLdaexb
  pred ArmInsn
ArmInsLdaexh = ArmInsn
ArmInsLdaexd
  pred ArmInsn
ArmInsLdah = ArmInsn
ArmInsLdaexh
  pred ArmInsn
ArmInsLdc2l = ArmInsn
ArmInsLdah
  pred ArmInsn
ArmInsLdc2 = ArmInsn
ArmInsLdc2l
  pred ArmInsn
ArmInsLdcl = ArmInsn
ArmInsLdc2
  pred ArmInsn
ArmInsLdc = ArmInsn
ArmInsLdcl
  pred ArmInsn
ArmInsLdmda = ArmInsn
ArmInsLdc
  pred ArmInsn
ArmInsLdmdb = ArmInsn
ArmInsLdmda
  pred ArmInsn
ArmInsLdm = ArmInsn
ArmInsLdmdb
  pred ArmInsn
ArmInsLdmib = ArmInsn
ArmInsLdm
  pred ArmInsn
ArmInsLdrbt = ArmInsn
ArmInsLdmib
  pred ArmInsn
ArmInsLdrb = ArmInsn
ArmInsLdrbt
  pred ArmInsn
ArmInsLdrd = ArmInsn
ArmInsLdrb
  pred ArmInsn
ArmInsLdrex = ArmInsn
ArmInsLdrd
  pred ArmInsn
ArmInsLdrexb = ArmInsn
ArmInsLdrex
  pred ArmInsn
ArmInsLdrexd = ArmInsn
ArmInsLdrexb
  pred ArmInsn
ArmInsLdrexh = ArmInsn
ArmInsLdrexd
  pred ArmInsn
ArmInsLdrh = ArmInsn
ArmInsLdrexh
  pred ArmInsn
ArmInsLdrht = ArmInsn
ArmInsLdrh
  pred ArmInsn
ArmInsLdrsb = ArmInsn
ArmInsLdrht
  pred ArmInsn
ArmInsLdrsbt = ArmInsn
ArmInsLdrsb
  pred ArmInsn
ArmInsLdrsh = ArmInsn
ArmInsLdrsbt
  pred ArmInsn
ArmInsLdrsht = ArmInsn
ArmInsLdrsh
  pred ArmInsn
ArmInsLdrt = ArmInsn
ArmInsLdrsht
  pred ArmInsn
ArmInsLdr = ArmInsn
ArmInsLdrt
  pred ArmInsn
ArmInsMcr = ArmInsn
ArmInsLdr
  pred ArmInsn
ArmInsMcr2 = ArmInsn
ArmInsMcr
  pred ArmInsn
ArmInsMcrr = ArmInsn
ArmInsMcr2
  pred ArmInsn
ArmInsMcrr2 = ArmInsn
ArmInsMcrr
  pred ArmInsn
ArmInsMla = ArmInsn
ArmInsMcrr2
  pred ArmInsn
ArmInsMls = ArmInsn
ArmInsMla
  pred ArmInsn
ArmInsMov = ArmInsn
ArmInsMls
  pred ArmInsn
ArmInsMovt = ArmInsn
ArmInsMov
  pred ArmInsn
ArmInsMovw = ArmInsn
ArmInsMovt
  pred ArmInsn
ArmInsMrc = ArmInsn
ArmInsMovw
  pred ArmInsn
ArmInsMrc2 = ArmInsn
ArmInsMrc
  pred ArmInsn
ArmInsMrrc = ArmInsn
ArmInsMrc2
  pred ArmInsn
ArmInsMrrc2 = ArmInsn
ArmInsMrrc
  pred ArmInsn
ArmInsMrs = ArmInsn
ArmInsMrrc2
  pred ArmInsn
ArmInsMsr = ArmInsn
ArmInsMrs
  pred ArmInsn
ArmInsMul = ArmInsn
ArmInsMsr
  pred ArmInsn
ArmInsMvn = ArmInsn
ArmInsMul
  pred ArmInsn
ArmInsOrr = ArmInsn
ArmInsMvn
  pred ArmInsn
ArmInsPkhbt = ArmInsn
ArmInsOrr
  pred ArmInsn
ArmInsPkhtb = ArmInsn
ArmInsPkhbt
  pred ArmInsn
ArmInsPldw = ArmInsn
ArmInsPkhtb
  pred ArmInsn
ArmInsPld = ArmInsn
ArmInsPldw
  pred ArmInsn
ArmInsPli = ArmInsn
ArmInsPld
  pred ArmInsn
ArmInsQadd = ArmInsn
ArmInsPli
  pred ArmInsn
ArmInsQadd16 = ArmInsn
ArmInsQadd
  pred ArmInsn
ArmInsQadd8 = ArmInsn
ArmInsQadd16
  pred ArmInsn
ArmInsQasx = ArmInsn
ArmInsQadd8
  pred ArmInsn
ArmInsQdadd = ArmInsn
ArmInsQasx
  pred ArmInsn
ArmInsQdsub = ArmInsn
ArmInsQdadd
  pred ArmInsn
ArmInsQsax = ArmInsn
ArmInsQdsub
  pred ArmInsn
ArmInsQsub = ArmInsn
ArmInsQsax
  pred ArmInsn
ArmInsQsub16 = ArmInsn
ArmInsQsub
  pred ArmInsn
ArmInsQsub8 = ArmInsn
ArmInsQsub16
  pred ArmInsn
ArmInsRbit = ArmInsn
ArmInsQsub8
  pred ArmInsn
ArmInsRev = ArmInsn
ArmInsRbit
  pred ArmInsn
ArmInsRev16 = ArmInsn
ArmInsRev
  pred ArmInsn
ArmInsRevsh = ArmInsn
ArmInsRev16
  pred ArmInsn
ArmInsRfeda = ArmInsn
ArmInsRevsh
  pred ArmInsn
ArmInsRfedb = ArmInsn
ArmInsRfeda
  pred ArmInsn
ArmInsRfeia = ArmInsn
ArmInsRfedb
  pred ArmInsn
ArmInsRfeib = ArmInsn
ArmInsRfeia
  pred ArmInsn
ArmInsRsb = ArmInsn
ArmInsRfeib
  pred ArmInsn
ArmInsRsc = ArmInsn
ArmInsRsb
  pred ArmInsn
ArmInsSadd16 = ArmInsn
ArmInsRsc
  pred ArmInsn
ArmInsSadd8 = ArmInsn
ArmInsSadd16
  pred ArmInsn
ArmInsSasx = ArmInsn
ArmInsSadd8
  pred ArmInsn
ArmInsSbc = ArmInsn
ArmInsSasx
  pred ArmInsn
ArmInsSbfx = ArmInsn
ArmInsSbc
  pred ArmInsn
ArmInsSdiv = ArmInsn
ArmInsSbfx
  pred ArmInsn
ArmInsSel = ArmInsn
ArmInsSdiv
  pred ArmInsn
ArmInsSetend = ArmInsn
ArmInsSel
  pred ArmInsn
ArmInsSha1c = ArmInsn
ArmInsSetend
  pred ArmInsn
ArmInsSha1h = ArmInsn
ArmInsSha1c
  pred ArmInsn
ArmInsSha1m = ArmInsn
ArmInsSha1h
  pred ArmInsn
ArmInsSha1p = ArmInsn
ArmInsSha1m
  pred ArmInsn
ArmInsSha1su0 = ArmInsn
ArmInsSha1p
  pred ArmInsn
ArmInsSha1su1 = ArmInsn
ArmInsSha1su0
  pred ArmInsn
ArmInsSha256h = ArmInsn
ArmInsSha1su1
  pred ArmInsn
ArmInsSha256h2 = ArmInsn
ArmInsSha256h
  pred ArmInsn
ArmInsSha256su0 = ArmInsn
ArmInsSha256h2
  pred ArmInsn
ArmInsSha256su1 = ArmInsn
ArmInsSha256su0
  pred ArmInsn
ArmInsShadd16 = ArmInsn
ArmInsSha256su1
  pred ArmInsn
ArmInsShadd8 = ArmInsn
ArmInsShadd16
  pred ArmInsn
ArmInsShasx = ArmInsn
ArmInsShadd8
  pred ArmInsn
ArmInsShsax = ArmInsn
ArmInsShasx
  pred ArmInsn
ArmInsShsub16 = ArmInsn
ArmInsShsax
  pred ArmInsn
ArmInsShsub8 = ArmInsn
ArmInsShsub16
  pred ArmInsn
ArmInsSmc = ArmInsn
ArmInsShsub8
  pred ArmInsn
ArmInsSmlabb = ArmInsn
ArmInsSmc
  pred ArmInsn
ArmInsSmlabt = ArmInsn
ArmInsSmlabb
  pred ArmInsn
ArmInsSmlad = ArmInsn
ArmInsSmlabt
  pred ArmInsn
ArmInsSmladx = ArmInsn
ArmInsSmlad
  pred ArmInsn
ArmInsSmlal = ArmInsn
ArmInsSmladx
  pred ArmInsn
ArmInsSmlalbb = ArmInsn
ArmInsSmlal
  pred ArmInsn
ArmInsSmlalbt = ArmInsn
ArmInsSmlalbb
  pred ArmInsn
ArmInsSmlald = ArmInsn
ArmInsSmlalbt
  pred ArmInsn
ArmInsSmlaldx = ArmInsn
ArmInsSmlald
  pred ArmInsn
ArmInsSmlaltb = ArmInsn
ArmInsSmlaldx
  pred ArmInsn
ArmInsSmlaltt = ArmInsn
ArmInsSmlaltb
  pred ArmInsn
ArmInsSmlatb = ArmInsn
ArmInsSmlaltt
  pred ArmInsn
ArmInsSmlatt = ArmInsn
ArmInsSmlatb
  pred ArmInsn
ArmInsSmlawb = ArmInsn
ArmInsSmlatt
  pred ArmInsn
ArmInsSmlawt = ArmInsn
ArmInsSmlawb
  pred ArmInsn
ArmInsSmlsd = ArmInsn
ArmInsSmlawt
  pred ArmInsn
ArmInsSmlsdx = ArmInsn
ArmInsSmlsd
  pred ArmInsn
ArmInsSmlsld = ArmInsn
ArmInsSmlsdx
  pred ArmInsn
ArmInsSmlsldx = ArmInsn
ArmInsSmlsld
  pred ArmInsn
ArmInsSmmla = ArmInsn
ArmInsSmlsldx
  pred ArmInsn
ArmInsSmmlar = ArmInsn
ArmInsSmmla
  pred ArmInsn
ArmInsSmmls = ArmInsn
ArmInsSmmlar
  pred ArmInsn
ArmInsSmmlsr = ArmInsn
ArmInsSmmls
  pred ArmInsn
ArmInsSmmul = ArmInsn
ArmInsSmmlsr
  pred ArmInsn
ArmInsSmmulr = ArmInsn
ArmInsSmmul
  pred ArmInsn
ArmInsSmuad = ArmInsn
ArmInsSmmulr
  pred ArmInsn
ArmInsSmuadx = ArmInsn
ArmInsSmuad
  pred ArmInsn
ArmInsSmulbb = ArmInsn
ArmInsSmuadx
  pred ArmInsn
ArmInsSmulbt = ArmInsn
ArmInsSmulbb
  pred ArmInsn
ArmInsSmull = ArmInsn
ArmInsSmulbt
  pred ArmInsn
ArmInsSmultb = ArmInsn
ArmInsSmull
  pred ArmInsn
ArmInsSmultt = ArmInsn
ArmInsSmultb
  pred ArmInsn
ArmInsSmulwb = ArmInsn
ArmInsSmultt
  pred ArmInsn
ArmInsSmulwt = ArmInsn
ArmInsSmulwb
  pred ArmInsn
ArmInsSmusd = ArmInsn
ArmInsSmulwt
  pred ArmInsn
ArmInsSmusdx = ArmInsn
ArmInsSmusd
  pred ArmInsn
ArmInsSrsda = ArmInsn
ArmInsSmusdx
  pred ArmInsn
ArmInsSrsdb = ArmInsn
ArmInsSrsda
  pred ArmInsn
ArmInsSrsia = ArmInsn
ArmInsSrsdb
  pred ArmInsn
ArmInsSrsib = ArmInsn
ArmInsSrsia
  pred ArmInsn
ArmInsSsat = ArmInsn
ArmInsSrsib
  pred ArmInsn
ArmInsSsat16 = ArmInsn
ArmInsSsat
  pred ArmInsn
ArmInsSsax = ArmInsn
ArmInsSsat16
  pred ArmInsn
ArmInsSsub16 = ArmInsn
ArmInsSsax
  pred ArmInsn
ArmInsSsub8 = ArmInsn
ArmInsSsub16
  pred ArmInsn
ArmInsStc2l = ArmInsn
ArmInsSsub8
  pred ArmInsn
ArmInsStc2 = ArmInsn
ArmInsStc2l
  pred ArmInsn
ArmInsStcl = ArmInsn
ArmInsStc2
  pred ArmInsn
ArmInsStc = ArmInsn
ArmInsStcl
  pred ArmInsn
ArmInsStl = ArmInsn
ArmInsStc
  pred ArmInsn
ArmInsStlb = ArmInsn
ArmInsStl
  pred ArmInsn
ArmInsStlex = ArmInsn
ArmInsStlb
  pred ArmInsn
ArmInsStlexb = ArmInsn
ArmInsStlex
  pred ArmInsn
ArmInsStlexd = ArmInsn
ArmInsStlexb
  pred ArmInsn
ArmInsStlexh = ArmInsn
ArmInsStlexd
  pred ArmInsn
ArmInsStlh = ArmInsn
ArmInsStlexh
  pred ArmInsn
ArmInsStmda = ArmInsn
ArmInsStlh
  pred ArmInsn
ArmInsStmdb = ArmInsn
ArmInsStmda
  pred ArmInsn
ArmInsStm = ArmInsn
ArmInsStmdb
  pred ArmInsn
ArmInsStmib = ArmInsn
ArmInsStm
  pred ArmInsn
ArmInsStrbt = ArmInsn
ArmInsStmib
  pred ArmInsn
ArmInsStrb = ArmInsn
ArmInsStrbt
  pred ArmInsn
ArmInsStrd = ArmInsn
ArmInsStrb
  pred ArmInsn
ArmInsStrex = ArmInsn
ArmInsStrd
  pred ArmInsn
ArmInsStrexb = ArmInsn
ArmInsStrex
  pred ArmInsn
ArmInsStrexd = ArmInsn
ArmInsStrexb
  pred ArmInsn
ArmInsStrexh = ArmInsn
ArmInsStrexd
  pred ArmInsn
ArmInsStrh = ArmInsn
ArmInsStrexh
  pred ArmInsn
ArmInsStrht = ArmInsn
ArmInsStrh
  pred ArmInsn
ArmInsStrt = ArmInsn
ArmInsStrht
  pred ArmInsn
ArmInsStr = ArmInsn
ArmInsStrt
  pred ArmInsn
ArmInsSub = ArmInsn
ArmInsStr
  pred ArmInsn
ArmInsSvc = ArmInsn
ArmInsSub
  pred ArmInsn
ArmInsSwp = ArmInsn
ArmInsSvc
  pred ArmInsn
ArmInsSwpb = ArmInsn
ArmInsSwp
  pred ArmInsn
ArmInsSxtab = ArmInsn
ArmInsSwpb
  pred ArmInsn
ArmInsSxtab16 = ArmInsn
ArmInsSxtab
  pred ArmInsn
ArmInsSxtah = ArmInsn
ArmInsSxtab16
  pred ArmInsn
ArmInsSxtb = ArmInsn
ArmInsSxtah
  pred ArmInsn
ArmInsSxtb16 = ArmInsn
ArmInsSxtb
  pred ArmInsn
ArmInsSxth = ArmInsn
ArmInsSxtb16
  pred ArmInsn
ArmInsTeq = ArmInsn
ArmInsSxth
  pred ArmInsn
ArmInsTrap = ArmInsn
ArmInsTeq
  pred ArmInsn
ArmInsTst = ArmInsn
ArmInsTrap
  pred ArmInsn
ArmInsUadd16 = ArmInsn
ArmInsTst
  pred ArmInsn
ArmInsUadd8 = ArmInsn
ArmInsUadd16
  pred ArmInsn
ArmInsUasx = ArmInsn
ArmInsUadd8
  pred ArmInsn
ArmInsUbfx = ArmInsn
ArmInsUasx
  pred ArmInsn
ArmInsUdf = ArmInsn
ArmInsUbfx
  pred ArmInsn
ArmInsUdiv = ArmInsn
ArmInsUdf
  pred ArmInsn
ArmInsUhadd16 = ArmInsn
ArmInsUdiv
  pred ArmInsn
ArmInsUhadd8 = ArmInsn
ArmInsUhadd16
  pred ArmInsn
ArmInsUhasx = ArmInsn
ArmInsUhadd8
  pred ArmInsn
ArmInsUhsax = ArmInsn
ArmInsUhasx
  pred ArmInsn
ArmInsUhsub16 = ArmInsn
ArmInsUhsax
  pred ArmInsn
ArmInsUhsub8 = ArmInsn
ArmInsUhsub16
  pred ArmInsn
ArmInsUmaal = ArmInsn
ArmInsUhsub8
  pred ArmInsn
ArmInsUmlal = ArmInsn
ArmInsUmaal
  pred ArmInsn
ArmInsUmull = ArmInsn
ArmInsUmlal
  pred ArmInsn
ArmInsUqadd16 = ArmInsn
ArmInsUmull
  pred ArmInsn
ArmInsUqadd8 = ArmInsn
ArmInsUqadd16
  pred ArmInsn
ArmInsUqasx = ArmInsn
ArmInsUqadd8
  pred ArmInsn
ArmInsUqsax = ArmInsn
ArmInsUqasx
  pred ArmInsn
ArmInsUqsub16 = ArmInsn
ArmInsUqsax
  pred ArmInsn
ArmInsUqsub8 = ArmInsn
ArmInsUqsub16
  pred ArmInsn
ArmInsUsad8 = ArmInsn
ArmInsUqsub8
  pred ArmInsn
ArmInsUsada8 = ArmInsn
ArmInsUsad8
  pred ArmInsn
ArmInsUsat = ArmInsn
ArmInsUsada8
  pred ArmInsn
ArmInsUsat16 = ArmInsn
ArmInsUsat
  pred ArmInsn
ArmInsUsax = ArmInsn
ArmInsUsat16
  pred ArmInsn
ArmInsUsub16 = ArmInsn
ArmInsUsax
  pred ArmInsn
ArmInsUsub8 = ArmInsn
ArmInsUsub16
  pred ArmInsn
ArmInsUxtab = ArmInsn
ArmInsUsub8
  pred ArmInsn
ArmInsUxtab16 = ArmInsn
ArmInsUxtab
  pred ArmInsn
ArmInsUxtah = ArmInsn
ArmInsUxtab16
  pred ArmInsn
ArmInsUxtb = ArmInsn
ArmInsUxtah
  pred ArmInsn
ArmInsUxtb16 = ArmInsn
ArmInsUxtb
  pred ArmInsn
ArmInsUxth = ArmInsn
ArmInsUxtb16
  pred ArmInsn
ArmInsVabal = ArmInsn
ArmInsUxth
  pred ArmInsn
ArmInsVaba = ArmInsn
ArmInsVabal
  pred ArmInsn
ArmInsVabdl = ArmInsn
ArmInsVaba
  pred ArmInsn
ArmInsVabd = ArmInsn
ArmInsVabdl
  pred ArmInsn
ArmInsVabs = ArmInsn
ArmInsVabd
  pred ArmInsn
ArmInsVacge = ArmInsn
ArmInsVabs
  pred ArmInsn
ArmInsVacgt = ArmInsn
ArmInsVacge
  pred ArmInsn
ArmInsVadd = ArmInsn
ArmInsVacgt
  pred ArmInsn
ArmInsVaddhn = ArmInsn
ArmInsVadd
  pred ArmInsn
ArmInsVaddl = ArmInsn
ArmInsVaddhn
  pred ArmInsn
ArmInsVaddw = ArmInsn
ArmInsVaddl
  pred ArmInsn
ArmInsVand = ArmInsn
ArmInsVaddw
  pred ArmInsn
ArmInsVbic = ArmInsn
ArmInsVand
  pred ArmInsn
ArmInsVbif = ArmInsn
ArmInsVbic
  pred ArmInsn
ArmInsVbit = ArmInsn
ArmInsVbif
  pred ArmInsn
ArmInsVbsl = ArmInsn
ArmInsVbit
  pred ArmInsn
ArmInsVceq = ArmInsn
ArmInsVbsl
  pred ArmInsn
ArmInsVcge = ArmInsn
ArmInsVceq
  pred ArmInsn
ArmInsVcgt = ArmInsn
ArmInsVcge
  pred ArmInsn
ArmInsVcle = ArmInsn
ArmInsVcgt
  pred ArmInsn
ArmInsVcls = ArmInsn
ArmInsVcle
  pred ArmInsn
ArmInsVclt = ArmInsn
ArmInsVcls
  pred ArmInsn
ArmInsVclz = ArmInsn
ArmInsVclt
  pred ArmInsn
ArmInsVcmp = ArmInsn
ArmInsVclz
  pred ArmInsn
ArmInsVcmpe = ArmInsn
ArmInsVcmp
  pred ArmInsn
ArmInsVcnt = ArmInsn
ArmInsVcmpe
  pred ArmInsn
ArmInsVcvta = ArmInsn
ArmInsVcnt
  pred ArmInsn
ArmInsVcvtb = ArmInsn
ArmInsVcvta
  pred ArmInsn
ArmInsVcvt = ArmInsn
ArmInsVcvtb
  pred ArmInsn
ArmInsVcvtm = ArmInsn
ArmInsVcvt
  pred ArmInsn
ArmInsVcvtn = ArmInsn
ArmInsVcvtm
  pred ArmInsn
ArmInsVcvtp = ArmInsn
ArmInsVcvtn
  pred ArmInsn
ArmInsVcvtt = ArmInsn
ArmInsVcvtp
  pred ArmInsn
ArmInsVdiv = ArmInsn
ArmInsVcvtt
  pred ArmInsn
ArmInsVdup = ArmInsn
ArmInsVdiv
  pred ArmInsn
ArmInsVeor = ArmInsn
ArmInsVdup
  pred ArmInsn
ArmInsVext = ArmInsn
ArmInsVeor
  pred ArmInsn
ArmInsVfma = ArmInsn
ArmInsVext
  pred ArmInsn
ArmInsVfms = ArmInsn
ArmInsVfma
  pred ArmInsn
ArmInsVfnma = ArmInsn
ArmInsVfms
  pred ArmInsn
ArmInsVfnms = ArmInsn
ArmInsVfnma
  pred ArmInsn
ArmInsVhadd = ArmInsn
ArmInsVfnms
  pred ArmInsn
ArmInsVhsub = ArmInsn
ArmInsVhadd
  pred ArmInsn
ArmInsVld1 = ArmInsn
ArmInsVhsub
  pred ArmInsn
ArmInsVld2 = ArmInsn
ArmInsVld1
  pred ArmInsn
ArmInsVld3 = ArmInsn
ArmInsVld2
  pred ArmInsn
ArmInsVld4 = ArmInsn
ArmInsVld3
  pred ArmInsn
ArmInsVldmdb = ArmInsn
ArmInsVld4
  pred ArmInsn
ArmInsVldmia = ArmInsn
ArmInsVldmdb
  pred ArmInsn
ArmInsVldr = ArmInsn
ArmInsVldmia
  pred ArmInsn
ArmInsVmaxnm = ArmInsn
ArmInsVldr
  pred ArmInsn
ArmInsVmax = ArmInsn
ArmInsVmaxnm
  pred ArmInsn
ArmInsVminnm = ArmInsn
ArmInsVmax
  pred ArmInsn
ArmInsVmin = ArmInsn
ArmInsVminnm
  pred ArmInsn
ArmInsVmla = ArmInsn
ArmInsVmin
  pred ArmInsn
ArmInsVmlal = ArmInsn
ArmInsVmla
  pred ArmInsn
ArmInsVmls = ArmInsn
ArmInsVmlal
  pred ArmInsn
ArmInsVmlsl = ArmInsn
ArmInsVmls
  pred ArmInsn
ArmInsVmovl = ArmInsn
ArmInsVmlsl
  pred ArmInsn
ArmInsVmovn = ArmInsn
ArmInsVmovl
  pred ArmInsn
ArmInsVmsr = ArmInsn
ArmInsVmovn
  pred ArmInsn
ArmInsVmul = ArmInsn
ArmInsVmsr
  pred ArmInsn
ArmInsVmull = ArmInsn
ArmInsVmul
  pred ArmInsn
ArmInsVmvn = ArmInsn
ArmInsVmull
  pred ArmInsn
ArmInsVneg = ArmInsn
ArmInsVmvn
  pred ArmInsn
ArmInsVnmla = ArmInsn
ArmInsVneg
  pred ArmInsn
ArmInsVnmls = ArmInsn
ArmInsVnmla
  pred ArmInsn
ArmInsVnmul = ArmInsn
ArmInsVnmls
  pred ArmInsn
ArmInsVorn = ArmInsn
ArmInsVnmul
  pred ArmInsn
ArmInsVorr = ArmInsn
ArmInsVorn
  pred ArmInsn
ArmInsVpadal = ArmInsn
ArmInsVorr
  pred ArmInsn
ArmInsVpaddl = ArmInsn
ArmInsVpadal
  pred ArmInsn
ArmInsVpadd = ArmInsn
ArmInsVpaddl
  pred ArmInsn
ArmInsVpmax = ArmInsn
ArmInsVpadd
  pred ArmInsn
ArmInsVpmin = ArmInsn
ArmInsVpmax
  pred ArmInsn
ArmInsVqabs = ArmInsn
ArmInsVpmin
  pred ArmInsn
ArmInsVqadd = ArmInsn
ArmInsVqabs
  pred ArmInsn
ArmInsVqdmlal = ArmInsn
ArmInsVqadd
  pred ArmInsn
ArmInsVqdmlsl = ArmInsn
ArmInsVqdmlal
  pred ArmInsn
ArmInsVqdmulh = ArmInsn
ArmInsVqdmlsl
  pred ArmInsn
ArmInsVqdmull = ArmInsn
ArmInsVqdmulh
  pred ArmInsn
ArmInsVqmovun = ArmInsn
ArmInsVqdmull
  pred ArmInsn
ArmInsVqmovn = ArmInsn
ArmInsVqmovun
  pred ArmInsn
ArmInsVqneg = ArmInsn
ArmInsVqmovn
  pred ArmInsn
ArmInsVqrdmulh = ArmInsn
ArmInsVqneg
  pred ArmInsn
ArmInsVqrshl = ArmInsn
ArmInsVqrdmulh
  pred ArmInsn
ArmInsVqrshrn = ArmInsn
ArmInsVqrshl
  pred ArmInsn
ArmInsVqrshrun = ArmInsn
ArmInsVqrshrn
  pred ArmInsn
ArmInsVqshl = ArmInsn
ArmInsVqrshrun
  pred ArmInsn
ArmInsVqshlu = ArmInsn
ArmInsVqshl
  pred ArmInsn
ArmInsVqshrn = ArmInsn
ArmInsVqshlu
  pred ArmInsn
ArmInsVqshrun = ArmInsn
ArmInsVqshrn
  pred ArmInsn
ArmInsVqsub = ArmInsn
ArmInsVqshrun
  pred ArmInsn
ArmInsVraddhn = ArmInsn
ArmInsVqsub
  pred ArmInsn
ArmInsVrecpe = ArmInsn
ArmInsVraddhn
  pred ArmInsn
ArmInsVrecps = ArmInsn
ArmInsVrecpe
  pred ArmInsn
ArmInsVrev16 = ArmInsn
ArmInsVrecps
  pred ArmInsn
ArmInsVrev32 = ArmInsn
ArmInsVrev16
  pred ArmInsn
ArmInsVrev64 = ArmInsn
ArmInsVrev32
  pred ArmInsn
ArmInsVrhadd = ArmInsn
ArmInsVrev64
  pred ArmInsn
ArmInsVrinta = ArmInsn
ArmInsVrhadd
  pred ArmInsn
ArmInsVrintm = ArmInsn
ArmInsVrinta
  pred ArmInsn
ArmInsVrintn = ArmInsn
ArmInsVrintm
  pred ArmInsn
ArmInsVrintp = ArmInsn
ArmInsVrintn
  pred ArmInsn
ArmInsVrintr = ArmInsn
ArmInsVrintp
  pred ArmInsn
ArmInsVrintx = ArmInsn
ArmInsVrintr
  pred ArmInsn
ArmInsVrintz = ArmInsn
ArmInsVrintx
  pred ArmInsn
ArmInsVrshl = ArmInsn
ArmInsVrintz
  pred ArmInsn
ArmInsVrshrn = ArmInsn
ArmInsVrshl
  pred ArmInsn
ArmInsVrshr = ArmInsn
ArmInsVrshrn
  pred ArmInsn
ArmInsVrsqrte = ArmInsn
ArmInsVrshr
  pred ArmInsn
ArmInsVrsqrts = ArmInsn
ArmInsVrsqrte
  pred ArmInsn
ArmInsVrsra = ArmInsn
ArmInsVrsqrts
  pred ArmInsn
ArmInsVrsubhn = ArmInsn
ArmInsVrsra
  pred ArmInsn
ArmInsVseleq = ArmInsn
ArmInsVrsubhn
  pred ArmInsn
ArmInsVselge = ArmInsn
ArmInsVseleq
  pred ArmInsn
ArmInsVselgt = ArmInsn
ArmInsVselge
  pred ArmInsn
ArmInsVselvs = ArmInsn
ArmInsVselgt
  pred ArmInsn
ArmInsVshll = ArmInsn
ArmInsVselvs
  pred ArmInsn
ArmInsVshl = ArmInsn
ArmInsVshll
  pred ArmInsn
ArmInsVshrn = ArmInsn
ArmInsVshl
  pred ArmInsn
ArmInsVshr = ArmInsn
ArmInsVshrn
  pred ArmInsn
ArmInsVsli = ArmInsn
ArmInsVshr
  pred ArmInsn
ArmInsVsqrt = ArmInsn
ArmInsVsli
  pred ArmInsn
ArmInsVsra = ArmInsn
ArmInsVsqrt
  pred ArmInsn
ArmInsVsri = ArmInsn
ArmInsVsra
  pred ArmInsn
ArmInsVst1 = ArmInsn
ArmInsVsri
  pred ArmInsn
ArmInsVst2 = ArmInsn
ArmInsVst1
  pred ArmInsn
ArmInsVst3 = ArmInsn
ArmInsVst2
  pred ArmInsn
ArmInsVst4 = ArmInsn
ArmInsVst3
  pred ArmInsn
ArmInsVstmdb = ArmInsn
ArmInsVst4
  pred ArmInsn
ArmInsVstmia = ArmInsn
ArmInsVstmdb
  pred ArmInsn
ArmInsVstr = ArmInsn
ArmInsVstmia
  pred ArmInsn
ArmInsVsub = ArmInsn
ArmInsVstr
  pred ArmInsn
ArmInsVsubhn = ArmInsn
ArmInsVsub
  pred ArmInsn
ArmInsVsubl = ArmInsn
ArmInsVsubhn
  pred ArmInsn
ArmInsVsubw = ArmInsn
ArmInsVsubl
  pred ArmInsn
ArmInsVswp = ArmInsn
ArmInsVsubw
  pred ArmInsn
ArmInsVtbl = ArmInsn
ArmInsVswp
  pred ArmInsn
ArmInsVtbx = ArmInsn
ArmInsVtbl
  pred ArmInsn
ArmInsVcvtr = ArmInsn
ArmInsVtbx
  pred ArmInsn
ArmInsVtrn = ArmInsn
ArmInsVcvtr
  pred ArmInsn
ArmInsVtst = ArmInsn
ArmInsVtrn
  pred ArmInsn
ArmInsVuzp = ArmInsn
ArmInsVtst
  pred ArmInsn
ArmInsVzip = ArmInsn
ArmInsVuzp
  pred ArmInsn
ArmInsAddw = ArmInsn
ArmInsVzip
  pred ArmInsn
ArmInsAsr = ArmInsn
ArmInsAddw
  pred ArmInsn
ArmInsDcps1 = ArmInsn
ArmInsAsr
  pred ArmInsn
ArmInsDcps2 = ArmInsn
ArmInsDcps1
  pred ArmInsn
ArmInsDcps3 = ArmInsn
ArmInsDcps2
  pred ArmInsn
ArmInsIt = ArmInsn
ArmInsDcps3
  pred ArmInsn
ArmInsLsl = ArmInsn
ArmInsIt
  pred ArmInsn
ArmInsLsr = ArmInsn
ArmInsLsl
  pred ArmInsn
ArmInsOrn = ArmInsn
ArmInsLsr
  pred ArmInsn
ArmInsRor = ArmInsn
ArmInsOrn
  pred ArmInsn
ArmInsRrx = ArmInsn
ArmInsRor
  pred ArmInsn
ArmInsSubw = ArmInsn
ArmInsRrx
  pred ArmInsn
ArmInsTbb = ArmInsn
ArmInsSubw
  pred ArmInsn
ArmInsTbh = ArmInsn
ArmInsTbb
  pred ArmInsn
ArmInsCbnz = ArmInsn
ArmInsTbh
  pred ArmInsn
ArmInsCbz = ArmInsn
ArmInsCbnz
  pred ArmInsn
ArmInsPop = ArmInsn
ArmInsCbz
  pred ArmInsn
ArmInsPush = ArmInsn
ArmInsPop
  pred ArmInsn
ArmInsNop = ArmInsn
ArmInsPush
  pred ArmInsn
ArmInsYield = ArmInsn
ArmInsNop
  pred ArmInsn
ArmInsWfe = ArmInsn
ArmInsYield
  pred ArmInsn
ArmInsWfi = ArmInsn
ArmInsWfe
  pred ArmInsn
ArmInsSev = ArmInsn
ArmInsWfi
  pred ArmInsn
ArmInsSevl = ArmInsn
ArmInsSev
  pred ArmInsn
ArmInsVpush = ArmInsn
ArmInsSevl
  pred ArmInsn
ArmInsVpop = ArmInsn
ArmInsVpush
  pred ArmInsn
ArmInsEnding = ArmInsn
ArmInsVpop
  pred ArmInsn
ArmInsInvalid = String -> ArmInsn
forall a. HasCallStack => String -> a
error String
"ArmInsn.pred: ArmInsInvalid has no predecessor"

  enumFromTo :: ArmInsn -> ArmInsn -> [ArmInsn]
enumFromTo ArmInsn
from ArmInsn
to = ArmInsn -> [ArmInsn]
forall t. Enum t => t -> [t]
go ArmInsn
from
    where
      end :: Int
end = ArmInsn -> Int
forall a. Enum a => a -> Int
fromEnum ArmInsn
to
      go :: t -> [t]
go t
v = case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare (t -> Int
forall a. Enum a => a -> Int
fromEnum t
v) Int
end of
                 Ordering
LT -> t
v t -> [t] -> [t]
forall a. a -> [a] -> [a]
: t -> [t]
go (t -> t
forall a. Enum a => a -> a
succ t
v)
                 Ordering
EQ -> [t
v]
                 Ordering
GT -> []

  enumFrom :: ArmInsn -> [ArmInsn]
enumFrom ArmInsn
from = ArmInsn -> ArmInsn -> [ArmInsn]
forall a. Enum a => a -> a -> [a]
enumFromTo ArmInsn
from ArmInsn
ArmInsEnding

  fromEnum :: ArmInsn -> Int
fromEnum ArmInsn
ArmInsInvalid = Int
0
  fromEnum ArmInsn
ArmInsAdc = Int
1
  fromEnum ArmInsn
ArmInsAdd = Int
2
  fromEnum ArmInsn
ArmInsAdr = Int
3
  fromEnum ArmInsn
ArmInsAesd = Int
4
  fromEnum ArmInsn
ArmInsAese = Int
5
  fromEnum ArmInsn
ArmInsAesimc = Int
6
  fromEnum ArmInsn
ArmInsAesmc = Int
7
  fromEnum ArmInsn
ArmInsAnd = Int
8
  fromEnum ArmInsn
ArmInsBfc = Int
9
  fromEnum ArmInsn
ArmInsBfi = Int
10
  fromEnum ArmInsn
ArmInsBic = Int
11
  fromEnum ArmInsn
ArmInsBkpt = Int
12
  fromEnum ArmInsn
ArmInsBl = Int
13
  fromEnum ArmInsn
ArmInsBlx = Int
14
  fromEnum ArmInsn
ArmInsBx = Int
15
  fromEnum ArmInsn
ArmInsBxj = Int
16
  fromEnum ArmInsn
ArmInsB = Int
17
  fromEnum ArmInsn
ArmInsCdp = Int
18
  fromEnum ArmInsn
ArmInsCdp2 = Int
19
  fromEnum ArmInsn
ArmInsClrex = Int
20
  fromEnum ArmInsn
ArmInsClz = Int
21
  fromEnum ArmInsn
ArmInsCmn = Int
22
  fromEnum ArmInsn
ArmInsCmp = Int
23
  fromEnum ArmInsn
ArmInsCps = Int
24
  fromEnum ArmInsn
ArmInsCrc32b = Int
25
  fromEnum ArmInsn
ArmInsCrc32cb = Int
26
  fromEnum ArmInsn
ArmInsCrc32ch = Int
27
  fromEnum ArmInsn
ArmInsCrc32cw = Int
28
  fromEnum ArmInsn
ArmInsCrc32h = Int
29
  fromEnum ArmInsn
ArmInsCrc32w = Int
30
  fromEnum ArmInsn
ArmInsDbg = Int
31
  fromEnum ArmInsn
ArmInsDmb = Int
32
  fromEnum ArmInsn
ArmInsDsb = Int
33
  fromEnum ArmInsn
ArmInsEor = Int
34
  fromEnum ArmInsn
ArmInsEret = Int
35
  fromEnum ArmInsn
ArmInsVmov = Int
36
  fromEnum ArmInsn
ArmInsFldmdbx = Int
37
  fromEnum ArmInsn
ArmInsFldmiax = Int
38
  fromEnum ArmInsn
ArmInsVmrs = Int
39
  fromEnum ArmInsn
ArmInsFstmdbx = Int
40
  fromEnum ArmInsn
ArmInsFstmiax = Int
41
  fromEnum ArmInsn
ArmInsHint = Int
42
  fromEnum ArmInsn
ArmInsHlt = Int
43
  fromEnum ArmInsn
ArmInsHvc = Int
44
  fromEnum ArmInsn
ArmInsIsb = Int
45
  fromEnum ArmInsn
ArmInsLda = Int
46
  fromEnum ArmInsn
ArmInsLdab = Int
47
  fromEnum ArmInsn
ArmInsLdaex = Int
48
  fromEnum ArmInsn
ArmInsLdaexb = Int
49
  fromEnum ArmInsn
ArmInsLdaexd = Int
50
  fromEnum ArmInsn
ArmInsLdaexh = Int
51
  fromEnum ArmInsn
ArmInsLdah = Int
52
  fromEnum ArmInsn
ArmInsLdc2l = Int
53
  fromEnum ArmInsn
ArmInsLdc2 = Int
54
  fromEnum ArmInsn
ArmInsLdcl = Int
55
  fromEnum ArmInsn
ArmInsLdc = Int
56
  fromEnum ArmInsn
ArmInsLdmda = Int
57
  fromEnum ArmInsn
ArmInsLdmdb = Int
58
  fromEnum ArmInsn
ArmInsLdm = Int
59
  fromEnum ArmInsn
ArmInsLdmib = Int
60
  fromEnum ArmInsn
ArmInsLdrbt = Int
61
  fromEnum ArmInsn
ArmInsLdrb = Int
62
  fromEnum ArmInsn
ArmInsLdrd = Int
63
  fromEnum ArmInsn
ArmInsLdrex = Int
64
  fromEnum ArmInsn
ArmInsLdrexb = Int
65
  fromEnum ArmInsn
ArmInsLdrexd = Int
66
  fromEnum ArmInsn
ArmInsLdrexh = Int
67
  fromEnum ArmInsn
ArmInsLdrh = Int
68
  fromEnum ArmInsn
ArmInsLdrht = Int
69
  fromEnum ArmInsn
ArmInsLdrsb = Int
70
  fromEnum ArmInsn
ArmInsLdrsbt = Int
71
  fromEnum ArmInsn
ArmInsLdrsh = Int
72
  fromEnum ArmInsn
ArmInsLdrsht = Int
73
  fromEnum ArmInsn
ArmInsLdrt = Int
74
  fromEnum ArmInsn
ArmInsLdr = Int
75
  fromEnum ArmInsn
ArmInsMcr = Int
76
  fromEnum ArmInsn
ArmInsMcr2 = Int
77
  fromEnum ArmInsn
ArmInsMcrr = Int
78
  fromEnum ArmInsn
ArmInsMcrr2 = Int
79
  fromEnum ArmInsn
ArmInsMla = Int
80
  fromEnum ArmInsn
ArmInsMls = Int
81
  fromEnum ArmInsn
ArmInsMov = Int
82
  fromEnum ArmInsn
ArmInsMovt = Int
83
  fromEnum ArmInsn
ArmInsMovw = Int
84
  fromEnum ArmInsn
ArmInsMrc = Int
85
  fromEnum ArmInsn
ArmInsMrc2 = Int
86
  fromEnum ArmInsn
ArmInsMrrc = Int
87
  fromEnum ArmInsn
ArmInsMrrc2 = Int
88
  fromEnum ArmInsn
ArmInsMrs = Int
89
  fromEnum ArmInsn
ArmInsMsr = Int
90
  fromEnum ArmInsn
ArmInsMul = Int
91
  fromEnum ArmInsn
ArmInsMvn = Int
92
  fromEnum ArmInsn
ArmInsOrr = Int
93
  fromEnum ArmInsn
ArmInsPkhbt = Int
94
  fromEnum ArmInsn
ArmInsPkhtb = Int
95
  fromEnum ArmInsn
ArmInsPldw = Int
96
  fromEnum ArmInsn
ArmInsPld = Int
97
  fromEnum ArmInsn
ArmInsPli = Int
98
  fromEnum ArmInsn
ArmInsQadd = Int
99
  fromEnum ArmInsn
ArmInsQadd16 = Int
100
  fromEnum ArmInsn
ArmInsQadd8 = Int
101
  fromEnum ArmInsn
ArmInsQasx = Int
102
  fromEnum ArmInsn
ArmInsQdadd = Int
103
  fromEnum ArmInsn
ArmInsQdsub = Int
104
  fromEnum ArmInsn
ArmInsQsax = Int
105
  fromEnum ArmInsn
ArmInsQsub = Int
106
  fromEnum ArmInsn
ArmInsQsub16 = Int
107
  fromEnum ArmInsn
ArmInsQsub8 = Int
108
  fromEnum ArmInsn
ArmInsRbit = Int
109
  fromEnum ArmInsn
ArmInsRev = Int
110
  fromEnum ArmInsn
ArmInsRev16 = Int
111
  fromEnum ArmInsn
ArmInsRevsh = Int
112
  fromEnum ArmInsn
ArmInsRfeda = Int
113
  fromEnum ArmInsn
ArmInsRfedb = Int
114
  fromEnum ArmInsn
ArmInsRfeia = Int
115
  fromEnum ArmInsn
ArmInsRfeib = Int
116
  fromEnum ArmInsn
ArmInsRsb = Int
117
  fromEnum ArmInsn
ArmInsRsc = Int
118
  fromEnum ArmInsn
ArmInsSadd16 = Int
119
  fromEnum ArmInsn
ArmInsSadd8 = Int
120
  fromEnum ArmInsn
ArmInsSasx = Int
121
  fromEnum ArmInsn
ArmInsSbc = Int
122
  fromEnum ArmInsn
ArmInsSbfx = Int
123
  fromEnum ArmInsn
ArmInsSdiv = Int
124
  fromEnum ArmInsn
ArmInsSel = Int
125
  fromEnum ArmInsn
ArmInsSetend = Int
126
  fromEnum ArmInsn
ArmInsSha1c = Int
127
  fromEnum ArmInsn
ArmInsSha1h = Int
128
  fromEnum ArmInsn
ArmInsSha1m = Int
129
  fromEnum ArmInsn
ArmInsSha1p = Int
130
  fromEnum ArmInsn
ArmInsSha1su0 = Int
131
  fromEnum ArmInsn
ArmInsSha1su1 = Int
132
  fromEnum ArmInsn
ArmInsSha256h = Int
133
  fromEnum ArmInsn
ArmInsSha256h2 = Int
134
  fromEnum ArmInsn
ArmInsSha256su0 = Int
135
  fromEnum ArmInsn
ArmInsSha256su1 = Int
136
  fromEnum ArmInsn
ArmInsShadd16 = Int
137
  fromEnum ArmInsn
ArmInsShadd8 = Int
138
  fromEnum ArmInsn
ArmInsShasx = Int
139
  fromEnum ArmInsn
ArmInsShsax = Int
140
  fromEnum ArmInsn
ArmInsShsub16 = Int
141
  fromEnum ArmInsn
ArmInsShsub8 = Int
142
  fromEnum ArmInsn
ArmInsSmc = Int
143
  fromEnum ArmInsn
ArmInsSmlabb = Int
144
  fromEnum ArmInsn
ArmInsSmlabt = Int
145
  fromEnum ArmInsn
ArmInsSmlad = Int
146
  fromEnum ArmInsn
ArmInsSmladx = Int
147
  fromEnum ArmInsn
ArmInsSmlal = Int
148
  fromEnum ArmInsn
ArmInsSmlalbb = Int
149
  fromEnum ArmInsn
ArmInsSmlalbt = Int
150
  fromEnum ArmInsn
ArmInsSmlald = Int
151
  fromEnum ArmInsn
ArmInsSmlaldx = Int
152
  fromEnum ArmInsn
ArmInsSmlaltb = Int
153
  fromEnum ArmInsn
ArmInsSmlaltt = Int
154
  fromEnum ArmInsn
ArmInsSmlatb = Int
155
  fromEnum ArmInsn
ArmInsSmlatt = Int
156
  fromEnum ArmInsn
ArmInsSmlawb = Int
157
  fromEnum ArmInsn
ArmInsSmlawt = Int
158
  fromEnum ArmInsn
ArmInsSmlsd = Int
159
  fromEnum ArmInsn
ArmInsSmlsdx = Int
160
  fromEnum ArmInsn
ArmInsSmlsld = Int
161
  fromEnum ArmInsn
ArmInsSmlsldx = Int
162
  fromEnum ArmInsn
ArmInsSmmla = Int
163
  fromEnum ArmInsn
ArmInsSmmlar = Int
164
  fromEnum ArmInsn
ArmInsSmmls = Int
165
  fromEnum ArmInsn
ArmInsSmmlsr = Int
166
  fromEnum ArmInsn
ArmInsSmmul = Int
167
  fromEnum ArmInsn
ArmInsSmmulr = Int
168
  fromEnum ArmInsn
ArmInsSmuad = Int
169
  fromEnum ArmInsn
ArmInsSmuadx = Int
170
  fromEnum ArmInsn
ArmInsSmulbb = Int
171
  fromEnum ArmInsn
ArmInsSmulbt = Int
172
  fromEnum ArmInsn
ArmInsSmull = Int
173
  fromEnum ArmInsn
ArmInsSmultb = Int
174
  fromEnum ArmInsn
ArmInsSmultt = Int
175
  fromEnum ArmInsn
ArmInsSmulwb = Int
176
  fromEnum ArmInsn
ArmInsSmulwt = Int
177
  fromEnum ArmInsn
ArmInsSmusd = Int
178
  fromEnum ArmInsn
ArmInsSmusdx = Int
179
  fromEnum ArmInsn
ArmInsSrsda = Int
180
  fromEnum ArmInsn
ArmInsSrsdb = Int
181
  fromEnum ArmInsn
ArmInsSrsia = Int
182
  fromEnum ArmInsn
ArmInsSrsib = Int
183
  fromEnum ArmInsn
ArmInsSsat = Int
184
  fromEnum ArmInsn
ArmInsSsat16 = Int
185
  fromEnum ArmInsn
ArmInsSsax = Int
186
  fromEnum ArmInsn
ArmInsSsub16 = Int
187
  fromEnum ArmInsn
ArmInsSsub8 = Int
188
  fromEnum ArmInsn
ArmInsStc2l = Int
189
  fromEnum ArmInsn
ArmInsStc2 = Int
190
  fromEnum ArmInsn
ArmInsStcl = Int
191
  fromEnum ArmInsn
ArmInsStc = Int
192
  fromEnum ArmInsn
ArmInsStl = Int
193
  fromEnum ArmInsn
ArmInsStlb = Int
194
  fromEnum ArmInsn
ArmInsStlex = Int
195
  fromEnum ArmInsn
ArmInsStlexb = Int
196
  fromEnum ArmInsn
ArmInsStlexd = Int
197
  fromEnum ArmInsn
ArmInsStlexh = Int
198
  fromEnum ArmInsn
ArmInsStlh = Int
199
  fromEnum ArmInsn
ArmInsStmda = Int
200
  fromEnum ArmInsn
ArmInsStmdb = Int
201
  fromEnum ArmInsn
ArmInsStm = Int
202
  fromEnum ArmInsn
ArmInsStmib = Int
203
  fromEnum ArmInsn
ArmInsStrbt = Int
204
  fromEnum ArmInsn
ArmInsStrb = Int
205
  fromEnum ArmInsn
ArmInsStrd = Int
206
  fromEnum ArmInsn
ArmInsStrex = Int
207
  fromEnum ArmInsn
ArmInsStrexb = Int
208
  fromEnum ArmInsn
ArmInsStrexd = Int
209
  fromEnum ArmInsn
ArmInsStrexh = Int
210
  fromEnum ArmInsn
ArmInsStrh = Int
211
  fromEnum ArmInsn
ArmInsStrht = Int
212
  fromEnum ArmInsn
ArmInsStrt = Int
213
  fromEnum ArmInsn
ArmInsStr = Int
214
  fromEnum ArmInsn
ArmInsSub = Int
215
  fromEnum ArmInsn
ArmInsSvc = Int
216
  fromEnum ArmInsn
ArmInsSwp = Int
217
  fromEnum ArmInsn
ArmInsSwpb = Int
218
  fromEnum ArmInsn
ArmInsSxtab = Int
219
  fromEnum ArmInsn
ArmInsSxtab16 = Int
220
  fromEnum ArmInsn
ArmInsSxtah = Int
221
  fromEnum ArmInsn
ArmInsSxtb = Int
222
  fromEnum ArmInsn
ArmInsSxtb16 = Int
223
  fromEnum ArmInsn
ArmInsSxth = Int
224
  fromEnum ArmInsn
ArmInsTeq = Int
225
  fromEnum ArmInsn
ArmInsTrap = Int
226
  fromEnum ArmInsn
ArmInsTst = Int
227
  fromEnum ArmInsn
ArmInsUadd16 = Int
228
  fromEnum ArmInsn
ArmInsUadd8 = Int
229
  fromEnum ArmInsn
ArmInsUasx = Int
230
  fromEnum ArmInsn
ArmInsUbfx = Int
231
  fromEnum ArmInsn
ArmInsUdf = Int
232
  fromEnum ArmInsn
ArmInsUdiv = Int
233
  fromEnum ArmInsn
ArmInsUhadd16 = Int
234
  fromEnum ArmInsn
ArmInsUhadd8 = Int
235
  fromEnum ArmInsn
ArmInsUhasx = Int
236
  fromEnum ArmInsn
ArmInsUhsax = Int
237
  fromEnum ArmInsn
ArmInsUhsub16 = Int
238
  fromEnum ArmInsn
ArmInsUhsub8 = Int
239
  fromEnum ArmInsn
ArmInsUmaal = Int
240
  fromEnum ArmInsn
ArmInsUmlal = Int
241
  fromEnum ArmInsn
ArmInsUmull = Int
242
  fromEnum ArmInsn
ArmInsUqadd16 = Int
243
  fromEnum ArmInsn
ArmInsUqadd8 = Int
244
  fromEnum ArmInsn
ArmInsUqasx = Int
245
  fromEnum ArmInsn
ArmInsUqsax = Int
246
  fromEnum ArmInsn
ArmInsUqsub16 = Int
247
  fromEnum ArmInsn
ArmInsUqsub8 = Int
248
  fromEnum ArmInsn
ArmInsUsad8 = Int
249
  fromEnum ArmInsn
ArmInsUsada8 = Int
250
  fromEnum ArmInsn
ArmInsUsat = Int
251
  fromEnum ArmInsn
ArmInsUsat16 = Int
252
  fromEnum ArmInsn
ArmInsUsax = Int
253
  fromEnum ArmInsn
ArmInsUsub16 = Int
254
  fromEnum ArmInsn
ArmInsUsub8 = Int
255
  fromEnum ArmInsn
ArmInsUxtab = Int
256
  fromEnum ArmInsn
ArmInsUxtab16 = Int
257
  fromEnum ArmInsn
ArmInsUxtah = Int
258
  fromEnum ArmInsn
ArmInsUxtb = Int
259
  fromEnum ArmInsn
ArmInsUxtb16 = Int
260
  fromEnum ArmInsn
ArmInsUxth = Int
261
  fromEnum ArmInsn
ArmInsVabal = Int
262
  fromEnum ArmInsn
ArmInsVaba = Int
263
  fromEnum ArmInsn
ArmInsVabdl = Int
264
  fromEnum ArmInsn
ArmInsVabd = Int
265
  fromEnum ArmInsn
ArmInsVabs = Int
266
  fromEnum ArmInsn
ArmInsVacge = Int
267
  fromEnum ArmInsn
ArmInsVacgt = Int
268
  fromEnum ArmInsn
ArmInsVadd = Int
269
  fromEnum ArmInsn
ArmInsVaddhn = Int
270
  fromEnum ArmInsn
ArmInsVaddl = Int
271
  fromEnum ArmInsn
ArmInsVaddw = Int
272
  fromEnum ArmInsn
ArmInsVand = Int
273
  fromEnum ArmInsn
ArmInsVbic = Int
274
  fromEnum ArmInsn
ArmInsVbif = Int
275
  fromEnum ArmInsn
ArmInsVbit = Int
276
  fromEnum ArmInsn
ArmInsVbsl = Int
277
  fromEnum ArmInsn
ArmInsVceq = Int
278
  fromEnum ArmInsn
ArmInsVcge = Int
279
  fromEnum ArmInsn
ArmInsVcgt = Int
280
  fromEnum ArmInsn
ArmInsVcle = Int
281
  fromEnum ArmInsn
ArmInsVcls = Int
282
  fromEnum ArmInsn
ArmInsVclt = Int
283
  fromEnum ArmInsn
ArmInsVclz = Int
284
  fromEnum ArmInsn
ArmInsVcmp = Int
285
  fromEnum ArmInsn
ArmInsVcmpe = Int
286
  fromEnum ArmInsn
ArmInsVcnt = Int
287
  fromEnum ArmInsn
ArmInsVcvta = Int
288
  fromEnum ArmInsn
ArmInsVcvtb = Int
289
  fromEnum ArmInsn
ArmInsVcvt = Int
290
  fromEnum ArmInsn
ArmInsVcvtm = Int
291
  fromEnum ArmInsn
ArmInsVcvtn = Int
292
  fromEnum ArmInsn
ArmInsVcvtp = Int
293
  fromEnum ArmInsn
ArmInsVcvtt = Int
294
  fromEnum ArmInsn
ArmInsVdiv = Int
295
  fromEnum ArmInsn
ArmInsVdup = Int
296
  fromEnum ArmInsn
ArmInsVeor = Int
297
  fromEnum ArmInsn
ArmInsVext = Int
298
  fromEnum ArmInsn
ArmInsVfma = Int
299
  fromEnum ArmInsn
ArmInsVfms = Int
300
  fromEnum ArmInsn
ArmInsVfnma = Int
301
  fromEnum ArmInsn
ArmInsVfnms = Int
302
  fromEnum ArmInsn
ArmInsVhadd = Int
303
  fromEnum ArmInsn
ArmInsVhsub = Int
304
  fromEnum ArmInsn
ArmInsVld1 = Int
305
  fromEnum ArmInsn
ArmInsVld2 = Int
306
  fromEnum ArmInsn
ArmInsVld3 = Int
307
  fromEnum ArmInsn
ArmInsVld4 = Int
308
  fromEnum ArmInsn
ArmInsVldmdb = Int
309
  fromEnum ArmInsn
ArmInsVldmia = Int
310
  fromEnum ArmInsn
ArmInsVldr = Int
311
  fromEnum ArmInsn
ArmInsVmaxnm = Int
312
  fromEnum ArmInsn
ArmInsVmax = Int
313
  fromEnum ArmInsn
ArmInsVminnm = Int
314
  fromEnum ArmInsn
ArmInsVmin = Int
315
  fromEnum ArmInsn
ArmInsVmla = Int
316
  fromEnum ArmInsn
ArmInsVmlal = Int
317
  fromEnum ArmInsn
ArmInsVmls = Int
318
  fromEnum ArmInsn
ArmInsVmlsl = Int
319
  fromEnum ArmInsn
ArmInsVmovl = Int
320
  fromEnum ArmInsn
ArmInsVmovn = Int
321
  fromEnum ArmInsn
ArmInsVmsr = Int
322
  fromEnum ArmInsn
ArmInsVmul = Int
323
  fromEnum ArmInsn
ArmInsVmull = Int
324
  fromEnum ArmInsn
ArmInsVmvn = Int
325
  fromEnum ArmInsn
ArmInsVneg = Int
326
  fromEnum ArmInsn
ArmInsVnmla = Int
327
  fromEnum ArmInsn
ArmInsVnmls = Int
328
  fromEnum ArmInsn
ArmInsVnmul = Int
329
  fromEnum ArmInsn
ArmInsVorn = Int
330
  fromEnum ArmInsn
ArmInsVorr = Int
331
  fromEnum ArmInsn
ArmInsVpadal = Int
332
  fromEnum ArmInsn
ArmInsVpaddl = Int
333
  fromEnum ArmInsn
ArmInsVpadd = Int
334
  fromEnum ArmInsn
ArmInsVpmax = Int
335
  fromEnum ArmInsn
ArmInsVpmin = Int
336
  fromEnum ArmInsn
ArmInsVqabs = Int
337
  fromEnum ArmInsn
ArmInsVqadd = Int
338
  fromEnum ArmInsn
ArmInsVqdmlal = Int
339
  fromEnum ArmInsn
ArmInsVqdmlsl = Int
340
  fromEnum ArmInsn
ArmInsVqdmulh = Int
341
  fromEnum ArmInsn
ArmInsVqdmull = Int
342
  fromEnum ArmInsn
ArmInsVqmovun = Int
343
  fromEnum ArmInsn
ArmInsVqmovn = Int
344
  fromEnum ArmInsn
ArmInsVqneg = Int
345
  fromEnum ArmInsn
ArmInsVqrdmulh = Int
346
  fromEnum ArmInsn
ArmInsVqrshl = Int
347
  fromEnum ArmInsn
ArmInsVqrshrn = Int
348
  fromEnum ArmInsn
ArmInsVqrshrun = Int
349
  fromEnum ArmInsn
ArmInsVqshl = Int
350
  fromEnum ArmInsn
ArmInsVqshlu = Int
351
  fromEnum ArmInsn
ArmInsVqshrn = Int
352
  fromEnum ArmInsn
ArmInsVqshrun = Int
353
  fromEnum ArmInsn
ArmInsVqsub = Int
354
  fromEnum ArmInsn
ArmInsVraddhn = Int
355
  fromEnum ArmInsn
ArmInsVrecpe = Int
356
  fromEnum ArmInsn
ArmInsVrecps = Int
357
  fromEnum ArmInsn
ArmInsVrev16 = Int
358
  fromEnum ArmInsn
ArmInsVrev32 = Int
359
  fromEnum ArmInsn
ArmInsVrev64 = Int
360
  fromEnum ArmInsn
ArmInsVrhadd = Int
361
  fromEnum ArmInsn
ArmInsVrinta = Int
362
  fromEnum ArmInsn
ArmInsVrintm = Int
363
  fromEnum ArmInsn
ArmInsVrintn = Int
364
  fromEnum ArmInsn
ArmInsVrintp = Int
365
  fromEnum ArmInsn
ArmInsVrintr = Int
366
  fromEnum ArmInsn
ArmInsVrintx = Int
367
  fromEnum ArmInsn
ArmInsVrintz = Int
368
  fromEnum ArmInsn
ArmInsVrshl = Int
369
  fromEnum ArmInsn
ArmInsVrshrn = Int
370
  fromEnum ArmInsn
ArmInsVrshr = Int
371
  fromEnum ArmInsn
ArmInsVrsqrte = Int
372
  fromEnum ArmInsn
ArmInsVrsqrts = Int
373
  fromEnum ArmInsn
ArmInsVrsra = Int
374
  fromEnum ArmInsn
ArmInsVrsubhn = Int
375
  fromEnum ArmInsn
ArmInsVseleq = Int
376
  fromEnum ArmInsn
ArmInsVselge = Int
377
  fromEnum ArmInsn
ArmInsVselgt = Int
378
  fromEnum ArmInsn
ArmInsVselvs = Int
379
  fromEnum ArmInsn
ArmInsVshll = Int
380
  fromEnum ArmInsn
ArmInsVshl = Int
381
  fromEnum ArmInsn
ArmInsVshrn = Int
382
  fromEnum ArmInsn
ArmInsVshr = Int
383
  fromEnum ArmInsn
ArmInsVsli = Int
384
  fromEnum ArmInsn
ArmInsVsqrt = Int
385
  fromEnum ArmInsn
ArmInsVsra = Int
386
  fromEnum ArmInsn
ArmInsVsri = Int
387
  fromEnum ArmInsn
ArmInsVst1 = Int
388
  fromEnum ArmInsn
ArmInsVst2 = Int
389
  fromEnum ArmInsn
ArmInsVst3 = Int
390
  fromEnum ArmInsn
ArmInsVst4 = Int
391
  fromEnum ArmInsn
ArmInsVstmdb = Int
392
  fromEnum ArmInsn
ArmInsVstmia = Int
393
  fromEnum ArmInsn
ArmInsVstr = Int
394
  fromEnum ArmInsn
ArmInsVsub = Int
395
  fromEnum ArmInsn
ArmInsVsubhn = Int
396
  fromEnum ArmInsn
ArmInsVsubl = Int
397
  fromEnum ArmInsn
ArmInsVsubw = Int
398
  fromEnum ArmInsn
ArmInsVswp = Int
399
  fromEnum ArmInsn
ArmInsVtbl = Int
400
  fromEnum ArmInsn
ArmInsVtbx = Int
401
  fromEnum ArmInsn
ArmInsVcvtr = Int
402
  fromEnum ArmInsn
ArmInsVtrn = Int
403
  fromEnum ArmInsn
ArmInsVtst = Int
404
  fromEnum ArmInsn
ArmInsVuzp = Int
405
  fromEnum ArmInsn
ArmInsVzip = Int
406
  fromEnum ArmInsn
ArmInsAddw = Int
407
  fromEnum ArmInsn
ArmInsAsr = Int
408
  fromEnum ArmInsn
ArmInsDcps1 = Int
409
  fromEnum ArmInsn
ArmInsDcps2 = Int
410
  fromEnum ArmInsn
ArmInsDcps3 = Int
411
  fromEnum ArmInsn
ArmInsIt = Int
412
  fromEnum ArmInsn
ArmInsLsl = Int
413
  fromEnum ArmInsn
ArmInsLsr = Int
414
  fromEnum ArmInsn
ArmInsOrn = Int
415
  fromEnum ArmInsn
ArmInsRor = Int
416
  fromEnum ArmInsn
ArmInsRrx = Int
417
  fromEnum ArmInsn
ArmInsSubw = Int
418
  fromEnum ArmInsn
ArmInsTbb = Int
419
  fromEnum ArmInsn
ArmInsTbh = Int
420
  fromEnum ArmInsn
ArmInsCbnz = Int
421
  fromEnum ArmInsn
ArmInsCbz = Int
422
  fromEnum ArmInsn
ArmInsPop = Int
423
  fromEnum ArmInsn
ArmInsPush = Int
424
  fromEnum ArmInsn
ArmInsNop = Int
425
  fromEnum ArmInsn
ArmInsYield = Int
426
  fromEnum ArmInsn
ArmInsWfe = Int
427
  fromEnum ArmInsn
ArmInsWfi = Int
428
  fromEnum ArmInsn
ArmInsSev = Int
429
  fromEnum ArmInsn
ArmInsSevl = Int
430
  fromEnum ArmInsn
ArmInsVpush = Int
431
  fromEnum ArmInsn
ArmInsVpop = Int
432
  fromEnum ArmInsn
ArmInsEnding = Int
433

  toEnum :: Int -> ArmInsn
toEnum Int
0 = ArmInsn
ArmInsInvalid
  toEnum Int
1 = ArmInsn
ArmInsAdc
  toEnum Int
2 = ArmInsn
ArmInsAdd
  toEnum Int
3 = ArmInsn
ArmInsAdr
  toEnum Int
4 = ArmInsn
ArmInsAesd
  toEnum Int
5 = ArmInsn
ArmInsAese
  toEnum Int
6 = ArmInsn
ArmInsAesimc
  toEnum Int
7 = ArmInsn
ArmInsAesmc
  toEnum Int
8 = ArmInsn
ArmInsAnd
  toEnum Int
9 = ArmInsn
ArmInsBfc
  toEnum Int
10 = ArmInsn
ArmInsBfi
  toEnum Int
11 = ArmInsn
ArmInsBic
  toEnum Int
12 = ArmInsn
ArmInsBkpt
  toEnum Int
13 = ArmInsn
ArmInsBl
  toEnum Int
14 = ArmInsn
ArmInsBlx
  toEnum Int
15 = ArmInsn
ArmInsBx
  toEnum Int
16 = ArmInsn
ArmInsBxj
  toEnum Int
17 = ArmInsn
ArmInsB
  toEnum Int
18 = ArmInsn
ArmInsCdp
  toEnum Int
19 = ArmInsn
ArmInsCdp2
  toEnum Int
20 = ArmInsn
ArmInsClrex
  toEnum Int
21 = ArmInsn
ArmInsClz
  toEnum Int
22 = ArmInsn
ArmInsCmn
  toEnum Int
23 = ArmInsn
ArmInsCmp
  toEnum Int
24 = ArmInsn
ArmInsCps
  toEnum Int
25 = ArmInsn
ArmInsCrc32b
  toEnum Int
26 = ArmInsn
ArmInsCrc32cb
  toEnum Int
27 = ArmInsn
ArmInsCrc32ch
  toEnum Int
28 = ArmInsn
ArmInsCrc32cw
  toEnum Int
29 = ArmInsn
ArmInsCrc32h
  toEnum Int
30 = ArmInsn
ArmInsCrc32w
  toEnum Int
31 = ArmInsn
ArmInsDbg
  toEnum Int
32 = ArmInsn
ArmInsDmb
  toEnum Int
33 = ArmInsn
ArmInsDsb
  toEnum Int
34 = ArmInsn
ArmInsEor
  toEnum Int
35 = ArmInsn
ArmInsEret
  toEnum Int
36 = ArmInsn
ArmInsVmov
  toEnum Int
37 = ArmInsn
ArmInsFldmdbx
  toEnum Int
38 = ArmInsn
ArmInsFldmiax
  toEnum Int
39 = ArmInsn
ArmInsVmrs
  toEnum Int
40 = ArmInsn
ArmInsFstmdbx
  toEnum Int
41 = ArmInsn
ArmInsFstmiax
  toEnum Int
42 = ArmInsn
ArmInsHint
  toEnum Int
43 = ArmInsn
ArmInsHlt
  toEnum Int
44 = ArmInsn
ArmInsHvc
  toEnum Int
45 = ArmInsn
ArmInsIsb
  toEnum Int
46 = ArmInsn
ArmInsLda
  toEnum Int
47 = ArmInsn
ArmInsLdab
  toEnum Int
48 = ArmInsn
ArmInsLdaex
  toEnum Int
49 = ArmInsn
ArmInsLdaexb
  toEnum Int
50 = ArmInsn
ArmInsLdaexd
  toEnum Int
51 = ArmInsn
ArmInsLdaexh
  toEnum Int
52 = ArmInsn
ArmInsLdah
  toEnum Int
53 = ArmInsn
ArmInsLdc2l
  toEnum Int
54 = ArmInsn
ArmInsLdc2
  toEnum Int
55 = ArmInsn
ArmInsLdcl
  toEnum Int
56 = ArmInsn
ArmInsLdc
  toEnum Int
57 = ArmInsn
ArmInsLdmda
  toEnum Int
58 = ArmInsn
ArmInsLdmdb
  toEnum Int
59 = ArmInsn
ArmInsLdm
  toEnum Int
60 = ArmInsn
ArmInsLdmib
  toEnum Int
61 = ArmInsn
ArmInsLdrbt
  toEnum Int
62 = ArmInsn
ArmInsLdrb
  toEnum Int
63 = ArmInsn
ArmInsLdrd
  toEnum Int
64 = ArmInsn
ArmInsLdrex
  toEnum Int
65 = ArmInsn
ArmInsLdrexb
  toEnum Int
66 = ArmInsn
ArmInsLdrexd
  toEnum Int
67 = ArmInsn
ArmInsLdrexh
  toEnum Int
68 = ArmInsn
ArmInsLdrh
  toEnum Int
69 = ArmInsn
ArmInsLdrht
  toEnum Int
70 = ArmInsn
ArmInsLdrsb
  toEnum Int
71 = ArmInsn
ArmInsLdrsbt
  toEnum Int
72 = ArmInsn
ArmInsLdrsh
  toEnum Int
73 = ArmInsn
ArmInsLdrsht
  toEnum Int
74 = ArmInsn
ArmInsLdrt
  toEnum Int
75 = ArmInsn
ArmInsLdr
  toEnum Int
76 = ArmInsn
ArmInsMcr
  toEnum Int
77 = ArmInsn
ArmInsMcr2
  toEnum Int
78 = ArmInsn
ArmInsMcrr
  toEnum Int
79 = ArmInsn
ArmInsMcrr2
  toEnum Int
80 = ArmInsn
ArmInsMla
  toEnum Int
81 = ArmInsn
ArmInsMls
  toEnum Int
82 = ArmInsn
ArmInsMov
  toEnum Int
83 = ArmInsn
ArmInsMovt
  toEnum Int
84 = ArmInsn
ArmInsMovw
  toEnum Int
85 = ArmInsn
ArmInsMrc
  toEnum Int
86 = ArmInsn
ArmInsMrc2
  toEnum Int
87 = ArmInsn
ArmInsMrrc
  toEnum Int
88 = ArmInsn
ArmInsMrrc2
  toEnum Int
89 = ArmInsn
ArmInsMrs
  toEnum Int
90 = ArmInsn
ArmInsMsr
  toEnum Int
91 = ArmInsn
ArmInsMul
  toEnum Int
92 = ArmInsn
ArmInsMvn
  toEnum Int
93 = ArmInsn
ArmInsOrr
  toEnum Int
94 = ArmInsn
ArmInsPkhbt
  toEnum Int
95 = ArmInsn
ArmInsPkhtb
  toEnum Int
96 = ArmInsn
ArmInsPldw
  toEnum Int
97 = ArmInsn
ArmInsPld
  toEnum Int
98 = ArmInsn
ArmInsPli
  toEnum Int
99 = ArmInsn
ArmInsQadd
  toEnum Int
100 = ArmInsn
ArmInsQadd16
  toEnum Int
101 = ArmInsn
ArmInsQadd8
  toEnum Int
102 = ArmInsn
ArmInsQasx
  toEnum Int
103 = ArmInsn
ArmInsQdadd
  toEnum Int
104 = ArmInsn
ArmInsQdsub
  toEnum Int
105 = ArmInsn
ArmInsQsax
  toEnum Int
106 = ArmInsn
ArmInsQsub
  toEnum Int
107 = ArmInsn
ArmInsQsub16
  toEnum Int
108 = ArmInsn
ArmInsQsub8
  toEnum Int
109 = ArmInsn
ArmInsRbit
  toEnum Int
110 = ArmInsn
ArmInsRev
  toEnum Int
111 = ArmInsn
ArmInsRev16
  toEnum Int
112 = ArmInsn
ArmInsRevsh
  toEnum Int
113 = ArmInsn
ArmInsRfeda
  toEnum Int
114 = ArmInsn
ArmInsRfedb
  toEnum Int
115 = ArmInsn
ArmInsRfeia
  toEnum Int
116 = ArmInsn
ArmInsRfeib
  toEnum Int
117 = ArmInsn
ArmInsRsb
  toEnum Int
118 = ArmInsn
ArmInsRsc
  toEnum Int
119 = ArmInsn
ArmInsSadd16
  toEnum Int
120 = ArmInsn
ArmInsSadd8
  toEnum Int
121 = ArmInsn
ArmInsSasx
  toEnum Int
122 = ArmInsn
ArmInsSbc
  toEnum Int
123 = ArmInsn
ArmInsSbfx
  toEnum Int
124 = ArmInsn
ArmInsSdiv
  toEnum Int
125 = ArmInsn
ArmInsSel
  toEnum Int
126 = ArmInsn
ArmInsSetend
  toEnum Int
127 = ArmInsn
ArmInsSha1c
  toEnum Int
128 = ArmInsn
ArmInsSha1h
  toEnum Int
129 = ArmInsn
ArmInsSha1m
  toEnum Int
130 = ArmInsn
ArmInsSha1p
  toEnum Int
131 = ArmInsn
ArmInsSha1su0
  toEnum Int
132 = ArmInsn
ArmInsSha1su1
  toEnum Int
133 = ArmInsn
ArmInsSha256h
  toEnum Int
134 = ArmInsn
ArmInsSha256h2
  toEnum Int
135 = ArmInsn
ArmInsSha256su0
  toEnum Int
136 = ArmInsn
ArmInsSha256su1
  toEnum Int
137 = ArmInsn
ArmInsShadd16
  toEnum Int
138 = ArmInsn
ArmInsShadd8
  toEnum Int
139 = ArmInsn
ArmInsShasx
  toEnum Int
140 = ArmInsn
ArmInsShsax
  toEnum Int
141 = ArmInsn
ArmInsShsub16
  toEnum Int
142 = ArmInsn
ArmInsShsub8
  toEnum Int
143 = ArmInsn
ArmInsSmc
  toEnum Int
144 = ArmInsn
ArmInsSmlabb
  toEnum Int
145 = ArmInsn
ArmInsSmlabt
  toEnum Int
146 = ArmInsn
ArmInsSmlad
  toEnum Int
147 = ArmInsn
ArmInsSmladx
  toEnum Int
148 = ArmInsn
ArmInsSmlal
  toEnum Int
149 = ArmInsn
ArmInsSmlalbb
  toEnum Int
150 = ArmInsn
ArmInsSmlalbt
  toEnum Int
151 = ArmInsn
ArmInsSmlald
  toEnum Int
152 = ArmInsn
ArmInsSmlaldx
  toEnum Int
153 = ArmInsn
ArmInsSmlaltb
  toEnum Int
154 = ArmInsn
ArmInsSmlaltt
  toEnum Int
155 = ArmInsn
ArmInsSmlatb
  toEnum Int
156 = ArmInsn
ArmInsSmlatt
  toEnum Int
157 = ArmInsn
ArmInsSmlawb
  toEnum Int
158 = ArmInsn
ArmInsSmlawt
  toEnum Int
159 = ArmInsn
ArmInsSmlsd
  toEnum Int
160 = ArmInsn
ArmInsSmlsdx
  toEnum Int
161 = ArmInsn
ArmInsSmlsld
  toEnum Int
162 = ArmInsn
ArmInsSmlsldx
  toEnum Int
163 = ArmInsn
ArmInsSmmla
  toEnum Int
164 = ArmInsn
ArmInsSmmlar
  toEnum Int
165 = ArmInsn
ArmInsSmmls
  toEnum Int
166 = ArmInsn
ArmInsSmmlsr
  toEnum Int
167 = ArmInsn
ArmInsSmmul
  toEnum Int
168 = ArmInsn
ArmInsSmmulr
  toEnum Int
169 = ArmInsn
ArmInsSmuad
  toEnum Int
170 = ArmInsn
ArmInsSmuadx
  toEnum Int
171 = ArmInsn
ArmInsSmulbb
  toEnum Int
172 = ArmInsn
ArmInsSmulbt
  toEnum Int
173 = ArmInsn
ArmInsSmull
  toEnum Int
174 = ArmInsn
ArmInsSmultb
  toEnum Int
175 = ArmInsn
ArmInsSmultt
  toEnum Int
176 = ArmInsn
ArmInsSmulwb
  toEnum Int
177 = ArmInsn
ArmInsSmulwt
  toEnum Int
178 = ArmInsn
ArmInsSmusd
  toEnum Int
179 = ArmInsn
ArmInsSmusdx
  toEnum Int
180 = ArmInsn
ArmInsSrsda
  toEnum Int
181 = ArmInsn
ArmInsSrsdb
  toEnum Int
182 = ArmInsn
ArmInsSrsia
  toEnum Int
183 = ArmInsn
ArmInsSrsib
  toEnum Int
184 = ArmInsn
ArmInsSsat
  toEnum Int
185 = ArmInsn
ArmInsSsat16
  toEnum Int
186 = ArmInsn
ArmInsSsax
  toEnum Int
187 = ArmInsn
ArmInsSsub16
  toEnum Int
188 = ArmInsn
ArmInsSsub8
  toEnum Int
189 = ArmInsn
ArmInsStc2l
  toEnum Int
190 = ArmInsn
ArmInsStc2
  toEnum Int
191 = ArmInsn
ArmInsStcl
  toEnum Int
192 = ArmInsn
ArmInsStc
  toEnum Int
193 = ArmInsn
ArmInsStl
  toEnum Int
194 = ArmInsn
ArmInsStlb
  toEnum Int
195 = ArmInsn
ArmInsStlex
  toEnum Int
196 = ArmInsn
ArmInsStlexb
  toEnum Int
197 = ArmInsn
ArmInsStlexd
  toEnum Int
198 = ArmInsn
ArmInsStlexh
  toEnum Int
199 = ArmInsn
ArmInsStlh
  toEnum Int
200 = ArmInsn
ArmInsStmda
  toEnum Int
201 = ArmInsn
ArmInsStmdb
  toEnum Int
202 = ArmInsn
ArmInsStm
  toEnum Int
203 = ArmInsn
ArmInsStmib
  toEnum Int
204 = ArmInsn
ArmInsStrbt
  toEnum Int
205 = ArmInsn
ArmInsStrb
  toEnum Int
206 = ArmInsn
ArmInsStrd
  toEnum Int
207 = ArmInsn
ArmInsStrex
  toEnum Int
208 = ArmInsn
ArmInsStrexb
  toEnum Int
209 = ArmInsn
ArmInsStrexd
  toEnum Int
210 = ArmInsn
ArmInsStrexh
  toEnum Int
211 = ArmInsn
ArmInsStrh
  toEnum Int
212 = ArmInsn
ArmInsStrht
  toEnum Int
213 = ArmInsn
ArmInsStrt
  toEnum Int
214 = ArmInsn
ArmInsStr
  toEnum Int
215 = ArmInsn
ArmInsSub
  toEnum Int
216 = ArmInsn
ArmInsSvc
  toEnum Int
217 = ArmInsn
ArmInsSwp
  toEnum Int
218 = ArmInsn
ArmInsSwpb
  toEnum Int
219 = ArmInsn
ArmInsSxtab
  toEnum Int
220 = ArmInsn
ArmInsSxtab16
  toEnum Int
221 = ArmInsn
ArmInsSxtah
  toEnum Int
222 = ArmInsn
ArmInsSxtb
  toEnum Int
223 = ArmInsn
ArmInsSxtb16
  toEnum Int
224 = ArmInsn
ArmInsSxth
  toEnum Int
225 = ArmInsn
ArmInsTeq
  toEnum Int
226 = ArmInsn
ArmInsTrap
  toEnum Int
227 = ArmInsn
ArmInsTst
  toEnum Int
228 = ArmInsn
ArmInsUadd16
  toEnum Int
229 = ArmInsn
ArmInsUadd8
  toEnum Int
230 = ArmInsn
ArmInsUasx
  toEnum Int
231 = ArmInsn
ArmInsUbfx
  toEnum Int
232 = ArmInsn
ArmInsUdf
  toEnum Int
233 = ArmInsn
ArmInsUdiv
  toEnum Int
234 = ArmInsn
ArmInsUhadd16
  toEnum Int
235 = ArmInsn
ArmInsUhadd8
  toEnum Int
236 = ArmInsn
ArmInsUhasx
  toEnum Int
237 = ArmInsn
ArmInsUhsax
  toEnum Int
238 = ArmInsn
ArmInsUhsub16
  toEnum Int
239 = ArmInsn
ArmInsUhsub8
  toEnum Int
240 = ArmInsn
ArmInsUmaal
  toEnum Int
241 = ArmInsn
ArmInsUmlal
  toEnum Int
242 = ArmInsn
ArmInsUmull
  toEnum Int
243 = ArmInsn
ArmInsUqadd16
  toEnum Int
244 = ArmInsn
ArmInsUqadd8
  toEnum Int
245 = ArmInsn
ArmInsUqasx
  toEnum Int
246 = ArmInsn
ArmInsUqsax
  toEnum Int
247 = ArmInsn
ArmInsUqsub16
  toEnum Int
248 = ArmInsn
ArmInsUqsub8
  toEnum Int
249 = ArmInsn
ArmInsUsad8
  toEnum Int
250 = ArmInsn
ArmInsUsada8
  toEnum Int
251 = ArmInsn
ArmInsUsat
  toEnum Int
252 = ArmInsn
ArmInsUsat16
  toEnum Int
253 = ArmInsn
ArmInsUsax
  toEnum Int
254 = ArmInsn
ArmInsUsub16
  toEnum Int
255 = ArmInsn
ArmInsUsub8
  toEnum Int
256 = ArmInsn
ArmInsUxtab
  toEnum Int
257 = ArmInsn
ArmInsUxtab16
  toEnum Int
258 = ArmInsn
ArmInsUxtah
  toEnum Int
259 = ArmInsn
ArmInsUxtb
  toEnum Int
260 = ArmInsn
ArmInsUxtb16
  toEnum Int
261 = ArmInsn
ArmInsUxth
  toEnum Int
262 = ArmInsn
ArmInsVabal
  toEnum Int
263 = ArmInsn
ArmInsVaba
  toEnum Int
264 = ArmInsn
ArmInsVabdl
  toEnum Int
265 = ArmInsn
ArmInsVabd
  toEnum Int
266 = ArmInsn
ArmInsVabs
  toEnum Int
267 = ArmInsn
ArmInsVacge
  toEnum Int
268 = ArmInsn
ArmInsVacgt
  toEnum Int
269 = ArmInsn
ArmInsVadd
  toEnum Int
270 = ArmInsn
ArmInsVaddhn
  toEnum Int
271 = ArmInsn
ArmInsVaddl
  toEnum Int
272 = ArmInsn
ArmInsVaddw
  toEnum Int
273 = ArmInsn
ArmInsVand
  toEnum Int
274 = ArmInsn
ArmInsVbic
  toEnum Int
275 = ArmInsn
ArmInsVbif
  toEnum Int
276 = ArmInsn
ArmInsVbit
  toEnum Int
277 = ArmInsn
ArmInsVbsl
  toEnum Int
278 = ArmInsn
ArmInsVceq
  toEnum Int
279 = ArmInsn
ArmInsVcge
  toEnum Int
280 = ArmInsn
ArmInsVcgt
  toEnum Int
281 = ArmInsn
ArmInsVcle
  toEnum Int
282 = ArmInsn
ArmInsVcls
  toEnum Int
283 = ArmInsn
ArmInsVclt
  toEnum Int
284 = ArmInsn
ArmInsVclz
  toEnum Int
285 = ArmInsn
ArmInsVcmp
  toEnum Int
286 = ArmInsn
ArmInsVcmpe
  toEnum Int
287 = ArmInsn
ArmInsVcnt
  toEnum Int
288 = ArmInsn
ArmInsVcvta
  toEnum Int
289 = ArmInsn
ArmInsVcvtb
  toEnum Int
290 = ArmInsn
ArmInsVcvt
  toEnum Int
291 = ArmInsn
ArmInsVcvtm
  toEnum Int
292 = ArmInsn
ArmInsVcvtn
  toEnum Int
293 = ArmInsn
ArmInsVcvtp
  toEnum Int
294 = ArmInsn
ArmInsVcvtt
  toEnum Int
295 = ArmInsn
ArmInsVdiv
  toEnum Int
296 = ArmInsn
ArmInsVdup
  toEnum Int
297 = ArmInsn
ArmInsVeor
  toEnum Int
298 = ArmInsn
ArmInsVext
  toEnum Int
299 = ArmInsn
ArmInsVfma
  toEnum Int
300 = ArmInsn
ArmInsVfms
  toEnum Int
301 = ArmInsn
ArmInsVfnma
  toEnum Int
302 = ArmInsn
ArmInsVfnms
  toEnum Int
303 = ArmInsn
ArmInsVhadd
  toEnum Int
304 = ArmInsn
ArmInsVhsub
  toEnum Int
305 = ArmInsn
ArmInsVld1
  toEnum Int
306 = ArmInsn
ArmInsVld2
  toEnum Int
307 = ArmInsn
ArmInsVld3
  toEnum Int
308 = ArmInsn
ArmInsVld4
  toEnum Int
309 = ArmInsn
ArmInsVldmdb
  toEnum Int
310 = ArmInsn
ArmInsVldmia
  toEnum Int
311 = ArmInsn
ArmInsVldr
  toEnum Int
312 = ArmInsn
ArmInsVmaxnm
  toEnum Int
313 = ArmInsn
ArmInsVmax
  toEnum Int
314 = ArmInsn
ArmInsVminnm
  toEnum Int
315 = ArmInsn
ArmInsVmin
  toEnum Int
316 = ArmInsn
ArmInsVmla
  toEnum Int
317 = ArmInsn
ArmInsVmlal
  toEnum Int
318 = ArmInsn
ArmInsVmls
  toEnum Int
319 = ArmInsn
ArmInsVmlsl
  toEnum Int
320 = ArmInsn
ArmInsVmovl
  toEnum Int
321 = ArmInsn
ArmInsVmovn
  toEnum Int
322 = ArmInsn
ArmInsVmsr
  toEnum Int
323 = ArmInsn
ArmInsVmul
  toEnum Int
324 = ArmInsn
ArmInsVmull
  toEnum Int
325 = ArmInsn
ArmInsVmvn
  toEnum Int
326 = ArmInsn
ArmInsVneg
  toEnum Int
327 = ArmInsn
ArmInsVnmla
  toEnum Int
328 = ArmInsn
ArmInsVnmls
  toEnum Int
329 = ArmInsn
ArmInsVnmul
  toEnum Int
330 = ArmInsn
ArmInsVorn
  toEnum Int
331 = ArmInsn
ArmInsVorr
  toEnum Int
332 = ArmInsn
ArmInsVpadal
  toEnum Int
333 = ArmInsn
ArmInsVpaddl
  toEnum Int
334 = ArmInsn
ArmInsVpadd
  toEnum Int
335 = ArmInsn
ArmInsVpmax
  toEnum Int
336 = ArmInsn
ArmInsVpmin
  toEnum Int
337 = ArmInsn
ArmInsVqabs
  toEnum Int
338 = ArmInsn
ArmInsVqadd
  toEnum Int
339 = ArmInsn
ArmInsVqdmlal
  toEnum Int
340 = ArmInsn
ArmInsVqdmlsl
  toEnum Int
341 = ArmInsn
ArmInsVqdmulh
  toEnum Int
342 = ArmInsn
ArmInsVqdmull
  toEnum Int
343 = ArmInsn
ArmInsVqmovun
  toEnum Int
344 = ArmInsn
ArmInsVqmovn
  toEnum Int
345 = ArmInsn
ArmInsVqneg
  toEnum Int
346 = ArmInsn
ArmInsVqrdmulh
  toEnum Int
347 = ArmInsn
ArmInsVqrshl
  toEnum Int
348 = ArmInsn
ArmInsVqrshrn
  toEnum Int
349 = ArmInsn
ArmInsVqrshrun
  toEnum Int
350 = ArmInsn
ArmInsVqshl
  toEnum Int
351 = ArmInsn
ArmInsVqshlu
  toEnum Int
352 = ArmInsn
ArmInsVqshrn
  toEnum Int
353 = ArmInsn
ArmInsVqshrun
  toEnum Int
354 = ArmInsn
ArmInsVqsub
  toEnum Int
355 = ArmInsn
ArmInsVraddhn
  toEnum Int
356 = ArmInsn
ArmInsVrecpe
  toEnum Int
357 = ArmInsn
ArmInsVrecps
  toEnum Int
358 = ArmInsn
ArmInsVrev16
  toEnum Int
359 = ArmInsn
ArmInsVrev32
  toEnum Int
360 = ArmInsn
ArmInsVrev64
  toEnum Int
361 = ArmInsn
ArmInsVrhadd
  toEnum Int
362 = ArmInsn
ArmInsVrinta
  toEnum Int
363 = ArmInsn
ArmInsVrintm
  toEnum Int
364 = ArmInsn
ArmInsVrintn
  toEnum Int
365 = ArmInsn
ArmInsVrintp
  toEnum Int
366 = ArmInsn
ArmInsVrintr
  toEnum Int
367 = ArmInsn
ArmInsVrintx
  toEnum Int
368 = ArmInsn
ArmInsVrintz
  toEnum Int
369 = ArmInsn
ArmInsVrshl
  toEnum Int
370 = ArmInsn
ArmInsVrshrn
  toEnum Int
371 = ArmInsn
ArmInsVrshr
  toEnum Int
372 = ArmInsn
ArmInsVrsqrte
  toEnum Int
373 = ArmInsn
ArmInsVrsqrts
  toEnum Int
374 = ArmInsn
ArmInsVrsra
  toEnum Int
375 = ArmInsn
ArmInsVrsubhn
  toEnum Int
376 = ArmInsn
ArmInsVseleq
  toEnum Int
377 = ArmInsn
ArmInsVselge
  toEnum Int
378 = ArmInsn
ArmInsVselgt
  toEnum Int
379 = ArmInsn
ArmInsVselvs
  toEnum Int
380 = ArmInsn
ArmInsVshll
  toEnum Int
381 = ArmInsn
ArmInsVshl
  toEnum Int
382 = ArmInsn
ArmInsVshrn
  toEnum Int
383 = ArmInsn
ArmInsVshr
  toEnum Int
384 = ArmInsn
ArmInsVsli
  toEnum Int
385 = ArmInsn
ArmInsVsqrt
  toEnum Int
386 = ArmInsn
ArmInsVsra
  toEnum Int
387 = ArmInsn
ArmInsVsri
  toEnum Int
388 = ArmInsn
ArmInsVst1
  toEnum Int
389 = ArmInsn
ArmInsVst2
  toEnum Int
390 = ArmInsn
ArmInsVst3
  toEnum Int
391 = ArmInsn
ArmInsVst4
  toEnum Int
392 = ArmInsn
ArmInsVstmdb
  toEnum Int
393 = ArmInsn
ArmInsVstmia
  toEnum Int
394 = ArmInsn
ArmInsVstr
  toEnum Int
395 = ArmInsn
ArmInsVsub
  toEnum Int
396 = ArmInsn
ArmInsVsubhn
  toEnum Int
397 = ArmInsn
ArmInsVsubl
  toEnum Int
398 = ArmInsn
ArmInsVsubw
  toEnum Int
399 = ArmInsn
ArmInsVswp
  toEnum Int
400 = ArmInsn
ArmInsVtbl
  toEnum Int
401 = ArmInsn
ArmInsVtbx
  toEnum Int
402 = ArmInsn
ArmInsVcvtr
  toEnum Int
403 = ArmInsn
ArmInsVtrn
  toEnum Int
404 = ArmInsn
ArmInsVtst
  toEnum Int
405 = ArmInsn
ArmInsVuzp
  toEnum Int
406 = ArmInsn
ArmInsVzip
  toEnum Int
407 = ArmInsn
ArmInsAddw
  toEnum Int
408 = ArmInsn
ArmInsAsr
  toEnum Int
409 = ArmInsn
ArmInsDcps1
  toEnum Int
410 = ArmInsn
ArmInsDcps2
  toEnum Int
411 = ArmInsn
ArmInsDcps3
  toEnum Int
412 = ArmInsn
ArmInsIt
  toEnum Int
413 = ArmInsn
ArmInsLsl
  toEnum Int
414 = ArmInsn
ArmInsLsr
  toEnum Int
415 = ArmInsn
ArmInsOrn
  toEnum Int
416 = ArmInsn
ArmInsRor
  toEnum Int
417 = ArmInsn
ArmInsRrx
  toEnum Int
418 = ArmInsn
ArmInsSubw
  toEnum Int
419 = ArmInsn
ArmInsTbb
  toEnum Int
420 = ArmInsn
ArmInsTbh
  toEnum Int
421 = ArmInsn
ArmInsCbnz
  toEnum Int
422 = ArmInsn
ArmInsCbz
  toEnum Int
423 = ArmInsn
ArmInsPop
  toEnum Int
424 = ArmInsn
ArmInsPush
  toEnum Int
425 = ArmInsn
ArmInsNop
  toEnum Int
426 = ArmInsn
ArmInsYield
  toEnum Int
427 = ArmInsn
ArmInsWfe
  toEnum Int
428 = ArmInsn
ArmInsWfi
  toEnum Int
429 = ArmInsn
ArmInsSev
  toEnum Int
430 = ArmInsn
ArmInsSevl
  toEnum Int
431 = ArmInsn
ArmInsVpush
  toEnum Int
432 = ArmInsn
ArmInsVpop
  toEnum Int
433 = ArmInsn
ArmInsEnding
  toEnum Int
unmatched = String -> ArmInsn
forall a. HasCallStack => String -> a
error (String
"ArmInsn.toEnum: Cannot match " String -> ShowS
forall a. [a] -> [a] -> [a]
++ Int -> String
forall a. Show a => a -> String
show Int
unmatched)

{-# LINE 225 "src/Hapstone/Internal/Arm.chs" #-}

-- | ARM instruction groups
data ArmInsnGroup = ArmGrpInvalid
                  | ArmGrpJump
                  | ArmGrpCall
                  | ArmGrpInt
                  | ArmGrpPrivilege
                  | ArmGrpBranchRelative
                  | ArmGrpCrypto
                  | ArmGrpDatabarrier
                  | ArmGrpDivide
                  | ArmGrpFparmv8
                  | ArmGrpMultpro
                  | ArmGrpNeon
                  | ArmGrpT2extractpack
                  | ArmGrpThumb2dsp
                  | ArmGrpTrustzone
                  | ArmGrpV4t
                  | ArmGrpV5t
                  | ArmGrpV5te
                  | ArmGrpV6
                  | ArmGrpV6t2
                  | ArmGrpV7
                  | ArmGrpV8
                  | ArmGrpVfp2
                  | ArmGrpVfp3
                  | ArmGrpVfp4
                  | ArmGrpArm
                  | ArmGrpMclass
                  | ArmGrpNotmclass
                  | ArmGrpThumb
                  | ArmGrpThumb1only
                  | ArmGrpThumb2
                  | ArmGrpPrev8
                  | ArmGrpFpvmlx
                  | ArmGrpMulops
                  | ArmGrpCrc
                  | ArmGrpDpvfp
                  | ArmGrpV6m
                  | ArmGrpVirtualization
                  | ArmGrpEnding
  deriving (Show,Eq,Bounded)
instance Enum ArmInsnGroup where
  succ ArmGrpInvalid = ArmGrpJump
  succ ArmGrpJump = ArmGrpCall
  succ ArmGrpCall = ArmGrpInt
  succ ArmGrpInt = ArmGrpPrivilege
  succ ArmGrpPrivilege = ArmGrpBranchRelative
  succ ArmGrpBranchRelative = ArmGrpCrypto
  succ ArmGrpCrypto = ArmGrpDatabarrier
  succ ArmGrpDatabarrier = ArmGrpDivide
  succ ArmGrpDivide = ArmGrpFparmv8
  succ ArmGrpFparmv8 = ArmGrpMultpro
  succ ArmGrpMultpro = ArmGrpNeon
  succ ArmGrpNeon = ArmGrpT2extractpack
  succ ArmGrpT2extractpack = ArmGrpThumb2dsp
  succ ArmGrpThumb2dsp = ArmGrpTrustzone
  succ ArmGrpTrustzone = ArmGrpV4t
  succ ArmGrpV4t = ArmGrpV5t
  succ ArmGrpV5t = ArmGrpV5te
  succ ArmGrpV5te = ArmGrpV6
  succ ArmGrpV6 = ArmGrpV6t2
  succ ArmGrpV6t2 = ArmGrpV7
  succ ArmGrpV7 = ArmGrpV8
  succ ArmGrpV8 = ArmGrpVfp2
  succ ArmGrpVfp2 = ArmGrpVfp3
  succ ArmGrpVfp3 = ArmGrpVfp4
  succ ArmGrpVfp4 = ArmGrpArm
  succ ArmGrpArm = ArmGrpMclass
  succ ArmGrpMclass = ArmGrpNotmclass
  succ ArmGrpNotmclass = ArmGrpThumb
  succ ArmGrpThumb = ArmGrpThumb1only
  succ ArmGrpThumb1only = ArmGrpThumb2
  succ ArmGrpThumb2 = ArmGrpPrev8
  succ ArmGrpPrev8 = ArmGrpFpvmlx
  succ ArmGrpFpvmlx = ArmGrpMulops
  succ ArmGrpMulops = ArmGrpCrc
  succ ArmGrpCrc = ArmGrpDpvfp
  succ ArmGrpDpvfp = ArmGrpV6m
  succ ArmGrpV6m = ArmGrpVirtualization
  succ ArmGrpVirtualization = ArmGrpEnding
  succ ArmGrpEnding = error "ArmInsnGroup.succ: ArmGrpEnding has no successor"

  pred ArmGrpJump = ArmGrpInvalid
  pred ArmGrpCall = ArmGrpJump
  pred ArmGrpInt = ArmGrpCall
  pred ArmGrpPrivilege = ArmGrpInt
  pred ArmGrpBranchRelative = ArmGrpPrivilege
  pred ArmGrpCrypto = ArmGrpBranchRelative
  pred ArmGrpDatabarrier = ArmGrpCrypto
  pred ArmGrpDivide = ArmGrpDatabarrier
  pred ArmGrpFparmv8 = ArmGrpDivide
  pred ArmGrpMultpro = ArmGrpFparmv8
  pred ArmGrpNeon = ArmGrpMultpro
  pred ArmGrpT2extractpack = ArmGrpNeon
  pred ArmGrpThumb2dsp = ArmGrpT2extractpack
  pred ArmGrpTrustzone = ArmGrpThumb2dsp
  pred ArmGrpV4t = ArmGrpTrustzone
  pred ArmGrpV5t = ArmGrpV4t
  pred ArmGrpV5te = ArmGrpV5t
  pred ArmGrpV6 = ArmGrpV5te
  pred ArmGrpV6t2 = ArmGrpV6
  pred ArmGrpV7 = ArmGrpV6t2
  pred ArmGrpV8 = ArmGrpV7
  pred ArmGrpVfp2 = ArmGrpV8
  pred ArmGrpVfp3 = ArmGrpVfp2
  pred ArmGrpVfp4 = ArmGrpVfp3
  pred ArmGrpArm = ArmGrpVfp4
  pred ArmGrpMclass = ArmGrpArm
  pred ArmGrpNotmclass = ArmGrpMclass
  pred ArmGrpThumb = ArmGrpNotmclass
  pred ArmGrpThumb1only = ArmGrpThumb
  pred ArmGrpThumb2 = ArmGrpThumb1only
  pred ArmGrpPrev8 = ArmGrpThumb2
  pred ArmGrpFpvmlx = ArmGrpPrev8
  pred ArmGrpMulops = ArmGrpFpvmlx
  pred ArmGrpCrc = ArmGrpMulops
  pred ArmGrpDpvfp = ArmGrpCrc
  pred ArmGrpV6m = ArmGrpDpvfp
  pred ArmGrpVirtualization = ArmGrpV6m
  pred ArmGrpEnding = ArmGrpVirtualization
  pred ArmGrpInvalid = error "ArmInsnGroup.pred: ArmGrpInvalid has no predecessor"

  enumFromTo from to = go from
    where
      end = fromEnum to
      go v = case compare (fromEnum v) end of
                 LT -> v : go (succ v)
                 EQ -> [v]
                 GT -> []

  enumFrom from = enumFromTo from ArmGrpEnding

  fromEnum ArmGrpInvalid = 0
  fromEnum ArmGrpJump = 1
  fromEnum ArmGrpCall = 2
  fromEnum ArmGrpInt = 4
  fromEnum ArmGrpPrivilege = 6
  fromEnum ArmGrpBranchRelative = 7
  fromEnum ArmGrpCrypto = 128
  fromEnum ArmGrpDatabarrier = 129
  fromEnum ArmGrpDivide = 130
  fromEnum ArmGrpFparmv8 = 131
  fromEnum ArmGrpMultpro = 132
  fromEnum ArmGrpNeon = 133
  fromEnum ArmGrpT2extractpack = 134
  fromEnum ArmGrpThumb2dsp = 135
  fromEnum ArmGrpTrustzone = 136
  fromEnum ArmGrpV4t = 137
  fromEnum ArmGrpV5t = 138
  fromEnum ArmGrpV5te = 139
  fromEnum ArmGrpV6 = 140
  fromEnum ArmGrpV6t2 = 141
  fromEnum ArmGrpV7 = 142
  fromEnum ArmGrpV8 = 143
  fromEnum ArmGrpVfp2 = 144
  fromEnum ArmGrpVfp3 = 145
  fromEnum ArmGrpVfp4 = 146
  fromEnum ArmGrpArm = 147
  fromEnum ArmGrpMclass = 148
  fromEnum ArmGrpNotmclass = 149
  fromEnum ArmGrpThumb = 150
  fromEnum ArmGrpThumb1only = 151
  fromEnum ArmGrpThumb2 = 152
  fromEnum ArmGrpPrev8 = 153
  fromEnum ArmGrpFpvmlx = 154
  fromEnum ArmGrpMulops = 155
  fromEnum ArmGrpCrc = 156
  fromEnum ArmGrpDpvfp = 157
  fromEnum ArmGrpV6m = 158
  fromEnum ArmGrpVirtualization = 159
  fromEnum ArmGrpEnding = 160

  toEnum 0 = ArmGrpInvalid
  toEnum 1 = ArmGrpJump
  toEnum 2 = ArmGrpCall
  toEnum 4 = ArmGrpInt
  toEnum 6 = ArmGrpPrivilege
  toEnum 7 = ArmGrpBranchRelative
  toEnum 128 = ArmGrpCrypto
  toEnum 129 = ArmGrpDatabarrier
  toEnum 130 = ArmGrpDivide
  toEnum 131 = ArmGrpFparmv8
  toEnum 132 = ArmGrpMultpro
  toEnum 133 = ArmGrpNeon
  toEnum 134 = ArmGrpT2extractpack
  toEnum 135 = ArmGrpThumb2dsp
  toEnum 136 = ArmGrpTrustzone
  toEnum 137 = ArmGrpV4t
  toEnum 138 = ArmGrpV5t
  toEnum 139 = ArmGrpV5te
  toEnum 140 = ArmGrpV6
  toEnum 141 = ArmGrpV6t2
  toEnum 142 = ArmGrpV7
  toEnum 143 = ArmGrpV8
  toEnum 144 = ArmGrpVfp2
  toEnum 145 = ArmGrpVfp3
  toEnum 146 = ArmGrpVfp4
  toEnum 147 = ArmGrpArm
  toEnum 148 = ArmGrpMclass
  toEnum 149 = ArmGrpNotmclass
  toEnum 150 = ArmGrpThumb
  toEnum 151 = ArmGrpThumb1only
  toEnum 152 = ArmGrpThumb2
  toEnum 153 = ArmGrpPrev8
  toEnum 154 = ArmGrpFpvmlx
  toEnum 155 = ArmGrpMulops
  toEnum 156 = ArmGrpCrc
  toEnum 157 = ArmGrpDpvfp
  toEnum 158 = ArmGrpV6m
  toEnum 159 = ArmGrpVirtualization
  toEnum 160 = ArmGrpEnding
  toEnum unmatched = error ("ArmInsnGroup.toEnum: Cannot match " ++ show unmatched)

{-# LINE 228 "src/Hapstone/Internal/Arm.chs" #-}