Module BCHLibx86Types

class type cfg_loops_int = object ... end

Operands

type asm_operand_kind_t =
  1. | Flag of BCHLibTypes.eflag_t
  2. | Reg of BCHLibTypes.cpureg_t
  3. | FpuReg of int
  4. | ControlReg of int
  5. | DebugReg of int
  6. | MmReg of int
  7. | XmmReg of int
  8. | SegReg of BCHLibTypes.segment_t
  9. | IndReg of BCHLibTypes.cpureg_t * CHNumerical.numerical_t
  10. | SegIndReg of BCHLibTypes.segment_t * BCHLibTypes.cpureg_t * CHNumerical.numerical_t
  11. | ScaledIndReg of BCHLibTypes.cpureg_t option * BCHLibTypes.cpureg_t option * int * CHNumerical.numerical_t
  12. | DoubleReg of BCHLibTypes.cpureg_t * BCHLibTypes.cpureg_t
  13. | Imm of BCHLibTypes.immediate_int
  14. | Absolute of BCHLibTypes.doubleword_int
  15. | FarAbsolute of int * BCHLibTypes.doubleword_int
  16. | SegAbsolute of BCHLibTypes.segment_t * BCHLibTypes.doubleword_int
  17. | DummyOp
type operand_mode_t =
  1. | RD
  2. | WR
  3. | RW
  4. | AD
class type operand_int = object ... end

x86 opcodes

type not_code_t =
  1. | JumpTable of BCHLibTypes.jumptable_int
  2. | DataBlock of BCHLibTypes.data_block_int
type condition_code_t =
  1. | CcOverflow
    (*

    OF = 1

    *)
  2. | CcNotOverflow
    (*

    OF = 0

    *)
  3. | CcCarry
    (*

    CF = 1

    *)
  4. | CcNotCarry
    (*

    CF = 0

    *)
  5. | CcZero
    (*

    ZF = 1

    *)
  6. | CcNotZero
    (*

    ZF = 0

    *)
  7. | CcBelowEqual
    (*

    CF = 1 or ZF = 1

    *)
  8. | CcAbove
    (*

    CF = 0 and ZF = 0

    *)
  9. | CcSign
    (*

    SF = 1

    *)
  10. | CcNotSign
    (*

    SF = 0

    *)
  11. | CcParityEven
    (*

    PF = 1

    *)
  12. | CcParityOdd
    (*

    PF = 0

    *)
  13. | CcLess
    (*

    SF != OF

    *)
  14. | CcGreaterEqual
    (*

    SF = OF

    *)
  15. | CcLessEqual
    (*

    ZF = 1 or SF != OF

    *)
  16. | CcGreater
    (*

    ZF = 0 and SF = OF

    *)
