Дьявольские флаги
Если вы хотите существенно затруднить понимание программы:
- Определите состояние программы с помощью 5-6 глобальных булевых переменных
- Присваивайте этим переменным разные значения в ходе выполнения программы
Собственно всё, больше ничего делать не надо, чтобы сделать сложным отладку такой программы.