В общем, начальник написал конечный автомат. Но начальник не знал, что это был именно он. Поэтому вместо номера состояния у него был набор флагов. В зависимости от комбинации флагов выполнялся либо один кусок кода, либо другой, либо третий, и т.д.
Ну, во-первых, так делать не надо. Это затрудняет понимание написанного. Пока флагов всего 2-3, и они имеют понятный смысл -- ещё можно разобраться. Но когда флагов хотя бы пять -- уже начинаются проблемы. У меня. Потому что разбирать этот код потом пришлось мне.
Важно понимать, что такое конечный автомат, чтобы когда он по смыслу возник в коде -- его можно было сразу правильно сделать.
Второй момент -- порядок перехода между состояниями. Теоретически, переходы между состояниями могут быть произвольными. Но в моих задачах (и в задачах начальника) есть доминирующая последовательность состояний. Так вот, в исходном коде доминирующий порядок состояний должен совпадать с порядком кусков исходного кода. Так легче понимать, как происходит выполнение.
Как же куски кода были размещены у начальника? Они были размещены в обратном порядке. Ушло некоторое время на то, чтобы понять, что первым в тексте указан алгоритм последнего состояния, потом предпоследнего, и т.п.