type opcode_t =
  1. | Arpl of operand_int * operand_int
  2. | BreakPoint
  3. | UndefinedInstruction0 of operand_int * operand_int
  4. | UndefinedInstruction1 of operand_int * operand_int
  5. | UndefinedInstruction2
  6. | TerminateBranch32
  7. | Pause
  8. | Halt
  9. | InterruptReturn of bool
  10. | ConvertLongToDouble of operand_int * operand_int
  11. | ConvertWordToDoubleword of operand_int * operand_int
  12. | EmptyMmx
  13. | FlushCacheLine of operand_int
  14. | MemoryFence
  15. | Cpuid
  16. | LoadFlags
  17. | StoreFlags
  18. | PopFlags
  19. | PushFlags
  20. | SetALC
  21. | Wait
  22. | SysCall
  23. | LinuxSystemCall of operand_int
  24. | SysEnter
  25. | SysExit
  26. | SysReturn
  27. | WriteBackInvalidateCache
  28. | TableLookupTranslation
  29. | Ldmxcsr of operand_int
  30. | Stmxcsr of operand_int
  31. | XRestore of operand_int
  32. | XRestoreSupervisor of operand_int
  33. | XSave of operand_int
  34. | XSaveSupervisor of operand_int
  35. | InvalidateTLBEntries of operand_int
  36. | InvalidatePCID of operand_int * operand_int
  37. | Prefetch of string * operand_int
  38. | XGetBV
  39. | SerializeExecution
  40. | ReadTimeStampCounter
  41. | ReadModelSpecificRegister
  42. | ReadPerformanceMonitoringCounters
  43. | WriteModelSpecificRegister
  44. | MiscOp of string
  45. | MultiByteNop of int
  46. | StoreIDTR of operand_int
  47. | StoreGDTR of operand_int
  48. | StoreLDTR of operand_int
  49. | LoadGDTR of operand_int
  50. | LoadIDTR of operand_int
  51. | LoadLDTR of operand_int
  52. | LoadTaskRegister of operand_int
  53. | StoreTaskRegister of operand_int
  54. | TimedPause of operand_int
  55. | LoadFarPointer of operand_int * operand_int * operand_int
  56. | BitTestComplement of operand_int * operand_int
  57. | BitTestReset of operand_int * operand_int
  58. | BitTestAndSet of operand_int * operand_int
  59. | BitTest of operand_int * operand_int
  60. | BitScanForward of operand_int * operand_int
  61. | BitScanReverse of operand_int * operand_int
  62. | CountTrailingZeroBits of operand_int * operand_int
  63. | Pop of int * operand_int
  64. | Push of int * operand_int
  65. | PushRegisters
  66. | PopRegisters
  67. | Add of operand_int * operand_int
  68. | XAdd of operand_int * operand_int
  69. | AddCarry of operand_int * operand_int
  70. | Sub of operand_int * operand_int
  71. | SubBorrow of operand_int * operand_int
  72. | Div of int * operand_int * operand_int * operand_int * operand_int
  73. | IDiv of int * operand_int * operand_int * operand_int * operand_int
  74. | Mul of int * operand_int * operand_int * operand_int
  75. | IMul of int * operand_int * operand_int * operand_int
  76. | Increment of operand_int
  77. | Decrement of operand_int
  78. | RdRandomize of operand_int
  79. | ReadSeed of operand_int
  80. | DirectCall of operand_int
  81. | IndirectCall of operand_int
  82. | DirectJmp of operand_int
  83. | IndirectJmp of operand_int
  84. | DirectLoop of operand_int
  85. | Ret of int option
  86. | BndRet of int option
  87. | RepzRet
  88. | Enter of operand_int * operand_int
  89. | Leave
  90. | Finit of bool
  91. | Fclex of bool
  92. | Fbstp of operand_int
  93. | FLoadConstant of string * string
  94. | FLoad of bool * int * operand_int
  95. | FLoadState of string * int * operand_int
  96. | FStore of bool * bool * int * operand_int
  97. | FStoreState of string * bool * int * operand_int
  98. | FSaveState of bool * operand_int
  99. | FRestoreState of operand_int
  100. | FStackOp of string * string
  101. | FXSave of operand_int
  102. | FXRestore of operand_int
  103. | Fadd of bool * bool * int * operand_int * operand_int
  104. | Fsub of bool * bool * int * operand_int * operand_int
  105. | Fsubr of bool * bool * int * operand_int * operand_int
  106. | Fmul of bool * bool * int * operand_int * operand_int
  107. | Fdiv of bool * bool * int * operand_int * operand_int
  108. | Fdivr of bool * bool * int * operand_int * operand_int
  109. | Fcom of int * bool * int * operand_int
  110. | Fucom of int * operand_int
  111. | Fcomi of bool * bool * operand_int
  112. | Fxch of operand_int
  113. | FXmmMove of string * bool * bool * operand_int * operand_int
  114. | FXmmOp of string * bool * bool * operand_int * operand_int
  115. | FXmmOpEx of string * bool * bool * operand_int * operand_int * operand_int
  116. | FXmmCompare of bool * bool * operand_int * operand_int * operand_int
  117. | FConvert of bool * string * string * operand_int * operand_int
  118. | Jecxz of operand_int
  119. | Jcc of condition_code_t * operand_int
  120. | CMovcc of condition_code_t * int * operand_int * operand_int
  121. | Cmp of operand_int * operand_int
  122. | CmpExchange of int * operand_int * operand_int
  123. | CmpExchange8B of operand_int * operand_int * operand_int
  124. | Lea of operand_int * operand_int
  125. | Mov of int * operand_int * operand_int
  126. | Movdw of int * operand_int * operand_int
  127. | Movzx of int * operand_int * operand_int
  128. | Movsx of int * operand_int * operand_int
  129. | Movnt of bool * int * operand_int * operand_int
  130. | Movdq of bool * operand_int * operand_int
  131. | Xchg of operand_int * operand_int
  132. | BSwap of operand_int
  133. | AAA
  134. | AAD of operand_int
  135. | AAM of operand_int
  136. | AAS
  137. | DAA
  138. | DAS
  139. | LogicalAnd of operand_int * operand_int
  140. | LogicalOr of operand_int * operand_int
  141. | OnesComplementNegate of operand_int
  142. | TwosComplementNegate of operand_int
  143. | Test of operand_int * operand_int
  144. | Xor of operand_int * operand_int
  145. | Sar of operand_int * operand_int
  146. | Shr of operand_int * operand_int
  147. | Shl of operand_int * operand_int
  148. | Shrd of operand_int * operand_int * operand_int
  149. | Shld of operand_int * operand_int * operand_int
  150. | Ror of operand_int * operand_int
  151. | Rol of operand_int * operand_int
  152. | Rcr of operand_int * operand_int
  153. | Rcl of operand_int * operand_int
  154. | Cmps of int * operand_int * operand_int
  155. | Movs of int * operand_int * operand_int * operand_int * operand_int
  156. | Scas of int * operand_int
  157. | Stos of int * operand_int * operand_int * operand_int * operand_int
  158. | Lods of int * operand_int
  159. | RepIns of int * operand_int
  160. | RepOuts of int * operand_int
  161. | RepLods of int * operand_int
  162. | RepStos of int * operand_int
  163. | RepNeStos of int * operand_int
  164. | RepMovs of int * operand_int * operand_int
  165. | RepNeMovs of int * operand_int * operand_int
  166. | RepECmps of int * operand_int * operand_int
  167. | RepNeCmps of int * operand_int * operand_int
  168. | RepEScas of int * operand_int
  169. | RepNeScas of int * operand_int
  170. | PackedOp of string * int * operand_int * operand_int
  171. | PackedAdd of bool * bool * int * operand_int * operand_int
  172. | PackedSubtract of bool * bool * int * operand_int * operand_int
  173. | PackedMultiply of string * operand_int * operand_int
  174. | PackedCompare of string * int * operand_int * operand_int
  175. | PackedCompareString of bool * bool * operand_int * operand_int * operand_int
  176. | PackedRoundScalarDouble of operand_int * operand_int * operand_int
  177. | PackedShift of string * int * operand_int * operand_int
  178. | PackedShuffle of string * operand_int * operand_int * operand_int option
  179. | PackedExtract of int * operand_int * operand_int * operand_int
  180. | PackedInsert of int * operand_int * operand_int * operand_int
  181. | PackedAlignRight of operand_int * operand_int * operand_int
  182. | PackedConvert of string * operand_int * operand_int
  183. | Unpack of string * int * operand_int * operand_int
  184. | VZeroAll
  185. | VMovdq of bool * operand_int * operand_int
  186. | VPackedOp of string * int * operand_int * operand_int * operand_int
  187. | VPackedAdd of bool * bool * int * operand_int * operand_int * operand_int
  188. | VPackedShift of string * int * operand_int * operand_int * operand_int
  189. | VPackedShuffle of string * operand_int * operand_int * operand_int option
  190. | VPackedAlignRight of operand_int * operand_int * operand_int * operand_int
  191. | ClearCF
  192. | ComplementCF
  193. | SetCF
  194. | SetDF
  195. | ClearDF
  196. | ClearInterruptFlag
  197. | SetInterruptFlag
  198. | ClearTaskSwitchedFlag
  199. | Setcc of condition_code_t * operand_int
  200. | InputFromPort of int * operand_int * operand_int
  201. | OutputToPort of int * operand_int * operand_int
  202. | InputStringFromPort of int * operand_int
  203. | OutputStringToPort of int * operand_int
  204. | XStoreRng
  205. | XCrypt of string
  206. | AESDecrypt of operand_int * operand_int
  207. | AESDecryptLast of operand_int * operand_int
  208. | AESEncrypt of operand_int * operand_int
  209. | AESEncryptLast of operand_int * operand_int
  210. | AESInvMix of operand_int * operand_int
  211. | AESKeyGenAssist of operand_int * operand_int * operand_int
  212. | CfNop of int * string
  213. | CfJmp of operand_int * int * string
  214. | JumpTableEntry of operand_int
  215. | OpInvalid
  216. | Unknown
  217. | InconsistentInstr of string
  218. | NotCode of not_code_t option

