Does symbol name `f` exist as a SIM_PROCEDURE? If so, return it, else return None.
        Narrows down the set of libraries to search based on hint.
        Part of the hack to enable Binary Ninja support. Remove if _register_objects() stops using it.

def _guess_simprocedure(self, f, hint):
        """
        Does symbol name `f` exist as a SIM_PROCEDURE? If so, return it, else return None.
        Narrows down the set of libraries to search based on hint.
        Part of the hack to enable Binary Ninja support. Remove if _register_objects() stops using it.
        """
        # First, filter the SIM_LIBRARIES to a reasonable subset based on the hint
        hinted_libs = []
        if hint == "win":
            hinted_libs = filter(lambda lib: lib if lib.endswith(".dll") else None, SIM_LIBRARIES)
        else:
            hinted_libs = filter(lambda lib: lib if ".so" in lib else None, SIM_LIBRARIES)

        for lib in hinted_libs:
            if SIM_LIBRARIES[lib].has_implementation(f.name):
                l.debug("Found implementation for %s in %s", f, lib)
                self.hook_symbol(f.relative_addr, (SIM_LIBRARIES[lib].get(f.name, self.arch)))
                break
        else:
            l.debug("Could not find matching SimProcedure for %s, ignoring.", f.name)