'Initializes the Unicorn plugin for angr. This plugin handles communication with
UnicornEngine.'

def __init__(self, syscall_hooks=None, cache_key=None, unicount=None, symbolic_var_counts=None, symbolic_inst_counts=None, concretized_asts=None, always_concretize=None, never_concretize=None, concretize_at=None, concretization_threshold_memory=None, concretization_threshold_registers=None, concretization_threshold_instruction=None, cooldown_symbolic_registers=100, cooldown_symbolic_memory=100, cooldown_nonunicorn_blocks=100, max_steps=1000000):

    SimStatePlugin.__init__(self)
    self._syscall_pc = None
    self.jumpkind = 'Ijk_Boring'
    self.error = None
    self.errno = 0
    self.cache_key = (hash(self) if (cache_key is None) else cache_key)
    self.cooldown_nonunicorn_blocks = cooldown_nonunicorn_blocks
    self.cooldown_symbolic_registers = cooldown_symbolic_registers
    self.cooldown_symbolic_memory = cooldown_symbolic_memory
    self.countdown_nonunicorn_blocks = 0
    self.countdown_symbolic_registers = 0
    self.countdown_symbolic_memory = 0
    self.max_steps = max_steps
    self.steps = 0
    self._mapped = 0
    self.syscall_hooks = ({} if (syscall_hooks is None) else syscall_hooks)
    self._uc_state = None
    self.stop_reason = None
    self._unicount = (next(_unicounter) if (unicount is None) else unicount)
    self.symbolic_var_counts = ({} if (symbolic_var_counts is None) else symbolic_var_counts)
    self.symbolic_inst_counts = ({} if (symbolic_inst_counts is None) else symbolic_inst_counts)
    self.concretization_threshold_memory = concretization_threshold_memory
    self.concretization_threshold_registers = concretization_threshold_registers
    self.concretization_threshold_instruction = concretization_threshold_instruction
    self.always_concretize = (set() if (always_concretize is None) else always_concretize)
    self.never_concretize = (set() if (never_concretize is None) else never_concretize)
    self.concretize_at = (set() if (concretize_at is None) else concretize_at)
    self._concretized_asts = (set() if (concretized_asts is None) else concretized_asts)
    self.transmit_addr = None