Opcode dictionary

class type x86dictionary_int = object ... end

Predefined call semantics

class type predefined_callsemantics_int = object ... end
type patternrhs_t =
  1. | PConstantValue of CHNumerical.numerical_t
  2. | PRegister of BCHLibTypes.cpureg_t
  3. | PArgument of int
  4. | PGlobalVar of BCHLibTypes.doubleword_int
  5. | PUnknown
type regexpattern_t = {
  1. regex_s : Str.regexp;
  2. regex_f : BCHLibTypes.doubleword_int -> string -> string -> predefined_callsemantics_int option;
}

Assembly artifacts

Assembly instructions

class type assembly_instruction_int = object ... end
class type assembly_instructions_int = object ... end
type assembly_instruction_annotation_type_t =
  1. | LibraryCall of string
  2. | ApplicationCall of BCHLibTypes.doubleword_int
  3. | Call
  4. | Assignment
  5. | FunctionArgument
  6. | Jump of BCHLibTypes.doubleword_int
  7. | Return
  8. | RepInstruction
  9. | NotModeled
  10. | NoAnnotation
class type assembly_instruction_annotation_int = object ... end

Assembly block

class type assembly_block_int = object ... end

Assembly functions

class type assembly_function_int = object ... end
class type assembly_functions_int = object ... end

CHIF artifacts

class type code_pc_int = object ... end
class type chif_system_int = object ... end

Disassembly metrics

class type disassembly_metrics_int = object ... end
class type disassembly_stats_int = object ... end

Analysis results

class type x86_opcode_dictionary_int = object ... end
class type x86_analysis_results_int = object ... end