'Returns the address of bytes equal to \'what\', starting from \'start\'. Note that,  if you don\'t specify a default
value, this search could cause the state to go unsat if no possible matching byte exists.
:param addr:               The start address.
:param what:                What to search for;
:param max_search:          Search at most this many bytes.
:param max_symbolic_bytes:  Search through at most this many symbolic bytes.
:param default:             The default value, if what you\'re looking for wasn\'t found.
:returns:                   An expression representing the address of the matching byte.'

def find(self, addr, what, max_search=None, max_symbolic_bytes=None, default=None, step=1):

    addr = _raw_ast(addr)
    what = _raw_ast(what)
    default = _raw_ast(default)
    if isinstance(what, str):
        what = claripy.BVV(what, (len(what) * 8))
    (r, c, m) = self._find(addr, what, max_search=max_search, max_symbolic_bytes=max_symbolic_bytes, default=default, step=step)
    if ((o.AST_DEPS in self.state.options) and (self.category == 'reg')):
        r = SimActionObject(r, reg_deps=frozenset((addr,)))
    return (r, c, m)
