sig
  type offset = int32
  module IM :
    sig
      type key = Int32.t
      type +'a t
      val empty : 'a t
      val is_empty : 'a t -> bool
      val mem : key -> 'a t -> bool
      val add : key -> '-> 'a t -> 'a t
      val singleton : key -> '-> 'a t
      val remove : key -> 'a t -> 'a t
      val merge :
        (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> 'c t
      val compare : ('-> '-> int) -> 'a t -> 'a t -> int
      val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
      val iter : (key -> '-> unit) -> 'a t -> unit
      val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b
      val for_all : (key -> '-> bool) -> 'a t -> bool
      val exists : (key -> '-> bool) -> 'a t -> bool
      val filter : (key -> '-> bool) -> 'a t -> 'a t
      val partition : (key -> '-> bool) -> 'a t -> 'a t * 'a t
      val cardinal : 'a t -> int
      val bindings : 'a t -> (key * 'a) list
      val min_binding : 'a t -> key * 'a
      val max_binding : 'a t -> key * 'a
      val choose : 'a t -> key * 'a
      val split : key -> 'a t -> 'a t * 'a option * 'a t
      val find : key -> 'a t -> 'a
      val map : ('-> 'b) -> 'a t -> 'b t
      val mapi : (key -> '-> 'b) -> 'a t -> 'b t
    end
  type instr = Instr.opcode * Instr.operand list
  and operand =
      OPR_CONST of int64
    | OPR_REGISTER of int
    | OPR_INDEX of int
    | OPR_OFFSET of Instr.offset
  and opcode =
      OP_NOP
    | OP_MOVE
    | OP_MOVE_FROM16
    | OP_MOVE_16
    | OP_MOVE_WIDE
    | OP_MOVE_WIDE_FROM16
    | OP_MOVE_WIDE_16
    | OP_MOVE_OBJECT
    | OP_MOVE_OBJECT_FROM16
    | OP_MOVE_OBJECT_16
    | OP_MOVE_RESULT
    | OP_MOVE_RESULT_WIDE
    | OP_MOVE_RESULT_OBJECT
    | OP_MOVE_EXCEPTION
    | OP_RETURN_VOID
    | OP_RETURN
    | OP_RETURN_WIDE
    | OP_RETURN_OBJECT
    | OP_CONST_4
    | OP_CONST_16
    | OP_CONST
    | OP_CONST_HIGH16
    | OP_CONST_WIDE_16
    | OP_CONST_WIDE_32
    | OP_CONST_WIDE
    | OP_CONST_WIDE_HIGH16
    | OP_CONST_STRING
    | OP_CONST_STRING_JUMBO
    | OP_CONST_CLASS
    | OP_MONITOR_ENTER
    | OP_MONITOR_EXIT
    | OP_CHECK_CAST
    | OP_INSTANCE_OF
    | OP_ARRAY_LENGTH
    | OP_NEW_INSTANCE
    | OP_NEW_ARRAY
    | OP_FILLED_NEW_ARRAY
    | OP_FILLED_NEW_ARRAY_RANGE
    | OP_FILL_ARRAY_DATA
    | OP_THROW
    | OP_GOTO
    | OP_GOTO_16
    | OP_GOTO_32
    | OP_PACKED_SWITCH
    | OP_SPARSE_SWITCH
    | OP_CMPL_FLOAT
    | OP_CMPG_FLOAT
    | OP_CMPL_DOUBLE
    | OP_CMPG_DOUBLE
    | OP_CMP_LONG
    | OP_IF_EQ
    | OP_IF_NE
    | OP_IF_LT
    | OP_IF_GE
    | OP_IF_GT
    | OP_IF_LE
    | OP_IF_EQZ
    | OP_IF_NEZ
    | OP_IF_LTZ
    | OP_IF_GEZ
    | OP_IF_GTZ
    | OP_IF_LEZ
    | OP_AGET
    | OP_AGET_WIDE
    | OP_AGET_OBJECT
    | OP_AGET_BOOLEAN
    | OP_AGET_BYTE
    | OP_AGET_CHAR
    | OP_AGET_SHORT
    | OP_APUT
    | OP_APUT_WIDE
    | OP_APUT_OBJECT
    | OP_APUT_BOOLEAN
    | OP_APUT_BYTE
    | OP_APUT_CHAR
    | OP_APUT_SHORT
    | OP_IGET
    | OP_IGET_WIDE
    | OP_IGET_OBJECT
    | OP_IGET_BOOLEAN
    | OP_IGET_BYTE
    | OP_IGET_CHAR
    | OP_IGET_SHORT
    | OP_IPUT
    | OP_IPUT_WIDE
    | OP_IPUT_OBJECT
    | OP_IPUT_BOOLEAN
    | OP_IPUT_BYTE
    | OP_IPUT_CHAR
    | OP_IPUT_SHORT
    | OP_SGET
    | OP_SGET_WIDE
    | OP_SGET_OBJECT
    | OP_SGET_BOOLEAN
    | OP_SGET_BYTE
    | OP_SGET_CHAR
    | OP_SGET_SHORT
    | OP_SPUT
    | OP_SPUT_WIDE
    | OP_SPUT_OBJECT
    | OP_SPUT_BOOLEAN
    | OP_SPUT_BYTE
    | OP_SPUT_CHAR
    | OP_SPUT_SHORT
    | OP_INVOKE_VIRTUAL
    | OP_INVOKE_SUPER
    | OP_INVOKE_DIRECT
    | OP_INVOKE_STATIC
    | OP_INVOKE_INTERFACE
    | OP_INVOKE_VIRTUAL_RANGE
    | OP_INVOKE_SUPER_RANGE
    | OP_INVOKE_DIRECT_RANGE
    | OP_INVOKE_STATIC_RANGE
    | OP_INVOKE_INTERFACE_RANGE
    | OP_NEG_INT
    | OP_NOT_INT
    | OP_NEG_LONG
    | OP_NOT_LONG
    | OP_NEG_FLOAT
    | OP_NEG_DOUBLE
    | OP_INT_TO_LONG
    | OP_INT_TO_FLOAT
    | OP_INT_TO_DOUBLE
    | OP_LONG_TO_INT
    | OP_LONG_TO_FLOAT
    | OP_LONG_TO_DOUBLE
    | OP_FLOAT_TO_INT
    | OP_FLOAT_TO_LONG
    | OP_FLOAT_TO_DOUBLE
    | OP_DOUBLE_TO_INT
    | OP_DOUBLE_TO_LONG
    | OP_DOUBLE_TO_FLOAT
    | OP_INT_TO_BYTE
    | OP_INT_TO_CHAR
    | OP_INT_TO_SHORT
    | OP_ADD_INT
    | OP_SUB_INT
    | OP_MUL_INT
    | OP_DIV_INT
    | OP_REM_INT
    | OP_AND_INT
    | OP_OR_INT
    | OP_XOR_INT
    | OP_SHL_INT
    | OP_SHR_INT
    | OP_USHR_INT
    | OP_ADD_LONG
    | OP_SUB_LONG
    | OP_MUL_LONG
    | OP_DIV_LONG
    | OP_REM_LONG
    | OP_AND_LONG
    | OP_OR_LONG
    | OP_XOR_LONG
    | OP_SHL_LONG
    | OP_SHR_LONG
    | OP_USHR_LONG
    | OP_ADD_FLOAT
    | OP_SUB_FLOAT
    | OP_MUL_FLOAT
    | OP_DIV_FLOAT
    | OP_REM_FLOAT
    | OP_ADD_DOUBLE
    | OP_SUB_DOUBLE
    | OP_MUL_DOUBLE
    | OP_DIV_DOUBLE
    | OP_REM_DOUBLE
    | OP_ADD_INT_2ADDR
    | OP_SUB_INT_2ADDR
    | OP_MUL_INT_2ADDR
    | OP_DIV_INT_2ADDR
    | OP_REM_INT_2ADDR
    | OP_AND_INT_2ADDR
    | OP_OR_INT_2ADDR
    | OP_XOR_INT_2ADDR
    | OP_SHL_INT_2ADDR
    | OP_SHR_INT_2ADDR
    | OP_USHR_INT_2ADDR
    | OP_ADD_LONG_2ADDR
    | OP_SUB_LONG_2ADDR
    | OP_MUL_LONG_2ADDR
    | OP_DIV_LONG_2ADDR
    | OP_REM_LONG_2ADDR
    | OP_AND_LONG_2ADDR
    | OP_OR_LONG_2ADDR
    | OP_XOR_LONG_2ADDR
    | OP_SHL_LONG_2ADDR
    | OP_SHR_LONG_2ADDR
    | OP_USHR_LONG_2ADDR
    | OP_ADD_FLOAT_2ADDR
    | OP_SUB_FLOAT_2ADDR
    | OP_MUL_FLOAT_2ADDR
    | OP_DIV_FLOAT_2ADDR
    | OP_REM_FLOAT_2ADDR
    | OP_ADD_DOUBLE_2ADDR
    | OP_SUB_DOUBLE_2ADDR
    | OP_MUL_DOUBLE_2ADDR
    | OP_DIV_DOUBLE_2ADDR
    | OP_REM_DOUBLE_2ADDR
    | OP_ADD_INT_LIT16
    | OP_RSUB_INT
    | OP_MUL_INT_LIT16
    | OP_DIV_INT_LIT16
    | OP_REM_INT_LIT16
    | OP_AND_INT_LIT16
    | OP_OR_INT_LIT16
    | OP_XOR_INT_LIT16
    | OP_ADD_INT_LIT8
    | OP_RSUB_INT_LIT8
    | OP_MUL_INT_LIT8
    | OP_DIV_INT_LIT8
    | OP_REM_INT_LIT8
    | OP_AND_INT_LIT8
    | OP_OR_INT_LIT8
    | OP_XOR_INT_LIT8
    | OP_SHL_INT_LIT8
    | OP_SHR_INT_LIT8
    | OP_USHR_INT_LIT8
  val instr_to_string : Instr.instr -> string
  val opr_to_string : Instr.operand -> string
  val op_to_string : Instr.opcode -> string
  val hx_to_op_and_size : int -> Instr.opcode * int
  val hx_to_op : int -> Instr.opcode
  val op_to_hx_and_size : Instr.opcode -> int * int
  val op_to_hx : Instr.opcode -> int
  type link_sort =
      STRING_IDS
    | TYPE_IDS
    | FIELD_IDS
    | METHOD_IDS
    | OFFSET
    | NOT_LINK
  val access_link : Instr.opcode -> Instr.link_sort
  val low_reg : Instr.opcode -> int
  val get_argv : Instr.instr -> Instr.operand list
  val make_instr : Instr.opcode -> int list -> Instr.instr
  val instr_to_bytes : int -> Instr.instr -> char list
  val new_const : int -> int -> Instr.instr
  val new_const_id : int -> int -> int -> Instr.instr
  val new_move : int -> int -> int -> Instr.instr
  val new_obj : int -> int -> Instr.instr
  val new_arr : int -> int -> int -> Instr.instr
  val new_arr_op : int -> int list -> Instr.instr
  val new_stt_fld : int -> int -> int -> Instr.instr
  val new_invoke : int -> int list -> Instr.instr
  val new_move_result : int -> int -> Instr.instr
  val new_return : int -> int option -> Instr.instr
  val rv : Instr.instr
end

Web Accessibility