This uses the KMP algorithm to implement the search. Also replaces the slow route of the normal memmem() with KMP, which should be fairly faster (O(n + m) as opposed to O(n * m)) :^)