module Hapstone.Internal.M68K where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Storable as C2HSImp
import Foreign
import Foreign.C.Types
data M68KReg = M68kRegInvalid
| M68kRegD0
| M68kRegD1
| M68kRegD2
| M68kRegD3
| M68kRegD4
| M68kRegD5
| M68kRegD6
| M68kRegD7
| M68kRegA0
| M68kRegA1
| M68kRegA2
| M68kRegA3
| M68kRegA4
| M68kRegA5
| M68kRegA6
| M68kRegA7
| M68kRegFp0
| M68kRegFp1
| M68kRegFp2
| M68kRegFp3
| M68kRegFp4
| M68kRegFp5
| M68kRegFp6
| M68kRegFp7
| M68kRegPc
| M68kRegSr
| M68kRegCcr
| M68kRegSfc
| M68kRegDfc
| M68kRegUsp
| M68kRegVbr
| M68kRegCacr
| M68kRegCaar
| M68kRegMsp
| M68kRegIsp
| M68kRegTc
| M68kRegItt0
| M68kRegItt1
| M68kRegDtt0
| M68kRegDtt1
| M68kRegMmusr
| M68kRegUrp
| M68kRegSrp
| M68kRegFpcr
| M68kRegFpsr
| M68kRegFpiar
| M68kRegEnding
deriving (Show,Eq,Bounded)
instance Enum M68KReg where
succ M68kRegInvalid = M68kRegD0
succ M68kRegD0 = M68kRegD1
succ M68kRegD1 = M68kRegD2
succ M68kRegD2 = M68kRegD3
succ M68kRegD3 = M68kRegD4
succ M68kRegD4 = M68kRegD5
succ M68kRegD5 = M68kRegD6
succ M68kRegD6 = M68kRegD7
succ M68kRegD7 = M68kRegA0
succ M68kRegA0 = M68kRegA1
succ M68kRegA1 = M68kRegA2
succ M68kRegA2 = M68kRegA3
succ M68kRegA3 = M68kRegA4
succ M68kRegA4 = M68kRegA5
succ M68kRegA5 = M68kRegA6
succ M68kRegA6 = M68kRegA7
succ M68kRegA7 = M68kRegFp0
succ M68kRegFp0 = M68kRegFp1
succ M68kRegFp1 = M68kRegFp2
succ M68kRegFp2 = M68kRegFp3
succ M68kRegFp3 = M68kRegFp4
succ M68kRegFp4 = M68kRegFp5
succ M68kRegFp5 = M68kRegFp6
succ M68kRegFp6 = M68kRegFp7
succ M68kRegFp7 = M68kRegPc
succ M68kRegPc = M68kRegSr
succ M68kRegSr = M68kRegCcr
succ M68kRegCcr = M68kRegSfc
succ M68kRegSfc = M68kRegDfc
succ M68kRegDfc = M68kRegUsp
succ M68kRegUsp = M68kRegVbr
succ M68kRegVbr = M68kRegCacr
succ M68kRegCacr = M68kRegCaar
succ M68kRegCaar = M68kRegMsp
succ M68kRegMsp = M68kRegIsp
succ M68kRegIsp = M68kRegTc
succ M68kRegTc = M68kRegItt0
succ M68kRegItt0 = M68kRegItt1
succ M68kRegItt1 = M68kRegDtt0
succ M68kRegDtt0 = M68kRegDtt1
succ M68kRegDtt1 = M68kRegMmusr
succ M68kRegMmusr = M68kRegUrp
succ M68kRegUrp = M68kRegSrp
succ M68kRegSrp = M68kRegFpcr
succ M68kRegFpcr = M68kRegFpsr
succ M68kRegFpsr = M68kRegFpiar
succ M68kRegFpiar = M68kRegEnding
succ M68kRegEnding = error "M68KReg.succ: M68kRegEnding has no successor"
pred M68kRegD0 = M68kRegInvalid
pred M68kRegD1 = M68kRegD0
pred M68kRegD2 = M68kRegD1
pred M68kRegD3 = M68kRegD2
pred M68kRegD4 = M68kRegD3
pred M68kRegD5 = M68kRegD4
pred M68kRegD6 = M68kRegD5
pred M68kRegD7 = M68kRegD6
pred M68kRegA0 = M68kRegD7
pred M68kRegA1 = M68kRegA0
pred M68kRegA2 = M68kRegA1
pred M68kRegA3 = M68kRegA2
pred M68kRegA4 = M68kRegA3
pred M68kRegA5 = M68kRegA4
pred M68kRegA6 = M68kRegA5
pred M68kRegA7 = M68kRegA6
pred M68kRegFp0 = M68kRegA7
pred M68kRegFp1 = M68kRegFp0
pred M68kRegFp2 = M68kRegFp1
pred M68kRegFp3 = M68kRegFp2
pred M68kRegFp4 = M68kRegFp3
pred M68kRegFp5 = M68kRegFp4
pred M68kRegFp6 = M68kRegFp5
pred M68kRegFp7 = M68kRegFp6
pred M68kRegPc = M68kRegFp7
pred M68kRegSr = M68kRegPc
pred M68kRegCcr = M68kRegSr
pred M68kRegSfc = M68kRegCcr
pred M68kRegDfc = M68kRegSfc
pred M68kRegUsp = M68kRegDfc
pred M68kRegVbr = M68kRegUsp
pred M68kRegCacr = M68kRegVbr
pred M68kRegCaar = M68kRegCacr
pred M68kRegMsp = M68kRegCaar
pred M68kRegIsp = M68kRegMsp
pred M68kRegTc = M68kRegIsp
pred M68kRegItt0 = M68kRegTc
pred M68kRegItt1 = M68kRegItt0
pred M68kRegDtt0 = M68kRegItt1
pred M68kRegDtt1 = M68kRegDtt0
pred M68kRegMmusr = M68kRegDtt1
pred M68kRegUrp = M68kRegMmusr
pred M68kRegSrp = M68kRegUrp
pred M68kRegFpcr = M68kRegSrp
pred M68kRegFpsr = M68kRegFpcr
pred M68kRegFpiar = M68kRegFpsr
pred M68kRegEnding = M68kRegFpiar
pred M68kRegInvalid = error "M68KReg.pred: M68kRegInvalid 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 M68kRegEnding
fromEnum M68kRegInvalid = 0
fromEnum M68kRegD0 = 1
fromEnum M68kRegD1 = 2
fromEnum M68kRegD2 = 3
fromEnum M68kRegD3 = 4
fromEnum M68kRegD4 = 5
fromEnum M68kRegD5 = 6
fromEnum M68kRegD6 = 7
fromEnum M68kRegD7 = 8
fromEnum M68kRegA0 = 9
fromEnum M68kRegA1 = 10
fromEnum M68kRegA2 = 11
fromEnum M68kRegA3 = 12
fromEnum M68kRegA4 = 13
fromEnum M68kRegA5 = 14
fromEnum M68kRegA6 = 15
fromEnum M68kRegA7 = 16
fromEnum M68kRegFp0 = 17
fromEnum M68kRegFp1 = 18
fromEnum M68kRegFp2 = 19
fromEnum M68kRegFp3 = 20
fromEnum M68kRegFp4 = 21
fromEnum M68kRegFp5 = 22
fromEnum M68kRegFp6 = 23
fromEnum M68kRegFp7 = 24
fromEnum M68kRegPc = 25
fromEnum M68kRegSr = 26
fromEnum M68kRegCcr = 27
fromEnum M68kRegSfc = 28
fromEnum M68kRegDfc = 29
fromEnum M68kRegUsp = 30
fromEnum M68kRegVbr = 31
fromEnum M68kRegCacr = 32
fromEnum M68kRegCaar = 33
fromEnum M68kRegMsp = 34
fromEnum M68kRegIsp = 35
fromEnum M68kRegTc = 36
fromEnum M68kRegItt0 = 37
fromEnum M68kRegItt1 = 38
fromEnum M68kRegDtt0 = 39
fromEnum M68kRegDtt1 = 40
fromEnum M68kRegMmusr = 41
fromEnum M68kRegUrp = 42
fromEnum M68kRegSrp = 43
fromEnum M68kRegFpcr = 44
fromEnum M68kRegFpsr = 45
fromEnum M68kRegFpiar = 46
fromEnum M68kRegEnding = 47
toEnum 0 = M68kRegInvalid
toEnum 1 = M68kRegD0
toEnum 2 = M68kRegD1
toEnum 3 = M68kRegD2
toEnum 4 = M68kRegD3
toEnum 5 = M68kRegD4
toEnum 6 = M68kRegD5
toEnum 7 = M68kRegD6
toEnum 8 = M68kRegD7
toEnum 9 = M68kRegA0
toEnum 10 = M68kRegA1
toEnum 11 = M68kRegA2
toEnum 12 = M68kRegA3
toEnum 13 = M68kRegA4
toEnum 14 = M68kRegA5
toEnum 15 = M68kRegA6
toEnum 16 = M68kRegA7
toEnum 17 = M68kRegFp0
toEnum 18 = M68kRegFp1
toEnum 19 = M68kRegFp2
toEnum 20 = M68kRegFp3
toEnum 21 = M68kRegFp4
toEnum 22 = M68kRegFp5
toEnum 23 = M68kRegFp6
toEnum 24 = M68kRegFp7
toEnum 25 = M68kRegPc
toEnum 26 = M68kRegSr
toEnum 27 = M68kRegCcr
toEnum 28 = M68kRegSfc
toEnum 29 = M68kRegDfc
toEnum 30 = M68kRegUsp
toEnum 31 = M68kRegVbr
toEnum 32 = M68kRegCacr
toEnum 33 = M68kRegCaar
toEnum 34 = M68kRegMsp
toEnum 35 = M68kRegIsp
toEnum 36 = M68kRegTc
toEnum 37 = M68kRegItt0
toEnum 38 = M68kRegItt1
toEnum 39 = M68kRegDtt0
toEnum 40 = M68kRegDtt1
toEnum 41 = M68kRegMmusr
toEnum 42 = M68kRegUrp
toEnum 43 = M68kRegSrp
toEnum 44 = M68kRegFpcr
toEnum 45 = M68kRegFpsr
toEnum 46 = M68kRegFpiar
toEnum 47 = M68kRegEnding
toEnum unmatched = error ("M68KReg.toEnum: Cannot match " ++ show unmatched)
data M68KAddressMode = M68kAmNone
| M68kAmRegDirectData
| M68kAmRegDirectAddr
| M68kAmRegiAddr
| M68kAmRegiAddrPostInc
| M68kAmRegiAddrPreDec
| M68kAmRegiAddrDisp
| M68kAmAregiIndex8BitDisp
| M68kAmAregiIndexBaseDisp
| M68kAmMemiPostIndex
| M68kAmMemiPreIndex
| M68kAmPciDisp
| M68kAmPciIndex8BitDisp
| M68kAmPciIndexBaseDisp
| M68kAmPcMemiPostIndex
| M68kAmPcMemiPreIndex
| M68kAmAbsoluteDataShort
| M68kAmAbsoluteDataLong
| M68kAmImmidiate
deriving (Show,Eq,Bounded)
instance Enum M68KAddressMode where
succ M68kAmNone = M68kAmRegDirectData
succ M68kAmRegDirectData = M68kAmRegDirectAddr
succ M68kAmRegDirectAddr = M68kAmRegiAddr
succ M68kAmRegiAddr = M68kAmRegiAddrPostInc
succ M68kAmRegiAddrPostInc = M68kAmRegiAddrPreDec
succ M68kAmRegiAddrPreDec = M68kAmRegiAddrDisp
succ M68kAmRegiAddrDisp = M68kAmAregiIndex8BitDisp
succ M68kAmAregiIndex8BitDisp = M68kAmAregiIndexBaseDisp
succ M68kAmAregiIndexBaseDisp = M68kAmMemiPostIndex
succ M68kAmMemiPostIndex = M68kAmMemiPreIndex
succ M68kAmMemiPreIndex = M68kAmPciDisp
succ M68kAmPciDisp = M68kAmPciIndex8BitDisp
succ M68kAmPciIndex8BitDisp = M68kAmPciIndexBaseDisp
succ M68kAmPciIndexBaseDisp = M68kAmPcMemiPostIndex
succ M68kAmPcMemiPostIndex = M68kAmPcMemiPreIndex
succ M68kAmPcMemiPreIndex = M68kAmAbsoluteDataShort
succ M68kAmAbsoluteDataShort = M68kAmAbsoluteDataLong
succ M68kAmAbsoluteDataLong = M68kAmImmidiate
succ M68kAmImmidiate = error "M68KAddressMode.succ: M68kAmImmidiate has no successor"
pred M68kAmRegDirectData = M68kAmNone
pred M68kAmRegDirectAddr = M68kAmRegDirectData
pred M68kAmRegiAddr = M68kAmRegDirectAddr
pred M68kAmRegiAddrPostInc = M68kAmRegiAddr
pred M68kAmRegiAddrPreDec = M68kAmRegiAddrPostInc
pred M68kAmRegiAddrDisp = M68kAmRegiAddrPreDec
pred M68kAmAregiIndex8BitDisp = M68kAmRegiAddrDisp
pred M68kAmAregiIndexBaseDisp = M68kAmAregiIndex8BitDisp
pred M68kAmMemiPostIndex = M68kAmAregiIndexBaseDisp
pred M68kAmMemiPreIndex = M68kAmMemiPostIndex
pred M68kAmPciDisp = M68kAmMemiPreIndex
pred M68kAmPciIndex8BitDisp = M68kAmPciDisp
pred M68kAmPciIndexBaseDisp = M68kAmPciIndex8BitDisp
pred M68kAmPcMemiPostIndex = M68kAmPciIndexBaseDisp
pred M68kAmPcMemiPreIndex = M68kAmPcMemiPostIndex
pred M68kAmAbsoluteDataShort = M68kAmPcMemiPreIndex
pred M68kAmAbsoluteDataLong = M68kAmAbsoluteDataShort
pred M68kAmImmidiate = M68kAmAbsoluteDataLong
pred M68kAmNone = error "M68KAddressMode.pred: M68kAmNone 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 M68kAmImmidiate
fromEnum M68kAmNone = 0
fromEnum M68kAmRegDirectData = 1
fromEnum M68kAmRegDirectAddr = 2
fromEnum M68kAmRegiAddr = 3
fromEnum M68kAmRegiAddrPostInc = 4
fromEnum M68kAmRegiAddrPreDec = 5
fromEnum M68kAmRegiAddrDisp = 6
fromEnum M68kAmAregiIndex8BitDisp = 7
fromEnum M68kAmAregiIndexBaseDisp = 8
fromEnum M68kAmMemiPostIndex = 9
fromEnum M68kAmMemiPreIndex = 10
fromEnum M68kAmPciDisp = 11
fromEnum M68kAmPciIndex8BitDisp = 12
fromEnum M68kAmPciIndexBaseDisp = 13
fromEnum M68kAmPcMemiPostIndex = 14
fromEnum M68kAmPcMemiPreIndex = 15
fromEnum M68kAmAbsoluteDataShort = 16
fromEnum M68kAmAbsoluteDataLong = 17
fromEnum M68kAmImmidiate = 18
toEnum 0 = M68kAmNone
toEnum 1 = M68kAmRegDirectData
toEnum 2 = M68kAmRegDirectAddr
toEnum 3 = M68kAmRegiAddr
toEnum 4 = M68kAmRegiAddrPostInc
toEnum 5 = M68kAmRegiAddrPreDec
toEnum 6 = M68kAmRegiAddrDisp
toEnum 7 = M68kAmAregiIndex8BitDisp
toEnum 8 = M68kAmAregiIndexBaseDisp
toEnum 9 = M68kAmMemiPostIndex
toEnum 10 = M68kAmMemiPreIndex
toEnum 11 = M68kAmPciDisp
toEnum 12 = M68kAmPciIndex8BitDisp
toEnum 13 = M68kAmPciIndexBaseDisp
toEnum 14 = M68kAmPcMemiPostIndex
toEnum 15 = M68kAmPcMemiPreIndex
toEnum 16 = M68kAmAbsoluteDataShort
toEnum 17 = M68kAmAbsoluteDataLong
toEnum 18 = M68kAmImmidiate
toEnum unmatched = error ("M68KAddressMode.toEnum: Cannot match " ++ show unmatched)
data M68KOpType = M68kOpInvalid
| M68kOpReg
| M68kOpImm
| M68kOpMem
| M68kOpFpSingle
| M68kOpFpDouble
| M68kOpRegBits
| M68kOpRegPair
deriving (Show,Eq,Bounded)
instance Enum M68KOpType where
succ M68kOpInvalid = M68kOpReg
succ M68kOpReg = M68kOpImm
succ M68kOpImm = M68kOpMem
succ M68kOpMem = M68kOpFpSingle
succ M68kOpFpSingle = M68kOpFpDouble
succ M68kOpFpDouble = M68kOpRegBits
succ M68kOpRegBits = M68kOpRegPair
succ M68kOpRegPair = error "M68KOpType.succ: M68kOpRegPair has no successor"
pred M68kOpReg = M68kOpInvalid
pred M68kOpImm = M68kOpReg
pred M68kOpMem = M68kOpImm
pred M68kOpFpSingle = M68kOpMem
pred M68kOpFpDouble = M68kOpFpSingle
pred M68kOpRegBits = M68kOpFpDouble
pred M68kOpRegPair = M68kOpRegBits
pred M68kOpInvalid = error "M68KOpType.pred: M68kOpInvalid 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 M68kOpRegPair
fromEnum M68kOpInvalid = 0
fromEnum M68kOpReg = 1
fromEnum M68kOpImm = 2
fromEnum M68kOpMem = 3
fromEnum M68kOpFpSingle = 4
fromEnum M68kOpFpDouble = 5
fromEnum M68kOpRegBits = 6
fromEnum M68kOpRegPair = 7
toEnum 0 = M68kOpInvalid
toEnum 1 = M68kOpReg
toEnum 2 = M68kOpImm
toEnum 3 = M68kOpMem
toEnum 4 = M68kOpFpSingle
toEnum 5 = M68kOpFpDouble
toEnum 6 = M68kOpRegBits
toEnum 7 = M68kOpRegPair
toEnum unmatched = error ("M68KOpType.toEnum: Cannot match " ++ show unmatched)
data M68KOpMemStruct = M68KOpMemStruct
{ baseReg :: M68KReg
, indexReg :: M68KReg
, inBaseReg :: M68KReg
, inDisp :: Word32
, outDisp :: Word32
, disp :: Word16
, scale :: Word8
, bitfield :: Word8
, width :: Word8
, offset :: Word8
, indexSize :: Word8
} deriving (Show, Eq)
instance Storable M68KOpMemStruct where
sizeOf _ = 28
alignment _ = 4
peek p = M68KOpMemStruct
<$> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p)
<*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CInt}) p)
<*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CUInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CUInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 20 :: IO C2HSImp.CUShort}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 22 :: IO C2HSImp.CUChar}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 23 :: IO C2HSImp.CUChar}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 24 :: IO C2HSImp.CUChar}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 25 :: IO C2HSImp.CUChar}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 26 :: IO C2HSImp.CUChar}) p)
poke p (M68KOpMemStruct bR iR iBR iD oD d s b w o i) = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum bR)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum iR)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) p (fromIntegral $ fromEnum iBR)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CUInt)}) p (fromIntegral iD)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: C2HSImp.CUInt)}) p (fromIntegral oD)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 20 (val :: C2HSImp.CUShort)}) p (fromIntegral d)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 22 (val :: C2HSImp.CUChar)}) p (fromIntegral s)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 23 (val :: C2HSImp.CUChar)}) p (fromIntegral b)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 24 (val :: C2HSImp.CUChar)}) p (fromIntegral w)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 25 (val :: C2HSImp.CUChar)}) p (fromIntegral o)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 26 (val :: C2HSImp.CUChar)}) p (fromIntegral i)
data CsM68KOpValue
= Imm Word64
| Dimm Double
| Simm Float
| Reg M68KReg
| Mem M68KOpMemStruct
| RegBits Word32
| RegPair M68KReg M68KReg
| Undefined
deriving (Show, Eq)
data CsM68KOp = CsM68KOp
{ value :: CsM68KOpValue
, address_mode :: M68KAddressMode
} deriving (Show, Eq)
instance Storable CsM68KOp where
sizeOf _ = 40
alignment _ = 8
peek p = CsM68KOp
<$> do
t <- fromIntegral <$> (peekByteOff p 28 :: IO Int32)
let bP = castPtr p
case toEnum t of
M68kOpImm -> Imm <$> (peek bP :: IO Word64)
M68kOpFpDouble -> Dimm <$> peek bP
M68kOpFpSingle -> Simm <$> peek bP
M68kOpReg -> (Reg . toEnum . fromIntegral) <$>
(peek bP :: IO Int32)
M68kOpMem -> Mem <$> (peek bP :: IO M68KOpMemStruct)
M68kOpRegBits -> RegBits <$> peek bP
M68kOpRegPair -> RegPair <$>
((toEnum . fromIntegral) <$>
(peek bP :: IO Int32)) <*>
((toEnum . fromIntegral) <$>
(peek (plusPtr bP 4) :: IO Int32))
_ -> return Undefined
<*> ((toEnum . fromIntegral) <$> (peekByteOff p 32 :: IO Int32))
poke p (CsM68KOp v a) = do
let bP = castPtr p
setType t = pokeByteOff p 28 (fromIntegral $ fromEnum t :: Int32)
case v of
Imm i -> do
poke bP i
setType M68kOpImm
Dimm d -> do
poke bP d
setType M68kOpFpDouble
Simm s -> do
poke bP s
setType M68kOpFpSingle
Reg r -> do
poke bP (fromIntegral $ fromEnum r :: Int32)
setType M68kOpReg
Mem m -> do
poke bP m
setType M68kOpMem
RegBits b -> do
poke bP b
setType M68kOpRegBits
RegPair r0 r1 -> do
poke bP (fromIntegral $ fromEnum r0 :: Int32)
poke (plusPtr bP 4) (fromIntegral $ fromEnum r1 :: Int32)
setType M68kOpRegPair
_ -> setType M68kOpInvalid
pokeByteOff p 32 (fromIntegral $ fromEnum a :: Int32)
data M68KCpuSize = M68kCpuSizeNone
| M68kCpuSizeByte
| M68kCpuSizeWord
| M68kCpuSizeLong
deriving (Show,Eq,Bounded)
instance Enum M68KCpuSize where
succ M68kCpuSizeNone = M68kCpuSizeByte
succ M68kCpuSizeByte = M68kCpuSizeWord
succ M68kCpuSizeWord = M68kCpuSizeLong
succ M68kCpuSizeLong = error "M68KCpuSize.succ: M68kCpuSizeLong has no successor"
pred M68kCpuSizeByte = M68kCpuSizeNone
pred M68kCpuSizeWord = M68kCpuSizeByte
pred M68kCpuSizeLong = M68kCpuSizeWord
pred M68kCpuSizeNone = error "M68KCpuSize.pred: M68kCpuSizeNone 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 M68kCpuSizeLong
fromEnum M68kCpuSizeNone = 0
fromEnum M68kCpuSizeByte = 1
fromEnum M68kCpuSizeWord = 2
fromEnum M68kCpuSizeLong = 4
toEnum 0 = M68kCpuSizeNone
toEnum 1 = M68kCpuSizeByte
toEnum 2 = M68kCpuSizeWord
toEnum 4 = M68kCpuSizeLong
toEnum unmatched = error ("M68KCpuSize.toEnum: Cannot match " ++ show unmatched)
data M68KFpuSize = M68kFpuSizeNone
| M68kFpuSizeSingle
| M68kFpuSizeDouble
| M68kFpuSizeExtended
deriving (Show,Eq,Bounded)
instance Enum M68KFpuSize where
succ M68kFpuSizeNone = M68kFpuSizeSingle
succ M68kFpuSizeSingle = M68kFpuSizeDouble
succ M68kFpuSizeDouble = M68kFpuSizeExtended
succ M68kFpuSizeExtended = error "M68KFpuSize.succ: M68kFpuSizeExtended has no successor"
pred M68kFpuSizeSingle = M68kFpuSizeNone
pred M68kFpuSizeDouble = M68kFpuSizeSingle
pred M68kFpuSizeExtended = M68kFpuSizeDouble
pred M68kFpuSizeNone = error "M68KFpuSize.pred: M68kFpuSizeNone 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 M68kFpuSizeExtended
fromEnum M68kFpuSizeNone = 0
fromEnum M68kFpuSizeSingle = 4
fromEnum M68kFpuSizeDouble = 8
fromEnum M68kFpuSizeExtended = 12
toEnum 0 = M68kFpuSizeNone
toEnum 4 = M68kFpuSizeSingle
toEnum 8 = M68kFpuSizeDouble
toEnum 12 = M68kFpuSizeExtended
toEnum unmatched = error ("M68KFpuSize.toEnum: Cannot match " ++ show unmatched)
data M68KSizeType = M68kSizeTypeInvalid
| M68kSizeTypeCpu
| M68kSizeTypeFpu
deriving (Show,Eq,Bounded)
instance Enum M68KSizeType where
succ M68kSizeTypeInvalid = M68kSizeTypeCpu
succ M68kSizeTypeCpu = M68kSizeTypeFpu
succ M68kSizeTypeFpu = error "M68KSizeType.succ: M68kSizeTypeFpu has no successor"
pred M68kSizeTypeCpu = M68kSizeTypeInvalid
pred M68kSizeTypeFpu = M68kSizeTypeCpu
pred M68kSizeTypeInvalid = error "M68KSizeType.pred: M68kSizeTypeInvalid 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 M68kSizeTypeFpu
fromEnum M68kSizeTypeInvalid = 0
fromEnum M68kSizeTypeCpu = 1
fromEnum M68kSizeTypeFpu = 2
toEnum 0 = M68kSizeTypeInvalid
toEnum 1 = M68kSizeTypeCpu
toEnum 2 = M68kSizeTypeFpu
toEnum unmatched = error ("M68KSizeType.toEnum: Cannot match " ++ show unmatched)
data M68KOpSize
= Cpu M68KCpuSize
| Fpu M68KFpuSize
| UnknownSize
deriving (Show, Eq)
instance Storable M68KOpSize where
sizeOf _ = 8
alignment _ = 4
peek p = do
t <- fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CInt}) p
case toEnum t of
M68kSizeTypeCpu -> (Cpu . toEnum . fromIntegral) <$>
(peekByteOff p 4 :: IO Int32)
M68kSizeTypeFpu -> (Fpu . toEnum . fromIntegral) <$>
(peekByteOff p 4 :: IO Int32)
M68kSizeTypeInvalid -> pure UnknownSize
poke p (Cpu c) = do
poke (plusPtr p 4) (fromIntegral $ fromEnum c :: Int32)
poke (castPtr p) (fromIntegral $ fromEnum M68kSizeTypeCpu :: Int32)
poke p (Fpu f) = do
poke (castPtr p) (fromIntegral $ fromEnum M68kSizeTypeFpu :: Int32)
poke (plusPtr p 4) (fromIntegral $ fromEnum f :: Int32)
poke p UnknownSize = poke (castPtr p)
(fromIntegral $ fromEnum M68kSizeTypeInvalid :: Int32)
data CsM68K = CsM68K
{ operands :: [CsM68KOp]
, op_size :: M68KOpSize
} deriving (Show, Eq)
instance Storable CsM68K where
sizeOf _ = 172
alignment _ = 8
peek p = CsM68K
<$> do num <- fromIntegral <$> (peek (plusPtr p 168) :: IO Word8)
peekArray num (castPtr p)
<*> (peek (plusPtr p 160) :: IO M68KOpSize)
poke p (CsM68K o s) = do
poke (plusPtr p 160) s
poke (plusPtr p 168) (fromIntegral $ length o :: Word8)
if length o > 4
then error "operands overflew 4 elements"
else pokeArray (castPtr p) o
data M68KInsn = M68kInsInvalid
| M68kInsAbcd
| M68kInsAdd
| M68kInsAdda
| M68kInsAddi
| M68kInsAddq
| M68kInsAddx
| M68kInsAnd
| M68kInsAndi
| M68kInsAsl
| M68kInsAsr
| M68kInsBhs
| M68kInsBlo
| M68kInsBhi
| M68kInsBls
| M68kInsBcc
| M68kInsBcs
| M68kInsBne
| M68kInsBeq
| M68kInsBvc
| M68kInsBvs
| M68kInsBpl
| M68kInsBmi
| M68kInsBge
| M68kInsBlt
| M68kInsBgt
| M68kInsBle
| M68kInsBra
| M68kInsBsr
| M68kInsBchg
| M68kInsBclr
| M68kInsBset
| M68kInsBtst
| M68kInsBfchg
| M68kInsBfclr
| M68kInsBfexts
| M68kInsBfextu
| M68kInsBfffo
| M68kInsBfins
| M68kInsBfset
| M68kInsBftst
| M68kInsBkpt
| M68kInsCallm
| M68kInsCas
| M68kInsCas2
| M68kInsChk
| M68kInsChk2
| M68kInsClr
| M68kInsCmp
| M68kInsCmpa
| M68kInsCmpi
| M68kInsCmpm
| M68kInsCmp2
| M68kInsCinvl
| M68kInsCinvp
| M68kInsCinva
| M68kInsCpushl
| M68kInsCpushp
| M68kInsCpusha
| M68kInsDbt
| M68kInsDbf
| M68kInsDbhi
| M68kInsDbls
| M68kInsDbcc
| M68kInsDbcs
| M68kInsDbne
| M68kInsDbeq
| M68kInsDbvc
| M68kInsDbvs
| M68kInsDbpl
| M68kInsDbmi
| M68kInsDbge
| M68kInsDblt
| M68kInsDbgt
| M68kInsDble
| M68kInsDbra
| M68kInsDivs
| M68kInsDivsl
| M68kInsDivu
| M68kInsDivul
| M68kInsEor
| M68kInsEori
| M68kInsExg
| M68kInsExt
| M68kInsExtb
| M68kInsFabs
| M68kInsFsabs
| M68kInsFdabs
| M68kInsFacos
| M68kInsFadd
| M68kInsFsadd
| M68kInsFdadd
| M68kInsFasin
| M68kInsFatan
| M68kInsFatanh
| M68kInsFbf
| M68kInsFbeq
| M68kInsFbogt
| M68kInsFboge
| M68kInsFbolt
| M68kInsFbole
| M68kInsFbogl
| M68kInsFbor
| M68kInsFbun
| M68kInsFbueq
| M68kInsFbugt
| M68kInsFbuge
| M68kInsFbult
| M68kInsFbule
| M68kInsFbne
| M68kInsFbt
| M68kInsFbsf
| M68kInsFbseq
| M68kInsFbgt
| M68kInsFbge
| M68kInsFblt
| M68kInsFble
| M68kInsFbgl
| M68kInsFbgle
| M68kInsFbngle
| M68kInsFbngl
| M68kInsFbnle
| M68kInsFbnlt
| M68kInsFbnge
| M68kInsFbngt
| M68kInsFbsne
| M68kInsFbst
| M68kInsFcmp
| M68kInsFcos
| M68kInsFcosh
| M68kInsFdbf
| M68kInsFdbeq
| M68kInsFdbogt
| M68kInsFdboge
| M68kInsFdbolt
| M68kInsFdbole
| M68kInsFdbogl
| M68kInsFdbor
| M68kInsFdbun
| M68kInsFdbueq
| M68kInsFdbugt
| M68kInsFdbuge
| M68kInsFdbult
| M68kInsFdbule
| M68kInsFdbne
| M68kInsFdbt
| M68kInsFdbsf
| M68kInsFdbseq
| M68kInsFdbgt
| M68kInsFdbge
| M68kInsFdblt
| M68kInsFdble
| M68kInsFdbgl
| M68kInsFdbgle
| M68kInsFdbngle
| M68kInsFdbngl
| M68kInsFdbnle
| M68kInsFdbnlt
| M68kInsFdbnge
| M68kInsFdbngt
| M68kInsFdbsne
| M68kInsFdbst
| M68kInsFdiv
| M68kInsFsdiv
| M68kInsFddiv
| M68kInsFetox
| M68kInsFetoxm1
| M68kInsFgetexp
| M68kInsFgetman
| M68kInsFint
| M68kInsFintrz
| M68kInsFlog10
| M68kInsFlog2
| M68kInsFlogn
| M68kInsFlognp1
| M68kInsFmod
| M68kInsFmove
| M68kInsFsmove
| M68kInsFdmove
| M68kInsFmovecr
| M68kInsFmovem
| M68kInsFmul
| M68kInsFsmul
| M68kInsFdmul
| M68kInsFneg
| M68kInsFsneg
| M68kInsFdneg
| M68kInsFnop
| M68kInsFrem
| M68kInsFrestore
| M68kInsFsave
| M68kInsFscale
| M68kInsFsgldiv
| M68kInsFsglmul
| M68kInsFsin
| M68kInsFsincos
| M68kInsFsinh
| M68kInsFsqrt
| M68kInsFssqrt
| M68kInsFdsqrt
| M68kInsFsf
| M68kInsFsbeq
| M68kInsFsogt
| M68kInsFsoge
| M68kInsFsolt
| M68kInsFsole
| M68kInsFsogl
| M68kInsFsor
| M68kInsFsun
| M68kInsFsueq
| M68kInsFsugt
| M68kInsFsuge
| M68kInsFsult
| M68kInsFsule
| M68kInsFsne
| M68kInsFst
| M68kInsFssf
| M68kInsFsseq
| M68kInsFsgt
| M68kInsFsge
| M68kInsFslt
| M68kInsFsle
| M68kInsFsgl
| M68kInsFsgle
| M68kInsFsngle
| M68kInsFsngl
| M68kInsFsnle
| M68kInsFsnlt
| M68kInsFsnge
| M68kInsFsngt
| M68kInsFssne
| M68kInsFsst
| M68kInsFsub
| M68kInsFssub
| M68kInsFdsub
| M68kInsFtan
| M68kInsFtanh
| M68kInsFtentox
| M68kInsFtrapf
| M68kInsFtrapeq
| M68kInsFtrapogt
| M68kInsFtrapoge
| M68kInsFtrapolt
| M68kInsFtrapole
| M68kInsFtrapogl
| M68kInsFtrapor
| M68kInsFtrapun
| M68kInsFtrapueq
| M68kInsFtrapugt
| M68kInsFtrapuge
| M68kInsFtrapult
| M68kInsFtrapule
| M68kInsFtrapne
| M68kInsFtrapt
| M68kInsFtrapsf
| M68kInsFtrapseq
| M68kInsFtrapgt
| M68kInsFtrapge
| M68kInsFtraplt
| M68kInsFtraple
| M68kInsFtrapgl
| M68kInsFtrapgle
| M68kInsFtrapngle
| M68kInsFtrapngl
| M68kInsFtrapnle
| M68kInsFtrapnlt
| M68kInsFtrapnge
| M68kInsFtrapngt
| M68kInsFtrapsne
| M68kInsFtrapst
| M68kInsFtst
| M68kInsFtwotox
| M68kInsHalt
| M68kInsIllegal
| M68kInsJmp
| M68kInsJsr
| M68kInsLea
| M68kInsLink
| M68kInsLpstop
| M68kInsLsl
| M68kInsLsr
| M68kInsMove
| M68kInsMovea
| M68kInsMovec
| M68kInsMovem
| M68kInsMovep
| M68kInsMoveq
| M68kInsMoves
| M68kInsMove16
| M68kInsMuls
| M68kInsMulu
| M68kInsNbcd
| M68kInsNeg
| M68kInsNegx
| M68kInsNop
| M68kInsNot
| M68kInsOr
| M68kInsOri
| M68kInsPack
| M68kInsPea
| M68kInsPflush
| M68kInsPflusha
| M68kInsPflushan
| M68kInsPflushn
| M68kInsPloadr
| M68kInsPloadw
| M68kInsPlpar
| M68kInsPlpaw
| M68kInsPmove
| M68kInsPmovefd
| M68kInsPtestr
| M68kInsPtestw
| M68kInsPulse
| M68kInsRems
| M68kInsRemu
| M68kInsReset
| M68kInsRol
| M68kInsRor
| M68kInsRoxl
| M68kInsRoxr
| M68kInsRtd
| M68kInsRte
| M68kInsRtm
| M68kInsRtr
| M68kInsRts
| M68kInsSbcd
| M68kInsSt
| M68kInsSf
| M68kInsShi
| M68kInsSls
| M68kInsScc
| M68kInsShs
| M68kInsScs
| M68kInsSlo
| M68kInsSne
| M68kInsSeq
| M68kInsSvc
| M68kInsSvs
| M68kInsSpl
| M68kInsSmi
| M68kInsSge
| M68kInsSlt
| M68kInsSgt
| M68kInsSle
| M68kInsStop
| M68kInsSub
| M68kInsSuba
| M68kInsSubi
| M68kInsSubq
| M68kInsSubx
| M68kInsSwap
| M68kInsTas
| M68kInsTrap
| M68kInsTrapv
| M68kInsTrapt
| M68kInsTrapf
| M68kInsTraphi
| M68kInsTrapls
| M68kInsTrapcc
| M68kInsTraphs
| M68kInsTrapcs
| M68kInsTraplo
| M68kInsTrapne
| M68kInsTrapeq
| M68kInsTrapvc
| M68kInsTrapvs
| M68kInsTrappl
| M68kInsTrapmi
| M68kInsTrapge
| M68kInsTraplt
| M68kInsTrapgt
| M68kInsTraple
| M68kInsTst
| M68kInsUnlk
| M68kInsUnpk
| M68kInsEnding
deriving (Show,Eq,Bounded)
instance Enum M68KInsn where
succ M68kInsInvalid = M68kInsAbcd
succ M68kInsAbcd = M68kInsAdd
succ M68kInsAdd = M68kInsAdda
succ M68kInsAdda = M68kInsAddi
succ M68kInsAddi = M68kInsAddq
succ M68kInsAddq = M68kInsAddx
succ M68kInsAddx = M68kInsAnd
succ M68kInsAnd = M68kInsAndi
succ M68kInsAndi = M68kInsAsl
succ M68kInsAsl = M68kInsAsr
succ M68kInsAsr = M68kInsBhs
succ M68kInsBhs = M68kInsBlo
succ M68kInsBlo = M68kInsBhi
succ M68kInsBhi = M68kInsBls
succ M68kInsBls = M68kInsBcc
succ M68kInsBcc = M68kInsBcs
succ M68kInsBcs = M68kInsBne
succ M68kInsBne = M68kInsBeq
succ M68kInsBeq = M68kInsBvc
succ M68kInsBvc = M68kInsBvs
succ M68kInsBvs = M68kInsBpl
succ M68kInsBpl = M68kInsBmi
succ M68kInsBmi = M68kInsBge
succ M68kInsBge = M68kInsBlt
succ M68kInsBlt = M68kInsBgt
succ M68kInsBgt = M68kInsBle
succ M68kInsBle = M68kInsBra
succ M68kInsBra = M68kInsBsr
succ M68kInsBsr = M68kInsBchg
succ M68kInsBchg = M68kInsBclr
succ M68kInsBclr = M68kInsBset
succ M68kInsBset = M68kInsBtst
succ M68kInsBtst = M68kInsBfchg
succ M68kInsBfchg = M68kInsBfclr
succ M68kInsBfclr = M68kInsBfexts
succ M68kInsBfexts = M68kInsBfextu
succ M68kInsBfextu = M68kInsBfffo
succ M68kInsBfffo = M68kInsBfins
succ M68kInsBfins = M68kInsBfset
succ M68kInsBfset = M68kInsBftst
succ M68kInsBftst = M68kInsBkpt
succ M68kInsBkpt = M68kInsCallm
succ M68kInsCallm = M68kInsCas
succ M68kInsCas = M68kInsCas2
succ M68kInsCas2 = M68kInsChk
succ M68kInsChk = M68kInsChk2
succ M68kInsChk2 = M68kInsClr
succ M68kInsClr = M68kInsCmp
succ M68kInsCmp = M68kInsCmpa
succ M68kInsCmpa = M68kInsCmpi
succ M68kInsCmpi = M68kInsCmpm
succ M68kInsCmpm = M68kInsCmp2
succ M68kInsCmp2 = M68kInsCinvl
succ M68kInsCinvl = M68kInsCinvp
succ M68kInsCinvp = M68kInsCinva
succ M68kInsCinva = M68kInsCpushl
succ M68kInsCpushl = M68kInsCpushp
succ M68kInsCpushp = M68kInsCpusha
succ M68kInsCpusha = M68kInsDbt
succ M68kInsDbt = M68kInsDbf
succ M68kInsDbf = M68kInsDbhi
succ M68kInsDbhi = M68kInsDbls
succ M68kInsDbls = M68kInsDbcc
succ M68kInsDbcc = M68kInsDbcs
succ M68kInsDbcs = M68kInsDbne
succ M68kInsDbne = M68kInsDbeq
succ M68kInsDbeq = M68kInsDbvc
succ M68kInsDbvc = M68kInsDbvs
succ M68kInsDbvs = M68kInsDbpl
succ M68kInsDbpl = M68kInsDbmi
succ M68kInsDbmi = M68kInsDbge
succ M68kInsDbge = M68kInsDblt
succ M68kInsDblt = M68kInsDbgt
succ M68kInsDbgt = M68kInsDble
succ M68kInsDble = M68kInsDbra
succ M68kInsDbra = M68kInsDivs
succ M68kInsDivs = M68kInsDivsl
succ M68kInsDivsl = M68kInsDivu
succ M68kInsDivu = M68kInsDivul
succ M68kInsDivul = M68kInsEor
succ M68kInsEor = M68kInsEori
succ M68kInsEori = M68kInsExg
succ M68kInsExg = M68kInsExt
succ M68kInsExt = M68kInsExtb
succ M68kInsExtb = M68kInsFabs
succ M68kInsFabs = M68kInsFsabs
succ M68kInsFsabs = M68kInsFdabs
succ M68kInsFdabs = M68kInsFacos
succ M68kInsFacos = M68kInsFadd
succ M68kInsFadd = M68kInsFsadd
succ M68kInsFsadd = M68kInsFdadd
succ M68kInsFdadd = M68kInsFasin
succ M68kInsFasin = M68kInsFatan
succ M68kInsFatan = M68kInsFatanh
succ M68kInsFatanh = M68kInsFbf
succ M68kInsFbf = M68kInsFbeq
succ M68kInsFbeq = M68kInsFbogt
succ M68kInsFbogt = M68kInsFboge
succ M68kInsFboge = M68kInsFbolt
succ M68kInsFbolt = M68kInsFbole
succ M68kInsFbole = M68kInsFbogl
succ M68kInsFbogl = M68kInsFbor
succ M68kInsFbor = M68kInsFbun
succ M68kInsFbun = M68kInsFbueq
succ M68kInsFbueq = M68kInsFbugt
succ M68kInsFbugt = M68kInsFbuge
succ M68kInsFbuge = M68kInsFbult
succ M68kInsFbult = M68kInsFbule
succ M68kInsFbule = M68kInsFbne
succ M68kInsFbne = M68kInsFbt
succ M68kInsFbt = M68kInsFbsf
succ M68kInsFbsf = M68kInsFbseq
succ M68kInsFbseq = M68kInsFbgt
succ M68kInsFbgt = M68kInsFbge
succ M68kInsFbge = M68kInsFblt
succ M68kInsFblt = M68kInsFble
succ M68kInsFble = M68kInsFbgl
succ M68kInsFbgl = M68kInsFbgle
succ M68kInsFbgle = M68kInsFbngle
succ M68kInsFbngle = M68kInsFbngl
succ M68kInsFbngl = M68kInsFbnle
succ M68kInsFbnle = M68kInsFbnlt
succ M68kInsFbnlt = M68kInsFbnge
succ M68kInsFbnge = M68kInsFbngt
succ M68kInsFbngt = M68kInsFbsne
succ M68kInsFbsne = M68kInsFbst
succ M68kInsFbst = M68kInsFcmp
succ M68kInsFcmp = M68kInsFcos
succ M68kInsFcos = M68kInsFcosh
succ M68kInsFcosh = M68kInsFdbf
succ M68kInsFdbf = M68kInsFdbeq
succ M68kInsFdbeq = M68kInsFdbogt
succ M68kInsFdbogt = M68kInsFdboge
succ M68kInsFdboge = M68kInsFdbolt
succ M68kInsFdbolt = M68kInsFdbole
succ M68kInsFdbole = M68kInsFdbogl
succ M68kInsFdbogl = M68kInsFdbor
succ M68kInsFdbor = M68kInsFdbun
succ M68kInsFdbun = M68kInsFdbueq
succ M68kInsFdbueq = M68kInsFdbugt
succ M68kInsFdbugt = M68kInsFdbuge
succ M68kInsFdbuge = M68kInsFdbult
succ M68kInsFdbult = M68kInsFdbule
succ M68kInsFdbule = M68kInsFdbne
succ M68kInsFdbne = M68kInsFdbt
succ M68kInsFdbt = M68kInsFdbsf
succ M68kInsFdbsf = M68kInsFdbseq
succ M68kInsFdbseq = M68kInsFdbgt
succ M68kInsFdbgt = M68kInsFdbge
succ M68kInsFdbge = M68kInsFdblt
succ M68kInsFdblt = M68kInsFdble
succ M68kInsFdble = M68kInsFdbgl
succ M68kInsFdbgl = M68kInsFdbgle
succ M68kInsFdbgle = M68kInsFdbngle
succ M68kInsFdbngle = M68kInsFdbngl
succ M68kInsFdbngl = M68kInsFdbnle
succ M68kInsFdbnle = M68kInsFdbnlt
succ M68kInsFdbnlt = M68kInsFdbnge
succ M68kInsFdbnge = M68kInsFdbngt
succ M68kInsFdbngt = M68kInsFdbsne
succ M68kInsFdbsne = M68kInsFdbst
succ M68kInsFdbst = M68kInsFdiv
succ M68kInsFdiv = M68kInsFsdiv
succ M68kInsFsdiv = M68kInsFddiv
succ M68kInsFddiv = M68kInsFetox
succ M68kInsFetox = M68kInsFetoxm1
succ M68kInsFetoxm1 = M68kInsFgetexp
succ M68kInsFgetexp = M68kInsFgetman
succ M68kInsFgetman = M68kInsFint
succ M68kInsFint = M68kInsFintrz
succ M68kInsFintrz = M68kInsFlog10
succ M68kInsFlog10 = M68kInsFlog2
succ M68kInsFlog2 = M68kInsFlogn
succ M68kInsFlogn = M68kInsFlognp1
succ M68kInsFlognp1 = M68kInsFmod
succ M68kInsFmod = M68kInsFmove
succ M68kInsFmove = M68kInsFsmove
succ M68kInsFsmove = M68kInsFdmove
succ M68kInsFdmove = M68kInsFmovecr
succ M68kInsFmovecr = M68kInsFmovem
succ M68kInsFmovem = M68kInsFmul
succ M68kInsFmul = M68kInsFsmul
succ M68kInsFsmul = M68kInsFdmul
succ M68kInsFdmul = M68kInsFneg
succ M68kInsFneg = M68kInsFsneg
succ M68kInsFsneg = M68kInsFdneg
succ M68kInsFdneg = M68kInsFnop
succ M68kInsFnop = M68kInsFrem
succ M68kInsFrem = M68kInsFrestore
succ M68kInsFrestore = M68kInsFsave
succ M68kInsFsave = M68kInsFscale
succ M68kInsFscale = M68kInsFsgldiv
succ M68kInsFsgldiv = M68kInsFsglmul
succ M68kInsFsglmul = M68kInsFsin
succ M68kInsFsin = M68kInsFsincos
succ M68kInsFsincos = M68kInsFsinh
succ M68kInsFsinh = M68kInsFsqrt
succ M68kInsFsqrt = M68kInsFssqrt
succ M68kInsFssqrt = M68kInsFdsqrt
succ M68kInsFdsqrt = M68kInsFsf
succ M68kInsFsf = M68kInsFsbeq
succ M68kInsFsbeq = M68kInsFsogt
succ M68kInsFsogt = M68kInsFsoge
succ M68kInsFsoge = M68kInsFsolt
succ M68kInsFsolt = M68kInsFsole
succ M68kInsFsole = M68kInsFsogl
succ M68kInsFsogl = M68kInsFsor
succ M68kInsFsor = M68kInsFsun
succ M68kInsFsun = M68kInsFsueq
succ M68kInsFsueq = M68kInsFsugt
succ M68kInsFsugt = M68kInsFsuge
succ M68kInsFsuge = M68kInsFsult
succ M68kInsFsult = M68kInsFsule
succ M68kInsFsule = M68kInsFsne
succ M68kInsFsne = M68kInsFst
succ M68kInsFst = M68kInsFssf
succ M68kInsFssf = M68kInsFsseq
succ M68kInsFsseq = M68kInsFsgt
succ M68kInsFsgt = M68kInsFsge
succ M68kInsFsge = M68kInsFslt
succ M68kInsFslt = M68kInsFsle
succ M68kInsFsle = M68kInsFsgl
succ M68kInsFsgl = M68kInsFsgle
succ M68kInsFsgle = M68kInsFsngle
succ M68kInsFsngle = M68kInsFsngl
succ M68kInsFsngl = M68kInsFsnle
succ M68kInsFsnle = M68kInsFsnlt
succ M68kInsFsnlt = M68kInsFsnge
succ M68kInsFsnge = M68kInsFsngt
succ M68kInsFsngt = M68kInsFssne
succ M68kInsFssne = M68kInsFsst
succ M68kInsFsst = M68kInsFsub
succ M68kInsFsub = M68kInsFssub
succ M68kInsFssub = M68kInsFdsub
succ M68kInsFdsub = M68kInsFtan
succ M68kInsFtan = M68kInsFtanh
succ M68kInsFtanh = M68kInsFtentox
succ M68kInsFtentox = M68kInsFtrapf
succ M68kInsFtrapf = M68kInsFtrapeq
succ M68kInsFtrapeq = M68kInsFtrapogt
succ M68kInsFtrapogt = M68kInsFtrapoge
succ M68kInsFtrapoge = M68kInsFtrapolt
succ M68kInsFtrapolt = M68kInsFtrapole
succ M68kInsFtrapole = M68kInsFtrapogl
succ M68kInsFtrapogl = M68kInsFtrapor
succ M68kInsFtrapor = M68kInsFtrapun
succ M68kInsFtrapun = M68kInsFtrapueq
succ M68kInsFtrapueq = M68kInsFtrapugt
succ M68kInsFtrapugt = M68kInsFtrapuge
succ M68kInsFtrapuge = M68kInsFtrapult
succ M68kInsFtrapult = M68kInsFtrapule
succ M68kInsFtrapule = M68kInsFtrapne
succ M68kInsFtrapne = M68kInsFtrapt
succ M68kInsFtrapt = M68kInsFtrapsf
succ M68kInsFtrapsf = M68kInsFtrapseq
succ M68kInsFtrapseq = M68kInsFtrapgt
succ M68kInsFtrapgt = M68kInsFtrapge
succ M68kInsFtrapge = M68kInsFtraplt
succ M68kInsFtraplt = M68kInsFtraple
succ M68kInsFtraple = M68kInsFtrapgl
succ M68kInsFtrapgl = M68kInsFtrapgle
succ M68kInsFtrapgle = M68kInsFtrapngle
succ M68kInsFtrapngle = M68kInsFtrapngl
succ M68kInsFtrapngl = M68kInsFtrapnle
succ M68kInsFtrapnle = M68kInsFtrapnlt
succ M68kInsFtrapnlt = M68kInsFtrapnge
succ M68kInsFtrapnge = M68kInsFtrapngt
succ M68kInsFtrapngt = M68kInsFtrapsne
succ M68kInsFtrapsne = M68kInsFtrapst
succ M68kInsFtrapst = M68kInsFtst
succ M68kInsFtst = M68kInsFtwotox
succ M68kInsFtwotox = M68kInsHalt
succ M68kInsHalt = M68kInsIllegal
succ M68kInsIllegal = M68kInsJmp
succ M68kInsJmp = M68kInsJsr
succ M68kInsJsr = M68kInsLea
succ M68kInsLea = M68kInsLink
succ M68kInsLink = M68kInsLpstop
succ M68kInsLpstop = M68kInsLsl
succ M68kInsLsl = M68kInsLsr
succ M68kInsLsr = M68kInsMove
succ M68kInsMove = M68kInsMovea
succ M68kInsMovea = M68kInsMovec
succ M68kInsMovec = M68kInsMovem
succ M68kInsMovem = M68kInsMovep
succ M68kInsMovep = M68kInsMoveq
succ M68kInsMoveq = M68kInsMoves
succ M68kInsMoves = M68kInsMove16
succ M68kInsMove16 = M68kInsMuls
succ M68kInsMuls = M68kInsMulu
succ M68kInsMulu = M68kInsNbcd
succ M68kInsNbcd = M68kInsNeg
succ M68kInsNeg = M68kInsNegx
succ M68kInsNegx = M68kInsNop
succ M68kInsNop = M68kInsNot
succ M68kInsNot = M68kInsOr
succ M68kInsOr = M68kInsOri
succ M68kInsOri = M68kInsPack
succ M68kInsPack = M68kInsPea
succ M68kInsPea = M68kInsPflush
succ M68kInsPflush = M68kInsPflusha
succ M68kInsPflusha = M68kInsPflushan
succ M68kInsPflushan = M68kInsPflushn
succ M68kInsPflushn = M68kInsPloadr
succ M68kInsPloadr = M68kInsPloadw
succ M68kInsPloadw = M68kInsPlpar
succ M68kInsPlpar = M68kInsPlpaw
succ M68kInsPlpaw = M68kInsPmove
succ M68kInsPmove = M68kInsPmovefd
succ M68kInsPmovefd = M68kInsPtestr
succ M68kInsPtestr = M68kInsPtestw
succ M68kInsPtestw = M68kInsPulse
succ M68kInsPulse = M68kInsRems
succ M68kInsRems = M68kInsRemu
succ M68kInsRemu = M68kInsReset
succ M68kInsReset = M68kInsRol
succ M68kInsRol = M68kInsRor
succ M68kInsRor = M68kInsRoxl
succ M68kInsRoxl = M68kInsRoxr
succ M68kInsRoxr = M68kInsRtd
succ M68kInsRtd = M68kInsRte
succ M68kInsRte = M68kInsRtm
succ M68kInsRtm = M68kInsRtr
succ M68kInsRtr = M68kInsRts
succ M68kInsRts = M68kInsSbcd
succ M68kInsSbcd = M68kInsSt
succ M68kInsSt = M68kInsSf
succ M68kInsSf = M68kInsShi
succ M68kInsShi = M68kInsSls
succ M68kInsSls = M68kInsScc
succ M68kInsScc = M68kInsShs
succ M68kInsShs = M68kInsScs
succ M68kInsScs = M68kInsSlo
succ M68kInsSlo = M68kInsSne
succ M68kInsSne = M68kInsSeq
succ M68kInsSeq = M68kInsSvc
succ M68kInsSvc = M68kInsSvs
succ M68kInsSvs = M68kInsSpl
succ M68kInsSpl = M68kInsSmi
succ M68kInsSmi = M68kInsSge
succ M68kInsSge = M68kInsSlt
succ M68kInsSlt = M68kInsSgt
succ M68kInsSgt = M68kInsSle
succ M68kInsSle = M68kInsStop
succ M68kInsStop = M68kInsSub
succ M68kInsSub = M68kInsSuba
succ M68kInsSuba = M68kInsSubi
succ M68kInsSubi = M68kInsSubq
succ M68kInsSubq = M68kInsSubx
succ M68kInsSubx = M68kInsSwap
succ M68kInsSwap = M68kInsTas
succ M68kInsTas = M68kInsTrap
succ M68kInsTrap = M68kInsTrapv
succ M68kInsTrapv = M68kInsTrapt
succ M68kInsTrapt = M68kInsTrapf
succ M68kInsTrapf = M68kInsTraphi
succ M68kInsTraphi = M68kInsTrapls
succ M68kInsTrapls = M68kInsTrapcc
succ M68kInsTrapcc = M68kInsTraphs
succ M68kInsTraphs = M68kInsTrapcs
succ M68kInsTrapcs = M68kInsTraplo
succ M68kInsTraplo = M68kInsTrapne
succ M68kInsTrapne = M68kInsTrapeq
succ M68kInsTrapeq = M68kInsTrapvc
succ M68kInsTrapvc = M68kInsTrapvs
succ M68kInsTrapvs = M68kInsTrappl
succ M68kInsTrappl = M68kInsTrapmi
succ M68kInsTrapmi = M68kInsTrapge
succ M68kInsTrapge = M68kInsTraplt
succ M68kInsTraplt = M68kInsTrapgt
succ M68kInsTrapgt = M68kInsTraple
succ M68kInsTraple = M68kInsTst
succ M68kInsTst = M68kInsUnlk
succ M68kInsUnlk = M68kInsUnpk
succ M68kInsUnpk = M68kInsEnding
succ M68kInsEnding = error "M68KInsn.succ: M68kInsEnding has no successor"
pred M68kInsAbcd = M68kInsInvalid
pred M68kInsAdd = M68kInsAbcd
pred M68kInsAdda = M68kInsAdd
pred M68kInsAddi = M68kInsAdda
pred M68kInsAddq = M68kInsAddi
pred M68kInsAddx = M68kInsAddq
pred M68kInsAnd = M68kInsAddx
pred M68kInsAndi = M68kInsAnd
pred M68kInsAsl = M68kInsAndi
pred M68kInsAsr = M68kInsAsl
pred M68kInsBhs = M68kInsAsr
pred M68kInsBlo = M68kInsBhs
pred M68kInsBhi = M68kInsBlo
pred M68kInsBls = M68kInsBhi
pred M68kInsBcc = M68kInsBls
pred M68kInsBcs = M68kInsBcc
pred M68kInsBne = M68kInsBcs
pred M68kInsBeq = M68kInsBne
pred M68kInsBvc = M68kInsBeq
pred M68kInsBvs = M68kInsBvc
pred M68kInsBpl = M68kInsBvs
pred M68kInsBmi = M68kInsBpl
pred M68kInsBge = M68kInsBmi
pred M68kInsBlt = M68kInsBge
pred M68kInsBgt = M68kInsBlt
pred M68kInsBle = M68kInsBgt
pred M68kInsBra = M68kInsBle
pred M68kInsBsr = M68kInsBra
pred M68kInsBchg = M68kInsBsr
pred M68kInsBclr = M68kInsBchg
pred M68kInsBset = M68kInsBclr
pred M68kInsBtst = M68kInsBset
pred M68kInsBfchg = M68kInsBtst
pred M68kInsBfclr = M68kInsBfchg
pred M68kInsBfexts = M68kInsBfclr
pred M68kInsBfextu = M68kInsBfexts
pred M68kInsBfffo = M68kInsBfextu
pred M68kInsBfins = M68kInsBfffo
pred M68kInsBfset = M68kInsBfins
pred M68kInsBftst = M68kInsBfset
pred M68kInsBkpt = M68kInsBftst
pred M68kInsCallm = M68kInsBkpt
pred M68kInsCas = M68kInsCallm
pred M68kInsCas2 = M68kInsCas
pred M68kInsChk = M68kInsCas2
pred M68kInsChk2 = M68kInsChk
pred M68kInsClr = M68kInsChk2
pred M68kInsCmp = M68kInsClr
pred M68kInsCmpa = M68kInsCmp
pred M68kInsCmpi = M68kInsCmpa
pred M68kInsCmpm = M68kInsCmpi
pred M68kInsCmp2 = M68kInsCmpm
pred M68kInsCinvl = M68kInsCmp2
pred M68kInsCinvp = M68kInsCinvl
pred M68kInsCinva = M68kInsCinvp
pred M68kInsCpushl = M68kInsCinva
pred M68kInsCpushp = M68kInsCpushl
pred M68kInsCpusha = M68kInsCpushp
pred M68kInsDbt = M68kInsCpusha
pred M68kInsDbf = M68kInsDbt
pred M68kInsDbhi = M68kInsDbf
pred M68kInsDbls = M68kInsDbhi
pred M68kInsDbcc = M68kInsDbls
pred M68kInsDbcs = M68kInsDbcc
pred M68kInsDbne = M68kInsDbcs
pred M68kInsDbeq = M68kInsDbne
pred M68kInsDbvc = M68kInsDbeq
pred M68kInsDbvs = M68kInsDbvc
pred M68kInsDbpl = M68kInsDbvs
pred M68kInsDbmi = M68kInsDbpl
pred M68kInsDbge = M68kInsDbmi
pred M68kInsDblt = M68kInsDbge
pred M68kInsDbgt = M68kInsDblt
pred M68kInsDble = M68kInsDbgt
pred M68kInsDbra = M68kInsDble
pred M68kInsDivs = M68kInsDbra
pred M68kInsDivsl = M68kInsDivs
pred M68kInsDivu = M68kInsDivsl
pred M68kInsDivul = M68kInsDivu
pred M68kInsEor = M68kInsDivul
pred M68kInsEori = M68kInsEor
pred M68kInsExg = M68kInsEori
pred M68kInsExt = M68kInsExg
pred M68kInsExtb = M68kInsExt
pred M68kInsFabs = M68kInsExtb
pred M68kInsFsabs = M68kInsFabs
pred M68kInsFdabs = M68kInsFsabs
pred M68kInsFacos = M68kInsFdabs
pred M68kInsFadd = M68kInsFacos
pred M68kInsFsadd = M68kInsFadd
pred M68kInsFdadd = M68kInsFsadd
pred M68kInsFasin = M68kInsFdadd
pred M68kInsFatan = M68kInsFasin
pred M68kInsFatanh = M68kInsFatan
pred M68kInsFbf = M68kInsFatanh
pred M68kInsFbeq = M68kInsFbf
pred M68kInsFbogt = M68kInsFbeq
pred M68kInsFboge = M68kInsFbogt
pred M68kInsFbolt = M68kInsFboge
pred M68kInsFbole = M68kInsFbolt
pred M68kInsFbogl = M68kInsFbole
pred M68kInsFbor = M68kInsFbogl
pred M68kInsFbun = M68kInsFbor
pred M68kInsFbueq = M68kInsFbun
pred M68kInsFbugt = M68kInsFbueq
pred M68kInsFbuge = M68kInsFbugt
pred M68kInsFbult = M68kInsFbuge
pred M68kInsFbule = M68kInsFbult
pred M68kInsFbne = M68kInsFbule
pred M68kInsFbt = M68kInsFbne
pred M68kInsFbsf = M68kInsFbt
pred M68kInsFbseq = M68kInsFbsf
pred M68kInsFbgt = M68kInsFbseq
pred M68kInsFbge = M68kInsFbgt
pred M68kInsFblt = M68kInsFbge
pred M68kInsFble = M68kInsFblt
pred M68kInsFbgl = M68kInsFble
pred M68kInsFbgle = M68kInsFbgl
pred M68kInsFbngle = M68kInsFbgle
pred M68kInsFbngl = M68kInsFbngle
pred M68kInsFbnle = M68kInsFbngl
pred M68kInsFbnlt = M68kInsFbnle
pred M68kInsFbnge = M68kInsFbnlt
pred M68kInsFbngt = M68kInsFbnge
pred M68kInsFbsne = M68kInsFbngt
pred M68kInsFbst = M68kInsFbsne
pred M68kInsFcmp = M68kInsFbst
pred M68kInsFcos = M68kInsFcmp
pred M68kInsFcosh = M68kInsFcos
pred M68kInsFdbf = M68kInsFcosh
pred M68kInsFdbeq = M68kInsFdbf
pred M68kInsFdbogt = M68kInsFdbeq
pred M68kInsFdboge = M68kInsFdbogt
pred M68kInsFdbolt = M68kInsFdboge
pred M68kInsFdbole = M68kInsFdbolt
pred M68kInsFdbogl = M68kInsFdbole
pred M68kInsFdbor = M68kInsFdbogl
pred M68kInsFdbun = M68kInsFdbor
pred M68kInsFdbueq = M68kInsFdbun
pred M68kInsFdbugt = M68kInsFdbueq
pred M68kInsFdbuge = M68kInsFdbugt
pred M68kInsFdbult = M68kInsFdbuge
pred M68kInsFdbule = M68kInsFdbult
pred M68kInsFdbne = M68kInsFdbule
pred M68kInsFdbt = M68kInsFdbne
pred M68kInsFdbsf = M68kInsFdbt
pred M68kInsFdbseq = M68kInsFdbsf
pred M68kInsFdbgt = M68kInsFdbseq
pred M68kInsFdbge = M68kInsFdbgt
pred M68kInsFdblt = M68kInsFdbge
pred M68kInsFdble = M68kInsFdblt
pred M68kInsFdbgl = M68kInsFdble
pred M68kInsFdbgle = M68kInsFdbgl
pred M68kInsFdbngle = M68kInsFdbgle
pred M68kInsFdbngl = M68kInsFdbngle
pred M68kInsFdbnle = M68kInsFdbngl
pred M68kInsFdbnlt = M68kInsFdbnle
pred M68kInsFdbnge = M68kInsFdbnlt
pred M68kInsFdbngt = M68kInsFdbnge
pred M68kInsFdbsne = M68kInsFdbngt
pred M68kInsFdbst = M68kInsFdbsne
pred M68kInsFdiv = M68kInsFdbst
pred M68kInsFsdiv = M68kInsFdiv
pred M68kInsFddiv = M68kInsFsdiv
pred M68kInsFetox = M68kInsFddiv
pred M68kInsFetoxm1 = M68kInsFetox
pred M68kInsFgetexp = M68kInsFetoxm1
pred M68kInsFgetman = M68kInsFgetexp
pred M68kInsFint = M68kInsFgetman
pred M68kInsFintrz = M68kInsFint
pred M68kInsFlog10 = M68kInsFintrz
pred M68kInsFlog2 = M68kInsFlog10
pred M68kInsFlogn = M68kInsFlog2
pred M68kInsFlognp1 = M68kInsFlogn
pred M68kInsFmod = M68kInsFlognp1
pred M68kInsFmove = M68kInsFmod
pred M68kInsFsmove = M68kInsFmove
pred M68kInsFdmove = M68kInsFsmove
pred M68kInsFmovecr = M68kInsFdmove
pred M68kInsFmovem = M68kInsFmovecr
pred M68kInsFmul = M68kInsFmovem
pred M68kInsFsmul = M68kInsFmul
pred M68kInsFdmul = M68kInsFsmul
pred M68kInsFneg = M68kInsFdmul
pred M68kInsFsneg = M68kInsFneg
pred M68kInsFdneg = M68kInsFsneg
pred M68kInsFnop = M68kInsFdneg
pred M68kInsFrem = M68kInsFnop
pred M68kInsFrestore = M68kInsFrem
pred M68kInsFsave = M68kInsFrestore
pred M68kInsFscale = M68kInsFsave
pred M68kInsFsgldiv = M68kInsFscale
pred M68kInsFsglmul = M68kInsFsgldiv
pred M68kInsFsin = M68kInsFsglmul
pred M68kInsFsincos = M68kInsFsin
pred M68kInsFsinh = M68kInsFsincos
pred M68kInsFsqrt = M68kInsFsinh
pred M68kInsFssqrt = M68kInsFsqrt
pred M68kInsFdsqrt = M68kInsFssqrt
pred M68kInsFsf = M68kInsFdsqrt
pred M68kInsFsbeq = M68kInsFsf
pred M68kInsFsogt = M68kInsFsbeq
pred M68kInsFsoge = M68kInsFsogt
pred M68kInsFsolt = M68kInsFsoge
pred M68kInsFsole = M68kInsFsolt
pred M68kInsFsogl = M68kInsFsole
pred M68kInsFsor = M68kInsFsogl
pred M68kInsFsun = M68kInsFsor
pred M68kInsFsueq = M68kInsFsun
pred M68kInsFsugt = M68kInsFsueq
pred M68kInsFsuge = M68kInsFsugt
pred M68kInsFsult = M68kInsFsuge
pred M68kInsFsule = M68kInsFsult
pred M68kInsFsne = M68kInsFsule
pred M68kInsFst = M68kInsFsne
pred M68kInsFssf = M68kInsFst
pred M68kInsFsseq = M68kInsFssf
pred M68kInsFsgt = M68kInsFsseq
pred M68kInsFsge = M68kInsFsgt
pred M68kInsFslt = M68kInsFsge
pred M68kInsFsle = M68kInsFslt
pred M68kInsFsgl = M68kInsFsle
pred M68kInsFsgle = M68kInsFsgl
pred M68kInsFsngle = M68kInsFsgle
pred M68kInsFsngl = M68kInsFsngle
pred M68kInsFsnle = M68kInsFsngl
pred M68kInsFsnlt = M68kInsFsnle
pred M68kInsFsnge = M68kInsFsnlt
pred M68kInsFsngt = M68kInsFsnge
pred M68kInsFssne = M68kInsFsngt
pred M68kInsFsst = M68kInsFssne
pred M68kInsFsub = M68kInsFsst
pred M68kInsFssub = M68kInsFsub
pred M68kInsFdsub = M68kInsFssub
pred M68kInsFtan = M68kInsFdsub
pred M68kInsFtanh = M68kInsFtan
pred M68kInsFtentox = M68kInsFtanh
pred M68kInsFtrapf = M68kInsFtentox
pred M68kInsFtrapeq = M68kInsFtrapf
pred M68kInsFtrapogt = M68kInsFtrapeq
pred M68kInsFtrapoge = M68kInsFtrapogt
pred M68kInsFtrapolt = M68kInsFtrapoge
pred M68kInsFtrapole = M68kInsFtrapolt
pred M68kInsFtrapogl = M68kInsFtrapole
pred M68kInsFtrapor = M68kInsFtrapogl
pred M68kInsFtrapun = M68kInsFtrapor
pred M68kInsFtrapueq = M68kInsFtrapun
pred M68kInsFtrapugt = M68kInsFtrapueq
pred M68kInsFtrapuge = M68kInsFtrapugt
pred M68kInsFtrapult = M68kInsFtrapuge
pred M68kInsFtrapule = M68kInsFtrapult
pred M68kInsFtrapne = M68kInsFtrapule
pred M68kInsFtrapt = M68kInsFtrapne
pred M68kInsFtrapsf = M68kInsFtrapt
pred M68kInsFtrapseq = M68kInsFtrapsf
pred M68kInsFtrapgt = M68kInsFtrapseq
pred M68kInsFtrapge = M68kInsFtrapgt
pred M68kInsFtraplt = M68kInsFtrapge
pred M68kInsFtraple = M68kInsFtraplt
pred M68kInsFtrapgl = M68kInsFtraple
pred M68kInsFtrapgle = M68kInsFtrapgl
pred M68kInsFtrapngle = M68kInsFtrapgle
pred M68kInsFtrapngl = M68kInsFtrapngle
pred M68kInsFtrapnle = M68kInsFtrapngl
pred M68kInsFtrapnlt = M68kInsFtrapnle
pred M68kInsFtrapnge = M68kInsFtrapnlt
pred M68kInsFtrapngt = M68kInsFtrapnge
pred M68kInsFtrapsne = M68kInsFtrapngt
pred M68kInsFtrapst = M68kInsFtrapsne
pred M68kInsFtst = M68kInsFtrapst
pred M68kInsFtwotox = M68kInsFtst
pred M68kInsHalt = M68kInsFtwotox
pred M68kInsIllegal = M68kInsHalt
pred M68kInsJmp = M68kInsIllegal
pred M68kInsJsr = M68kInsJmp
pred M68kInsLea = M68kInsJsr
pred M68kInsLink = M68kInsLea
pred M68kInsLpstop = M68kInsLink
pred M68kInsLsl = M68kInsLpstop
pred M68kInsLsr = M68kInsLsl
pred M68kInsMove = M68kInsLsr
pred M68kInsMovea = M68kInsMove
pred M68kInsMovec = M68kInsMovea
pred M68kInsMovem = M68kInsMovec
pred M68kInsMovep = M68kInsMovem
pred M68kInsMoveq = M68kInsMovep
pred M68kInsMoves = M68kInsMoveq
pred M68kInsMove16 = M68kInsMoves
pred M68kInsMuls = M68kInsMove16
pred M68kInsMulu = M68kInsMuls
pred M68kInsNbcd = M68kInsMulu
pred M68kInsNeg = M68kInsNbcd
pred M68kInsNegx = M68kInsNeg
pred M68kInsNop = M68kInsNegx
pred M68kInsNot = M68kInsNop
pred M68kInsOr = M68kInsNot
pred M68kInsOri = M68kInsOr
pred M68kInsPack = M68kInsOri
pred M68kInsPea = M68kInsPack
pred M68kInsPflush = M68kInsPea
pred M68kInsPflusha = M68kInsPflush
pred M68kInsPflushan = M68kInsPflusha
pred M68kInsPflushn = M68kInsPflushan
pred M68kInsPloadr = M68kInsPflushn
pred M68kInsPloadw = M68kInsPloadr
pred M68kInsPlpar = M68kInsPloadw
pred M68kInsPlpaw = M68kInsPlpar
pred M68kInsPmove = M68kInsPlpaw
pred M68kInsPmovefd = M68kInsPmove
pred M68kInsPtestr = M68kInsPmovefd
pred M68kInsPtestw = M68kInsPtestr
pred M68kInsPulse = M68kInsPtestw
pred M68kInsRems = M68kInsPulse
pred M68kInsRemu = M68kInsRems
pred M68kInsReset = M68kInsRemu
pred M68kInsRol = M68kInsReset
pred M68kInsRor = M68kInsRol
pred M68kInsRoxl = M68kInsRor
pred M68kInsRoxr = M68kInsRoxl
pred M68kInsRtd = M68kInsRoxr
pred M68kInsRte = M68kInsRtd
pred M68kInsRtm = M68kInsRte
pred M68kInsRtr = M68kInsRtm
pred M68kInsRts = M68kInsRtr
pred M68kInsSbcd = M68kInsRts
pred M68kInsSt = M68kInsSbcd
pred M68kInsSf = M68kInsSt
pred M68kInsShi = M68kInsSf
pred M68kInsSls = M68kInsShi
pred M68kInsScc = M68kInsSls
pred M68kInsShs = M68kInsScc
pred M68kInsScs = M68kInsShs
pred M68kInsSlo = M68kInsScs
pred M68kInsSne = M68kInsSlo
pred M68kInsSeq = M68kInsSne
pred M68kInsSvc = M68kInsSeq
pred M68kInsSvs = M68kInsSvc
pred M68kInsSpl = M68kInsSvs
pred M68kInsSmi = M68kInsSpl
pred M68kInsSge = M68kInsSmi
pred M68kInsSlt = M68kInsSge
pred M68kInsSgt = M68kInsSlt
pred M68kInsSle = M68kInsSgt
pred M68kInsStop = M68kInsSle
pred M68kInsSub = M68kInsStop
pred M68kInsSuba = M68kInsSub
pred M68kInsSubi = M68kInsSuba
pred M68kInsSubq = M68kInsSubi
pred M68kInsSubx = M68kInsSubq
pred M68kInsSwap = M68kInsSubx
pred M68kInsTas = M68kInsSwap
pred M68kInsTrap = M68kInsTas
pred M68kInsTrapv = M68kInsTrap
pred M68kInsTrapt = M68kInsTrapv
pred M68kInsTrapf = M68kInsTrapt
pred M68kInsTraphi = M68kInsTrapf
pred M68kInsTrapls = M68kInsTraphi
pred M68kInsTrapcc = M68kInsTrapls
pred M68kInsTraphs = M68kInsTrapcc
pred M68kInsTrapcs = M68kInsTraphs
pred M68kInsTraplo = M68kInsTrapcs
pred M68kInsTrapne = M68kInsTraplo
pred M68kInsTrapeq = M68kInsTrapne
pred M68kInsTrapvc = M68kInsTrapeq
pred M68kInsTrapvs = M68kInsTrapvc
pred M68kInsTrappl = M68kInsTrapvs
pred M68kInsTrapmi = M68kInsTrappl
pred M68kInsTrapge = M68kInsTrapmi
pred M68kInsTraplt = M68kInsTrapge
pred M68kInsTrapgt = M68kInsTraplt
pred M68kInsTraple = M68kInsTrapgt
pred M68kInsTst = M68kInsTraple
pred M68kInsUnlk = M68kInsTst
pred M68kInsUnpk = M68kInsUnlk
pred M68kInsEnding = M68kInsUnpk
pred M68kInsInvalid = error "M68KInsn.pred: M68kInsInvalid 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 M68kInsEnding
fromEnum M68kInsInvalid = 0
fromEnum M68kInsAbcd = 1
fromEnum M68kInsAdd = 2
fromEnum M68kInsAdda = 3
fromEnum M68kInsAddi = 4
fromEnum M68kInsAddq = 5
fromEnum M68kInsAddx = 6
fromEnum M68kInsAnd = 7
fromEnum M68kInsAndi = 8
fromEnum M68kInsAsl = 9
fromEnum M68kInsAsr = 10
fromEnum M68kInsBhs = 11
fromEnum M68kInsBlo = 12
fromEnum M68kInsBhi = 13
fromEnum M68kInsBls = 14
fromEnum M68kInsBcc = 15
fromEnum M68kInsBcs = 16
fromEnum M68kInsBne = 17
fromEnum M68kInsBeq = 18
fromEnum M68kInsBvc = 19
fromEnum M68kInsBvs = 20
fromEnum M68kInsBpl = 21
fromEnum M68kInsBmi = 22
fromEnum M68kInsBge = 23
fromEnum M68kInsBlt = 24
fromEnum M68kInsBgt = 25
fromEnum M68kInsBle = 26
fromEnum M68kInsBra = 27
fromEnum M68kInsBsr = 28
fromEnum M68kInsBchg = 29
fromEnum M68kInsBclr = 30
fromEnum M68kInsBset = 31
fromEnum M68kInsBtst = 32
fromEnum M68kInsBfchg = 33
fromEnum M68kInsBfclr = 34
fromEnum M68kInsBfexts = 35
fromEnum M68kInsBfextu = 36
fromEnum M68kInsBfffo = 37
fromEnum M68kInsBfins = 38
fromEnum M68kInsBfset = 39
fromEnum M68kInsBftst = 40
fromEnum M68kInsBkpt = 41
fromEnum M68kInsCallm = 42
fromEnum M68kInsCas = 43
fromEnum M68kInsCas2 = 44
fromEnum M68kInsChk = 45
fromEnum M68kInsChk2 = 46
fromEnum M68kInsClr = 47
fromEnum M68kInsCmp = 48
fromEnum M68kInsCmpa = 49
fromEnum M68kInsCmpi = 50
fromEnum M68kInsCmpm = 51
fromEnum M68kInsCmp2 = 52
fromEnum M68kInsCinvl = 53
fromEnum M68kInsCinvp = 54
fromEnum M68kInsCinva = 55
fromEnum M68kInsCpushl = 56
fromEnum M68kInsCpushp = 57
fromEnum M68kInsCpusha = 58
fromEnum M68kInsDbt = 59
fromEnum M68kInsDbf = 60
fromEnum M68kInsDbhi = 61
fromEnum M68kInsDbls = 62
fromEnum M68kInsDbcc = 63
fromEnum M68kInsDbcs = 64
fromEnum M68kInsDbne = 65
fromEnum M68kInsDbeq = 66
fromEnum M68kInsDbvc = 67
fromEnum M68kInsDbvs = 68
fromEnum M68kInsDbpl = 69
fromEnum M68kInsDbmi = 70
fromEnum M68kInsDbge = 71
fromEnum M68kInsDblt = 72
fromEnum M68kInsDbgt = 73
fromEnum M68kInsDble = 74
fromEnum M68kInsDbra = 75
fromEnum M68kInsDivs = 76
fromEnum M68kInsDivsl = 77
fromEnum M68kInsDivu = 78
fromEnum M68kInsDivul = 79
fromEnum M68kInsEor = 80
fromEnum M68kInsEori = 81
fromEnum M68kInsExg = 82
fromEnum M68kInsExt = 83
fromEnum M68kInsExtb = 84
fromEnum M68kInsFabs = 85
fromEnum M68kInsFsabs = 86
fromEnum M68kInsFdabs = 87
fromEnum M68kInsFacos = 88
fromEnum M68kInsFadd = 89
fromEnum M68kInsFsadd = 90
fromEnum M68kInsFdadd = 91
fromEnum M68kInsFasin = 92
fromEnum M68kInsFatan = 93
fromEnum M68kInsFatanh = 94
fromEnum M68kInsFbf = 95
fromEnum M68kInsFbeq = 96
fromEnum M68kInsFbogt = 97
fromEnum M68kInsFboge = 98
fromEnum M68kInsFbolt = 99
fromEnum M68kInsFbole = 100
fromEnum M68kInsFbogl = 101
fromEnum M68kInsFbor = 102
fromEnum M68kInsFbun = 103
fromEnum M68kInsFbueq = 104
fromEnum M68kInsFbugt = 105
fromEnum M68kInsFbuge = 106
fromEnum M68kInsFbult = 107
fromEnum M68kInsFbule = 108
fromEnum M68kInsFbne = 109
fromEnum M68kInsFbt = 110
fromEnum M68kInsFbsf = 111
fromEnum M68kInsFbseq = 112
fromEnum M68kInsFbgt = 113
fromEnum M68kInsFbge = 114
fromEnum M68kInsFblt = 115
fromEnum M68kInsFble = 116
fromEnum M68kInsFbgl = 117
fromEnum M68kInsFbgle = 118
fromEnum M68kInsFbngle = 119
fromEnum M68kInsFbngl = 120
fromEnum M68kInsFbnle = 121
fromEnum M68kInsFbnlt = 122
fromEnum M68kInsFbnge = 123
fromEnum M68kInsFbngt = 124
fromEnum M68kInsFbsne = 125
fromEnum M68kInsFbst = 126
fromEnum M68kInsFcmp = 127
fromEnum M68kInsFcos = 128
fromEnum M68kInsFcosh = 129
fromEnum M68kInsFdbf = 130
fromEnum M68kInsFdbeq = 131
fromEnum M68kInsFdbogt = 132
fromEnum M68kInsFdboge = 133
fromEnum M68kInsFdbolt = 134
fromEnum M68kInsFdbole = 135
fromEnum M68kInsFdbogl = 136
fromEnum M68kInsFdbor = 137
fromEnum M68kInsFdbun = 138
fromEnum M68kInsFdbueq = 139
fromEnum M68kInsFdbugt = 140
fromEnum M68kInsFdbuge = 141
fromEnum M68kInsFdbult = 142
fromEnum M68kInsFdbule = 143
fromEnum M68kInsFdbne = 144
fromEnum M68kInsFdbt = 145
fromEnum M68kInsFdbsf = 146
fromEnum M68kInsFdbseq = 147
fromEnum M68kInsFdbgt = 148
fromEnum M68kInsFdbge = 149
fromEnum M68kInsFdblt = 150
fromEnum M68kInsFdble = 151
fromEnum M68kInsFdbgl = 152
fromEnum M68kInsFdbgle = 153
fromEnum M68kInsFdbngle = 154
fromEnum M68kInsFdbngl = 155
fromEnum M68kInsFdbnle = 156
fromEnum M68kInsFdbnlt = 157
fromEnum M68kInsFdbnge = 158
fromEnum M68kInsFdbngt = 159
fromEnum M68kInsFdbsne = 160
fromEnum M68kInsFdbst = 161
fromEnum M68kInsFdiv = 162
fromEnum M68kInsFsdiv = 163
fromEnum M68kInsFddiv = 164
fromEnum M68kInsFetox = 165
fromEnum M68kInsFetoxm1 = 166
fromEnum M68kInsFgetexp = 167
fromEnum M68kInsFgetman = 168
fromEnum M68kInsFint = 169
fromEnum M68kInsFintrz = 170
fromEnum M68kInsFlog10 = 171
fromEnum M68kInsFlog2 = 172
fromEnum M68kInsFlogn = 173
fromEnum M68kInsFlognp1 = 174
fromEnum M68kInsFmod = 175
fromEnum M68kInsFmove = 176
fromEnum M68kInsFsmove = 177
fromEnum M68kInsFdmove = 178
fromEnum M68kInsFmovecr = 179
fromEnum M68kInsFmovem = 180
fromEnum M68kInsFmul = 181
fromEnum M68kInsFsmul = 182
fromEnum M68kInsFdmul = 183
fromEnum M68kInsFneg = 184
fromEnum M68kInsFsneg = 185
fromEnum M68kInsFdneg = 186
fromEnum M68kInsFnop = 187
fromEnum M68kInsFrem = 188
fromEnum M68kInsFrestore = 189
fromEnum M68kInsFsave = 190
fromEnum M68kInsFscale = 191
fromEnum M68kInsFsgldiv = 192
fromEnum M68kInsFsglmul = 193
fromEnum M68kInsFsin = 194
fromEnum M68kInsFsincos = 195
fromEnum M68kInsFsinh = 196
fromEnum M68kInsFsqrt = 197
fromEnum M68kInsFssqrt = 198
fromEnum M68kInsFdsqrt = 199
fromEnum M68kInsFsf = 200
fromEnum M68kInsFsbeq = 201
fromEnum M68kInsFsogt = 202
fromEnum M68kInsFsoge = 203
fromEnum M68kInsFsolt = 204
fromEnum M68kInsFsole = 205
fromEnum M68kInsFsogl = 206
fromEnum M68kInsFsor = 207
fromEnum M68kInsFsun = 208
fromEnum M68kInsFsueq = 209
fromEnum M68kInsFsugt = 210
fromEnum M68kInsFsuge = 211
fromEnum M68kInsFsult = 212
fromEnum M68kInsFsule = 213
fromEnum M68kInsFsne = 214
fromEnum M68kInsFst = 215
fromEnum M68kInsFssf = 216
fromEnum M68kInsFsseq = 217
fromEnum M68kInsFsgt = 218
fromEnum M68kInsFsge = 219
fromEnum M68kInsFslt = 220
fromEnum M68kInsFsle = 221
fromEnum M68kInsFsgl = 222
fromEnum M68kInsFsgle = 223
fromEnum M68kInsFsngle = 224
fromEnum M68kInsFsngl = 225
fromEnum M68kInsFsnle = 226
fromEnum M68kInsFsnlt = 227
fromEnum M68kInsFsnge = 228
fromEnum M68kInsFsngt = 229
fromEnum M68kInsFssne = 230
fromEnum M68kInsFsst = 231
fromEnum M68kInsFsub = 232
fromEnum M68kInsFssub = 233
fromEnum M68kInsFdsub = 234
fromEnum M68kInsFtan = 235
fromEnum M68kInsFtanh = 236
fromEnum M68kInsFtentox = 237
fromEnum M68kInsFtrapf = 238
fromEnum M68kInsFtrapeq = 239
fromEnum M68kInsFtrapogt = 240
fromEnum M68kInsFtrapoge = 241
fromEnum M68kInsFtrapolt = 242
fromEnum M68kInsFtrapole = 243
fromEnum M68kInsFtrapogl = 244
fromEnum M68kInsFtrapor = 245
fromEnum M68kInsFtrapun = 246
fromEnum M68kInsFtrapueq = 247
fromEnum M68kInsFtrapugt = 248
fromEnum M68kInsFtrapuge = 249
fromEnum M68kInsFtrapult = 250
fromEnum M68kInsFtrapule = 251
fromEnum M68kInsFtrapne = 252
fromEnum M68kInsFtrapt = 253
fromEnum M68kInsFtrapsf = 254
fromEnum M68kInsFtrapseq = 255
fromEnum M68kInsFtrapgt = 256
fromEnum M68kInsFtrapge = 257
fromEnum M68kInsFtraplt = 258
fromEnum M68kInsFtraple = 259
fromEnum M68kInsFtrapgl = 260
fromEnum M68kInsFtrapgle = 261
fromEnum M68kInsFtrapngle = 262
fromEnum M68kInsFtrapngl = 263
fromEnum M68kInsFtrapnle = 264
fromEnum M68kInsFtrapnlt = 265
fromEnum M68kInsFtrapnge = 266
fromEnum M68kInsFtrapngt = 267
fromEnum M68kInsFtrapsne = 268
fromEnum M68kInsFtrapst = 269
fromEnum M68kInsFtst = 270
fromEnum M68kInsFtwotox = 271
fromEnum M68kInsHalt = 272
fromEnum M68kInsIllegal = 273
fromEnum M68kInsJmp = 274
fromEnum M68kInsJsr = 275
fromEnum M68kInsLea = 276
fromEnum M68kInsLink = 277
fromEnum M68kInsLpstop = 278
fromEnum M68kInsLsl = 279
fromEnum M68kInsLsr = 280
fromEnum M68kInsMove = 281
fromEnum M68kInsMovea = 282
fromEnum M68kInsMovec = 283
fromEnum M68kInsMovem = 284
fromEnum M68kInsMovep = 285
fromEnum M68kInsMoveq = 286
fromEnum M68kInsMoves = 287
fromEnum M68kInsMove16 = 288
fromEnum M68kInsMuls = 289
fromEnum M68kInsMulu = 290
fromEnum M68kInsNbcd = 291
fromEnum M68kInsNeg = 292
fromEnum M68kInsNegx = 293
fromEnum M68kInsNop = 294
fromEnum M68kInsNot = 295
fromEnum M68kInsOr = 296
fromEnum M68kInsOri = 297
fromEnum M68kInsPack = 298
fromEnum M68kInsPea = 299
fromEnum M68kInsPflush = 300
fromEnum M68kInsPflusha = 301
fromEnum M68kInsPflushan = 302
fromEnum M68kInsPflushn = 303
fromEnum M68kInsPloadr = 304
fromEnum M68kInsPloadw = 305
fromEnum M68kInsPlpar = 306
fromEnum M68kInsPlpaw = 307
fromEnum M68kInsPmove = 308
fromEnum M68kInsPmovefd = 309
fromEnum M68kInsPtestr = 310
fromEnum M68kInsPtestw = 311
fromEnum M68kInsPulse = 312
fromEnum M68kInsRems = 313
fromEnum M68kInsRemu = 314
fromEnum M68kInsReset = 315
fromEnum M68kInsRol = 316
fromEnum M68kInsRor = 317
fromEnum M68kInsRoxl = 318
fromEnum M68kInsRoxr = 319
fromEnum M68kInsRtd = 320
fromEnum M68kInsRte = 321
fromEnum M68kInsRtm = 322
fromEnum M68kInsRtr = 323
fromEnum M68kInsRts = 324
fromEnum M68kInsSbcd = 325
fromEnum M68kInsSt = 326
fromEnum M68kInsSf = 327
fromEnum M68kInsShi = 328
fromEnum M68kInsSls = 329
fromEnum M68kInsScc = 330
fromEnum M68kInsShs = 331
fromEnum M68kInsScs = 332
fromEnum M68kInsSlo = 333
fromEnum M68kInsSne = 334
fromEnum M68kInsSeq = 335
fromEnum M68kInsSvc = 336
fromEnum M68kInsSvs = 337
fromEnum M68kInsSpl = 338
fromEnum M68kInsSmi = 339
fromEnum M68kInsSge = 340
fromEnum M68kInsSlt = 341
fromEnum M68kInsSgt = 342
fromEnum M68kInsSle = 343
fromEnum M68kInsStop = 344
fromEnum M68kInsSub = 345
fromEnum M68kInsSuba = 346
fromEnum M68kInsSubi = 347
fromEnum M68kInsSubq = 348
fromEnum M68kInsSubx = 349
fromEnum M68kInsSwap = 350
fromEnum M68kInsTas = 351
fromEnum M68kInsTrap = 352
fromEnum M68kInsTrapv = 353
fromEnum M68kInsTrapt = 354
fromEnum M68kInsTrapf = 355
fromEnum M68kInsTraphi = 356
fromEnum M68kInsTrapls = 357
fromEnum M68kInsTrapcc = 358
fromEnum M68kInsTraphs = 359
fromEnum M68kInsTrapcs = 360
fromEnum M68kInsTraplo = 361
fromEnum M68kInsTrapne = 362
fromEnum M68kInsTrapeq = 363
fromEnum M68kInsTrapvc = 364
fromEnum M68kInsTrapvs = 365
fromEnum M68kInsTrappl = 366
fromEnum M68kInsTrapmi = 367
fromEnum M68kInsTrapge = 368
fromEnum M68kInsTraplt = 369
fromEnum M68kInsTrapgt = 370
fromEnum M68kInsTraple = 371
fromEnum M68kInsTst = 372
fromEnum M68kInsUnlk = 373
fromEnum M68kInsUnpk = 374
fromEnum M68kInsEnding = 375
toEnum 0 = M68kInsInvalid
toEnum 1 = M68kInsAbcd
toEnum 2 = M68kInsAdd
toEnum 3 = M68kInsAdda
toEnum 4 = M68kInsAddi
toEnum 5 = M68kInsAddq
toEnum 6 = M68kInsAddx
toEnum 7 = M68kInsAnd
toEnum 8 = M68kInsAndi
toEnum 9 = M68kInsAsl
toEnum 10 = M68kInsAsr
toEnum 11 = M68kInsBhs
toEnum 12 = M68kInsBlo
toEnum 13 = M68kInsBhi
toEnum 14 = M68kInsBls
toEnum 15 = M68kInsBcc
toEnum 16 = M68kInsBcs
toEnum 17 = M68kInsBne
toEnum 18 = M68kInsBeq
toEnum 19 = M68kInsBvc
toEnum 20 = M68kInsBvs
toEnum 21 = M68kInsBpl
toEnum 22 = M68kInsBmi
toEnum 23 = M68kInsBge
toEnum 24 = M68kInsBlt
toEnum 25 = M68kInsBgt
toEnum 26 = M68kInsBle
toEnum 27 = M68kInsBra
toEnum 28 = M68kInsBsr
toEnum 29 = M68kInsBchg
toEnum 30 = M68kInsBclr
toEnum 31 = M68kInsBset
toEnum 32 = M68kInsBtst
toEnum 33 = M68kInsBfchg
toEnum 34 = M68kInsBfclr
toEnum 35 = M68kInsBfexts
toEnum 36 = M68kInsBfextu
toEnum 37 = M68kInsBfffo
toEnum 38 = M68kInsBfins
toEnum 39 = M68kInsBfset
toEnum 40 = M68kInsBftst
toEnum 41 = M68kInsBkpt
toEnum 42 = M68kInsCallm
toEnum 43 = M68kInsCas
toEnum 44 = M68kInsCas2
toEnum 45 = M68kInsChk
toEnum 46 = M68kInsChk2
toEnum 47 = M68kInsClr
toEnum 48 = M68kInsCmp
toEnum 49 = M68kInsCmpa
toEnum 50 = M68kInsCmpi
toEnum 51 = M68kInsCmpm
toEnum 52 = M68kInsCmp2
toEnum 53 = M68kInsCinvl
toEnum 54 = M68kInsCinvp
toEnum 55 = M68kInsCinva
toEnum 56 = M68kInsCpushl
toEnum 57 = M68kInsCpushp
toEnum 58 = M68kInsCpusha
toEnum 59 = M68kInsDbt
toEnum 60 = M68kInsDbf
toEnum 61 = M68kInsDbhi
toEnum 62 = M68kInsDbls
toEnum 63 = M68kInsDbcc
toEnum 64 = M68kInsDbcs
toEnum 65 = M68kInsDbne
toEnum 66 = M68kInsDbeq
toEnum 67 = M68kInsDbvc
toEnum 68 = M68kInsDbvs
toEnum 69 = M68kInsDbpl
toEnum 70 = M68kInsDbmi
toEnum 71 = M68kInsDbge
toEnum 72 = M68kInsDblt
toEnum 73 = M68kInsDbgt
toEnum 74 = M68kInsDble
toEnum 75 = M68kInsDbra
toEnum 76 = M68kInsDivs
toEnum 77 = M68kInsDivsl
toEnum 78 = M68kInsDivu
toEnum 79 = M68kInsDivul
toEnum 80 = M68kInsEor
toEnum 81 = M68kInsEori
toEnum 82 = M68kInsExg
toEnum 83 = M68kInsExt
toEnum 84 = M68kInsExtb
toEnum 85 = M68kInsFabs
toEnum 86 = M68kInsFsabs
toEnum 87 = M68kInsFdabs
toEnum 88 = M68kInsFacos
toEnum 89 = M68kInsFadd
toEnum 90 = M68kInsFsadd
toEnum 91 = M68kInsFdadd
toEnum 92 = M68kInsFasin
toEnum 93 = M68kInsFatan
toEnum 94 = M68kInsFatanh
toEnum 95 = M68kInsFbf
toEnum 96 = M68kInsFbeq
toEnum 97 = M68kInsFbogt
toEnum 98 = M68kInsFboge
toEnum 99 = M68kInsFbolt
toEnum 100 = M68kInsFbole
toEnum 101 = M68kInsFbogl
toEnum 102 = M68kInsFbor
toEnum 103 = M68kInsFbun
toEnum 104 = M68kInsFbueq
toEnum 105 = M68kInsFbugt
toEnum 106 = M68kInsFbuge
toEnum 107 = M68kInsFbult
toEnum 108 = M68kInsFbule
toEnum 109 = M68kInsFbne
toEnum 110 = M68kInsFbt
toEnum 111 = M68kInsFbsf
toEnum 112 = M68kInsFbseq
toEnum 113 = M68kInsFbgt
toEnum 114 = M68kInsFbge
toEnum 115 = M68kInsFblt
toEnum 116 = M68kInsFble
toEnum 117 = M68kInsFbgl
toEnum 118 = M68kInsFbgle
toEnum 119 = M68kInsFbngle
toEnum 120 = M68kInsFbngl
toEnum 121 = M68kInsFbnle
toEnum 122 = M68kInsFbnlt
toEnum 123 = M68kInsFbnge
toEnum 124 = M68kInsFbngt
toEnum 125 = M68kInsFbsne
toEnum 126 = M68kInsFbst
toEnum 127 = M68kInsFcmp
toEnum 128 = M68kInsFcos
toEnum 129 = M68kInsFcosh
toEnum 130 = M68kInsFdbf
toEnum 131 = M68kInsFdbeq
toEnum 132 = M68kInsFdbogt
toEnum 133 = M68kInsFdboge
toEnum 134 = M68kInsFdbolt
toEnum 135 = M68kInsFdbole
toEnum 136 = M68kInsFdbogl
toEnum 137 = M68kInsFdbor
toEnum 138 = M68kInsFdbun
toEnum 139 = M68kInsFdbueq
toEnum 140 = M68kInsFdbugt
toEnum 141 = M68kInsFdbuge
toEnum 142 = M68kInsFdbult
toEnum 143 = M68kInsFdbule
toEnum 144 = M68kInsFdbne
toEnum 145 = M68kInsFdbt
toEnum 146 = M68kInsFdbsf
toEnum 147 = M68kInsFdbseq
toEnum 148 = M68kInsFdbgt
toEnum 149 = M68kInsFdbge
toEnum 150 = M68kInsFdblt
toEnum 151 = M68kInsFdble
toEnum 152 = M68kInsFdbgl
toEnum 153 = M68kInsFdbgle
toEnum 154 = M68kInsFdbngle
toEnum 155 = M68kInsFdbngl
toEnum 156 = M68kInsFdbnle
toEnum 157 = M68kInsFdbnlt
toEnum 158 = M68kInsFdbnge
toEnum 159 = M68kInsFdbngt
toEnum 160 = M68kInsFdbsne
toEnum 161 = M68kInsFdbst
toEnum 162 = M68kInsFdiv
toEnum 163 = M68kInsFsdiv
toEnum 164 = M68kInsFddiv
toEnum 165 = M68kInsFetox
toEnum 166 = M68kInsFetoxm1
toEnum 167 = M68kInsFgetexp
toEnum 168 = M68kInsFgetman
toEnum 169 = M68kInsFint
toEnum 170 = M68kInsFintrz
toEnum 171 = M68kInsFlog10
toEnum 172 = M68kInsFlog2
toEnum 173 = M68kInsFlogn
toEnum 174 = M68kInsFlognp1
toEnum 175 = M68kInsFmod
toEnum 176 = M68kInsFmove
toEnum 177 = M68kInsFsmove
toEnum 178 = M68kInsFdmove
toEnum 179 = M68kInsFmovecr
toEnum 180 = M68kInsFmovem
toEnum 181 = M68kInsFmul
toEnum 182 = M68kInsFsmul
toEnum 183 = M68kInsFdmul
toEnum 184 = M68kInsFneg
toEnum 185 = M68kInsFsneg
toEnum 186 = M68kInsFdneg
toEnum 187 = M68kInsFnop
toEnum 188 = M68kInsFrem
toEnum 189 = M68kInsFrestore
toEnum 190 = M68kInsFsave
toEnum 191 = M68kInsFscale
toEnum 192 = M68kInsFsgldiv
toEnum 193 = M68kInsFsglmul
toEnum 194 = M68kInsFsin
toEnum 195 = M68kInsFsincos
toEnum 196 = M68kInsFsinh
toEnum 197 = M68kInsFsqrt
toEnum 198 = M68kInsFssqrt
toEnum 199 = M68kInsFdsqrt
toEnum 200 = M68kInsFsf
toEnum 201 = M68kInsFsbeq
toEnum 202 = M68kInsFsogt
toEnum 203 = M68kInsFsoge
toEnum 204 = M68kInsFsolt
toEnum 205 = M68kInsFsole
toEnum 206 = M68kInsFsogl
toEnum 207 = M68kInsFsor
toEnum 208 = M68kInsFsun
toEnum 209 = M68kInsFsueq
toEnum 210 = M68kInsFsugt
toEnum 211 = M68kInsFsuge
toEnum 212 = M68kInsFsult
toEnum 213 = M68kInsFsule
toEnum 214 = M68kInsFsne
toEnum 215 = M68kInsFst
toEnum 216 = M68kInsFssf
toEnum 217 = M68kInsFsseq
toEnum 218 = M68kInsFsgt
toEnum 219 = M68kInsFsge
toEnum 220 = M68kInsFslt
toEnum 221 = M68kInsFsle
toEnum 222 = M68kInsFsgl
toEnum 223 = M68kInsFsgle
toEnum 224 = M68kInsFsngle
toEnum 225 = M68kInsFsngl
toEnum 226 = M68kInsFsnle
toEnum 227 = M68kInsFsnlt
toEnum 228 = M68kInsFsnge
toEnum 229 = M68kInsFsngt
toEnum 230 = M68kInsFssne
toEnum 231 = M68kInsFsst
toEnum 232 = M68kInsFsub
toEnum 233 = M68kInsFssub
toEnum 234 = M68kInsFdsub
toEnum 235 = M68kInsFtan
toEnum 236 = M68kInsFtanh
toEnum 237 = M68kInsFtentox
toEnum 238 = M68kInsFtrapf
toEnum 239 = M68kInsFtrapeq
toEnum 240 = M68kInsFtrapogt
toEnum 241 = M68kInsFtrapoge
toEnum 242 = M68kInsFtrapolt
toEnum 243 = M68kInsFtrapole
toEnum 244 = M68kInsFtrapogl
toEnum 245 = M68kInsFtrapor
toEnum 246 = M68kInsFtrapun
toEnum 247 = M68kInsFtrapueq
toEnum 248 = M68kInsFtrapugt
toEnum 249 = M68kInsFtrapuge
toEnum 250 = M68kInsFtrapult
toEnum 251 = M68kInsFtrapule
toEnum 252 = M68kInsFtrapne
toEnum 253 = M68kInsFtrapt
toEnum 254 = M68kInsFtrapsf
toEnum 255 = M68kInsFtrapseq
toEnum 256 = M68kInsFtrapgt
toEnum 257 = M68kInsFtrapge
toEnum 258 = M68kInsFtraplt
toEnum 259 = M68kInsFtraple
toEnum 260 = M68kInsFtrapgl
toEnum 261 = M68kInsFtrapgle
toEnum 262 = M68kInsFtrapngle
toEnum 263 = M68kInsFtrapngl
toEnum 264 = M68kInsFtrapnle
toEnum 265 = M68kInsFtrapnlt
toEnum 266 = M68kInsFtrapnge
toEnum 267 = M68kInsFtrapngt
toEnum 268 = M68kInsFtrapsne
toEnum 269 = M68kInsFtrapst
toEnum 270 = M68kInsFtst
toEnum 271 = M68kInsFtwotox
toEnum 272 = M68kInsHalt
toEnum 273 = M68kInsIllegal
toEnum 274 = M68kInsJmp
toEnum 275 = M68kInsJsr
toEnum 276 = M68kInsLea
toEnum 277 = M68kInsLink
toEnum 278 = M68kInsLpstop
toEnum 279 = M68kInsLsl
toEnum 280 = M68kInsLsr
toEnum 281 = M68kInsMove
toEnum 282 = M68kInsMovea
toEnum 283 = M68kInsMovec
toEnum 284 = M68kInsMovem
toEnum 285 = M68kInsMovep
toEnum 286 = M68kInsMoveq
toEnum 287 = M68kInsMoves
toEnum 288 = M68kInsMove16
toEnum 289 = M68kInsMuls
toEnum 290 = M68kInsMulu
toEnum 291 = M68kInsNbcd
toEnum 292 = M68kInsNeg
toEnum 293 = M68kInsNegx
toEnum 294 = M68kInsNop
toEnum 295 = M68kInsNot
toEnum 296 = M68kInsOr
toEnum 297 = M68kInsOri
toEnum 298 = M68kInsPack
toEnum 299 = M68kInsPea
toEnum 300 = M68kInsPflush
toEnum 301 = M68kInsPflusha
toEnum 302 = M68kInsPflushan
toEnum 303 = M68kInsPflushn
toEnum 304 = M68kInsPloadr
toEnum 305 = M68kInsPloadw
toEnum 306 = M68kInsPlpar
toEnum 307 = M68kInsPlpaw
toEnum 308 = M68kInsPmove
toEnum 309 = M68kInsPmovefd
toEnum 310 = M68kInsPtestr
toEnum 311 = M68kInsPtestw
toEnum 312 = M68kInsPulse
toEnum 313 = M68kInsRems
toEnum 314 = M68kInsRemu
toEnum 315 = M68kInsReset
toEnum 316 = M68kInsRol
toEnum 317 = M68kInsRor
toEnum 318 = M68kInsRoxl
toEnum 319 = M68kInsRoxr
toEnum 320 = M68kInsRtd
toEnum 321 = M68kInsRte
toEnum 322 = M68kInsRtm
toEnum 323 = M68kInsRtr
toEnum 324 = M68kInsRts
toEnum 325 = M68kInsSbcd
toEnum 326 = M68kInsSt
toEnum 327 = M68kInsSf
toEnum 328 = M68kInsShi
toEnum 329 = M68kInsSls
toEnum 330 = M68kInsScc
toEnum 331 = M68kInsShs
toEnum 332 = M68kInsScs
toEnum 333 = M68kInsSlo
toEnum 334 = M68kInsSne
toEnum 335 = M68kInsSeq
toEnum 336 = M68kInsSvc
toEnum 337 = M68kInsSvs
toEnum 338 = M68kInsSpl
toEnum 339 = M68kInsSmi
toEnum 340 = M68kInsSge
toEnum 341 = M68kInsSlt
toEnum 342 = M68kInsSgt
toEnum 343 = M68kInsSle
toEnum 344 = M68kInsStop
toEnum 345 = M68kInsSub
toEnum 346 = M68kInsSuba
toEnum 347 = M68kInsSubi
toEnum 348 = M68kInsSubq
toEnum 349 = M68kInsSubx
toEnum 350 = M68kInsSwap
toEnum 351 = M68kInsTas
toEnum 352 = M68kInsTrap
toEnum 353 = M68kInsTrapv
toEnum 354 = M68kInsTrapt
toEnum 355 = M68kInsTrapf
toEnum 356 = M68kInsTraphi
toEnum 357 = M68kInsTrapls
toEnum 358 = M68kInsTrapcc
toEnum 359 = M68kInsTraphs
toEnum 360 = M68kInsTrapcs
toEnum 361 = M68kInsTraplo
toEnum 362 = M68kInsTrapne
toEnum 363 = M68kInsTrapeq
toEnum 364 = M68kInsTrapvc
toEnum 365 = M68kInsTrapvs
toEnum 366 = M68kInsTrappl
toEnum 367 = M68kInsTrapmi
toEnum 368 = M68kInsTrapge
toEnum 369 = M68kInsTraplt
toEnum 370 = M68kInsTrapgt
toEnum 371 = M68kInsTraple
toEnum 372 = M68kInsTst
toEnum 373 = M68kInsUnlk
toEnum 374 = M68kInsUnpk
toEnum 375 = M68kInsEnding
toEnum unmatched = error ("M68KInsn.toEnum: Cannot match " ++ show unmatched)
data M68KGroupType = M68kGrpInvalid
| M68kGrpJump
| M68kGrpRet
| M68kGrpIret
| M68kGrpEnding
deriving (Show,Eq,Bounded)
instance Enum M68KGroupType where
succ M68kGrpInvalid = M68kGrpJump
succ M68kGrpJump = M68kGrpRet
succ M68kGrpRet = M68kGrpIret
succ M68kGrpIret = M68kGrpEnding
succ M68kGrpEnding = error "M68KGroupType.succ: M68kGrpEnding has no successor"
pred M68kGrpJump = M68kGrpInvalid
pred M68kGrpRet = M68kGrpJump
pred M68kGrpIret = M68kGrpRet
pred M68kGrpEnding = M68kGrpIret
pred M68kGrpInvalid = error "M68KGroupType.pred: M68kGrpInvalid 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 M68kGrpEnding
fromEnum M68kGrpInvalid = 0
fromEnum M68kGrpJump = 1
fromEnum M68kGrpRet = 3
fromEnum M68kGrpIret = 5
fromEnum M68kGrpEnding = 6
toEnum 0 = M68kGrpInvalid
toEnum 1 = M68kGrpJump
toEnum 3 = M68kGrpRet
toEnum 5 = M68kGrpIret
toEnum 6 = M68kGrpEnding
toEnum unmatched = error ("M68KGroupType.toEnum: Cannot match " ++ show unmatched)