module Hdis86.C where
import Foreign
import Foreign.C
import Control.Monad ( liftM2 )
data UD_t
sizeof_ud_t :: Int
sizeof_ud_t = ((592))
type InputHook = IO CInt
eoi :: CInt
eoi = (1)
foreign import ccall "wrapper"
wrap_InputHook :: InputHook -> IO (FunPtr InputHook)
type Translator = Ptr UD_t -> IO ()
foreign import ccall "wrapper"
wrap_Translator :: Translator -> IO (FunPtr Translator)
foreign import ccall "ud_init"
init :: Ptr UD_t -> IO ()
foreign import ccall "ud_set_input_hook"
set_input_hook :: Ptr UD_t -> FunPtr InputHook -> IO ()
foreign import ccall "ud_set_input_buffer"
set_input_buffer :: Ptr UD_t -> Ptr CChar -> CSize -> IO ()
foreign import ccall "ud_set_input_file"
set_input_file :: Ptr UD_t -> Ptr CFile -> IO ()
foreign import ccall "ud_set_mode"
set_mode :: Ptr UD_t -> (Word8) -> IO ()
foreign import ccall "ud_set_pc"
set_pc :: Ptr UD_t -> (Word64) -> IO ()
foreign import ccall "ud_set_syntax"
set_syntax :: Ptr UD_t -> FunPtr Translator -> IO ()
foreign import ccall "ud_set_vendor"
set_vendor :: Ptr UD_t -> UD_vendor -> IO ()
foreign import ccall "ud_disassemble"
disassemble :: Ptr UD_t -> IO CUInt
foreign import ccall "ud_insn_len"
insn_len :: Ptr UD_t -> IO CUInt
foreign import ccall "ud_insn_off"
insn_off :: Ptr UD_t -> IO (Word64)
foreign import ccall "ud_insn_hex"
insn_hex :: Ptr UD_t -> IO CString
foreign import ccall "ud_insn_ptr"
insn_ptr :: Ptr UD_t -> IO (Ptr (Word8))
foreign import ccall "ud_insn_asm"
insn_asm :: Ptr UD_t -> IO CString
foreign import ccall "ud_input_skip"
input_skip :: Ptr UD_t -> CSize -> IO ()
foreign import ccall "&ud_translate_intel"
translate_intel :: FunPtr Translator
foreign import ccall "&ud_translate_att"
translate_att :: FunPtr Translator
get_mnemonic :: Ptr UD_t -> IO CUInt
get_mnemonic p = ((\hsc_ptr -> peekByteOff hsc_ptr 160)) p
data Operand
get_operand1, get_operand2, get_operand3 :: Ptr UD_t -> Ptr Operand
get_operand1 = ((\hsc_ptr -> hsc_ptr `plusPtr` 164))
get_operand2 = ((\hsc_ptr -> hsc_ptr `plusPtr` 192))
get_operand3 = ((\hsc_ptr -> hsc_ptr `plusPtr` 220))
get_type, get_base, get_index :: Ptr Operand -> IO UD_type
get_type = ((\hsc_ptr -> peekByteOff hsc_ptr 0))
get_base = ((\hsc_ptr -> peekByteOff hsc_ptr 16))
get_index = ((\hsc_ptr -> peekByteOff hsc_ptr 20))
get_size, get_offset, get_scale :: Ptr Operand -> IO (Word8)
get_size = ((\hsc_ptr -> peekByteOff hsc_ptr 4))
get_offset = ((\hsc_ptr -> peekByteOff hsc_ptr 24))
get_scale = ((\hsc_ptr -> peekByteOff hsc_ptr 25))
get_lval_u8 :: Ptr Operand -> IO Word8
get_lval_u8 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_u16 :: Ptr Operand -> IO Word16
get_lval_u16 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_u32 :: Ptr Operand -> IO Word32
get_lval_u32 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_u64 :: Ptr Operand -> IO Word64
get_lval_u64 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_s8 :: Ptr Operand -> IO Int8
get_lval_s8 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_s16 :: Ptr Operand -> IO Int16
get_lval_s16 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_s32 :: Ptr Operand -> IO Int32
get_lval_s32 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_s64 :: Ptr Operand -> IO Int64
get_lval_s64 = ((\hsc_ptr -> peekByteOff hsc_ptr 8))
get_lval_ptr :: Ptr Operand -> IO (Word16, Word32)
get_lval_ptr p = liftM2 (,) (((\hsc_ptr -> peekByteOff hsc_ptr 8)) p)
(((\hsc_ptr -> peekByteOff hsc_ptr 12)) p)
get_pfx_rex, get_pfx_seg, get_pfx_opr, get_pfx_adr,
get_pfx_lock, get_pfx_rep, get_pfx_repe, get_pfx_repne :: Ptr UD_t -> IO (Word8)
get_pfx_rex = ((\hsc_ptr -> peekByteOff hsc_ptr 249))
get_pfx_seg = ((\hsc_ptr -> peekByteOff hsc_ptr 250))
get_pfx_opr = ((\hsc_ptr -> peekByteOff hsc_ptr 251))
get_pfx_adr = ((\hsc_ptr -> peekByteOff hsc_ptr 252))
get_pfx_lock = ((\hsc_ptr -> peekByteOff hsc_ptr 253))
get_pfx_rep = ((\hsc_ptr -> peekByteOff hsc_ptr 254))
get_pfx_repe = ((\hsc_ptr -> peekByteOff hsc_ptr 255))
get_pfx_repne = ((\hsc_ptr -> peekByteOff hsc_ptr 256))
get_pc :: Ptr UD_t -> IO (Word64)
get_pc = ((\hsc_ptr -> peekByteOff hsc_ptr 144))
type UD_vendor = CUInt
udVendorIntel :: UD_vendor
udVendorIntel = 1
udVendorAmd :: UD_vendor
udVendorAmd = 0
type UD_type = CUInt
udNone :: UD_type
udNone = 0
udRAl :: UD_type
udRAl = 1
udRCl :: UD_type
udRCl = 2
udRDl :: UD_type
udRDl = 3
udRBl :: UD_type
udRBl = 4
udRAh :: UD_type
udRAh = 5
udRCh :: UD_type
udRCh = 6
udRDh :: UD_type
udRDh = 7
udRBh :: UD_type
udRBh = 8
udRSpl :: UD_type
udRSpl = 9
udRBpl :: UD_type
udRBpl = 10
udRSil :: UD_type
udRSil = 11
udRDil :: UD_type
udRDil = 12
udRR8b :: UD_type
udRR8b = 13
udRR9b :: UD_type
udRR9b = 14
udRR10b :: UD_type
udRR10b = 15
udRR11b :: UD_type
udRR11b = 16
udRR12b :: UD_type
udRR12b = 17
udRR13b :: UD_type
udRR13b = 18
udRR14b :: UD_type
udRR14b = 19
udRR15b :: UD_type
udRR15b = 20
udRAx :: UD_type
udRAx = 21
udRCx :: UD_type
udRCx = 22
udRDx :: UD_type
udRDx = 23
udRBx :: UD_type
udRBx = 24
udRSp :: UD_type
udRSp = 25
udRBp :: UD_type
udRBp = 26
udRSi :: UD_type
udRSi = 27
udRDi :: UD_type
udRDi = 28
udRR8w :: UD_type
udRR8w = 29
udRR9w :: UD_type
udRR9w = 30
udRR10w :: UD_type
udRR10w = 31
udRR11w :: UD_type
udRR11w = 32
udRR12w :: UD_type
udRR12w = 33
udRR13w :: UD_type
udRR13w = 34
udRR14w :: UD_type
udRR14w = 35
udRR15w :: UD_type
udRR15w = 36
udREax :: UD_type
udREax = 37
udREcx :: UD_type
udREcx = 38
udREdx :: UD_type
udREdx = 39
udREbx :: UD_type
udREbx = 40
udREsp :: UD_type
udREsp = 41
udREbp :: UD_type
udREbp = 42
udREsi :: UD_type
udREsi = 43
udREdi :: UD_type
udREdi = 44
udRR8d :: UD_type
udRR8d = 45
udRR9d :: UD_type
udRR9d = 46
udRR10d :: UD_type
udRR10d = 47
udRR11d :: UD_type
udRR11d = 48
udRR12d :: UD_type
udRR12d = 49
udRR13d :: UD_type
udRR13d = 50
udRR14d :: UD_type
udRR14d = 51
udRR15d :: UD_type
udRR15d = 52
udRRax :: UD_type
udRRax = 53
udRRcx :: UD_type
udRRcx = 54
udRRdx :: UD_type
udRRdx = 55
udRRbx :: UD_type
udRRbx = 56
udRRsp :: UD_type
udRRsp = 57
udRRbp :: UD_type
udRRbp = 58
udRRsi :: UD_type
udRRsi = 59
udRRdi :: UD_type
udRRdi = 60
udRR8 :: UD_type
udRR8 = 61
udRR9 :: UD_type
udRR9 = 62
udRR10 :: UD_type
udRR10 = 63
udRR11 :: UD_type
udRR11 = 64
udRR12 :: UD_type
udRR12 = 65
udRR13 :: UD_type
udRR13 = 66
udRR14 :: UD_type
udRR14 = 67
udRR15 :: UD_type
udRR15 = 68
udREs :: UD_type
udREs = 69
udRCs :: UD_type
udRCs = 70
udRSs :: UD_type
udRSs = 71
udRDs :: UD_type
udRDs = 72
udRFs :: UD_type
udRFs = 73
udRGs :: UD_type
udRGs = 74
udRCr0 :: UD_type
udRCr0 = 75
udRCr1 :: UD_type
udRCr1 = 76
udRCr2 :: UD_type
udRCr2 = 77
udRCr3 :: UD_type
udRCr3 = 78
udRCr4 :: UD_type
udRCr4 = 79
udRCr5 :: UD_type
udRCr5 = 80
udRCr6 :: UD_type
udRCr6 = 81
udRCr7 :: UD_type
udRCr7 = 82
udRCr8 :: UD_type
udRCr8 = 83
udRCr9 :: UD_type
udRCr9 = 84
udRCr10 :: UD_type
udRCr10 = 85
udRCr11 :: UD_type
udRCr11 = 86
udRCr12 :: UD_type
udRCr12 = 87
udRCr13 :: UD_type
udRCr13 = 88
udRCr14 :: UD_type
udRCr14 = 89
udRCr15 :: UD_type
udRCr15 = 90
udRDr0 :: UD_type
udRDr0 = 91
udRDr1 :: UD_type
udRDr1 = 92
udRDr2 :: UD_type
udRDr2 = 93
udRDr3 :: UD_type
udRDr3 = 94
udRDr4 :: UD_type
udRDr4 = 95
udRDr5 :: UD_type
udRDr5 = 96
udRDr6 :: UD_type
udRDr6 = 97
udRDr7 :: UD_type
udRDr7 = 98
udRDr8 :: UD_type
udRDr8 = 99
udRDr9 :: UD_type
udRDr9 = 100
udRDr10 :: UD_type
udRDr10 = 101
udRDr11 :: UD_type
udRDr11 = 102
udRDr12 :: UD_type
udRDr12 = 103
udRDr13 :: UD_type
udRDr13 = 104
udRDr14 :: UD_type
udRDr14 = 105
udRDr15 :: UD_type
udRDr15 = 106
udRMm0 :: UD_type
udRMm0 = 107
udRMm1 :: UD_type
udRMm1 = 108
udRMm2 :: UD_type
udRMm2 = 109
udRMm3 :: UD_type
udRMm3 = 110
udRMm4 :: UD_type
udRMm4 = 111
udRMm5 :: UD_type
udRMm5 = 112
udRMm6 :: UD_type
udRMm6 = 113
udRMm7 :: UD_type
udRMm7 = 114
udRSt0 :: UD_type
udRSt0 = 115
udRSt1 :: UD_type
udRSt1 = 116
udRSt2 :: UD_type
udRSt2 = 117
udRSt3 :: UD_type
udRSt3 = 118
udRSt4 :: UD_type
udRSt4 = 119
udRSt5 :: UD_type
udRSt5 = 120
udRSt6 :: UD_type
udRSt6 = 121
udRSt7 :: UD_type
udRSt7 = 122
udRXmm0 :: UD_type
udRXmm0 = 123
udRXmm1 :: UD_type
udRXmm1 = 124
udRXmm2 :: UD_type
udRXmm2 = 125
udRXmm3 :: UD_type
udRXmm3 = 126
udRXmm4 :: UD_type
udRXmm4 = 127
udRXmm5 :: UD_type
udRXmm5 = 128
udRXmm6 :: UD_type
udRXmm6 = 129
udRXmm7 :: UD_type
udRXmm7 = 130
udRXmm8 :: UD_type
udRXmm8 = 131
udRXmm9 :: UD_type
udRXmm9 = 132
udRXmm10 :: UD_type
udRXmm10 = 133
udRXmm11 :: UD_type
udRXmm11 = 134
udRXmm12 :: UD_type
udRXmm12 = 135
udRXmm13 :: UD_type
udRXmm13 = 136
udRXmm14 :: UD_type
udRXmm14 = 137
udRXmm15 :: UD_type
udRXmm15 = 138
udRRip :: UD_type
udRRip = 139
udOpReg :: UD_type
udOpReg = 140
udOpMem :: UD_type
udOpMem = 141
udOpPtr :: UD_type
udOpPtr = 142
udOpImm :: UD_type
udOpImm = 143
udOpJimm :: UD_type
udOpJimm = 144
udOpConst :: UD_type
udOpConst = 145