В принципе, я помню есть теорема о том, что любой control flow (с goto) можно сделать структурным (из блоков с одним входом и одним выходом, как известно), в которой даже приводится собственно алгоритм преобразования. Только код раздувается, конечно, при наивном подходе.