Код конечно очень стремный, фиг чо поймешь. По-моему это все можно в пару строк написать. Да собственно даже в одну)
Ну как минимум что вижу: for a in range(indx,tpos):
if a == 1:
b = 1
break проверяет не занимает ли найденая последоваетельность уже занятые места.Каким образом оно это проверяет? Все что делает этот код - выкидывает последовательность, если в ней присутствует символ с индексом (исходной строки) 1
Дальше.
wpos у тебя обновляется не сразу как ты нашел последовательность, а только на следующем символе.
Соответственно если у тебя 2 раза подряд встречается, то вторую ты пропустишь
Например
Ищем "ab"
Строка "abab"
Первую ты возьмешь, а вторую нет.
А вот на "ab_ab" уже сработало бы