Обновил.
Сделал правильное создание кода в блоках {}
Временно убрал сортировку и в коде много Гото и меток, но код в блоках {} генерируется правильно и вполне рабочий.
Имена переменных можно изменять по своему усмотрению в диалоговых окнах настроек блоков и он будут объявлены автоматически. Можно использовать разные имена для разных блоков.
Такая схема найдет указанное количество изображений и в цикле for перещелкает их.

Код который на данный момент генерирует:
CODE:#define NULL 0
int K_kib;
int X_Kib[1000];
int Y_kib[1000];
int Image0[12][14];
int N;
external(INT, "MessageBoxA", "MessageBoxA", "user32.dll");
loadimage(#Image0[0][0], "C:\Image_0.bmp");
KIB_0: if (FindImage(#Image0[0][0], 3, #K_kib, #X_Kib[0], #Y_kib[0], 20, 20, 1024, 768)>0) goto KIB_1;
goto KIB_3;
KIB_1: for(N=0; N<K_kib; N++)
{
goto KIB_2;
KIB_2: Mouse(0, 20+X_Kib[N], 20+Y_kib[N], 0, 1000); goto KIB_C1;
KIB_C1:;
}
goto KIB_Exit;
KIB_3: MessageBoxA(NULL, "Не найдено", "Заголовок", NULL); goto KIB_Exit;
KIB_Exit:;
function FindImage(int #image, int kol, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2)
{
mK=findimage(kol, #image[0][0], -1, #mX[0], #mY[0], ex1, ey1, ex2, ey2, -1);
return mK;
}
function Mouse(int p1, int x, int y, int m, int p2)
{
pause(p1);
if (m==0)mouse(LEFT, x, y);
if (m==1)mousedown(LEFT, x, y);
if (m==2)mouseup(LEFT, x, y);
pause(p2);
}
Допускается любая комбинация вложенных блоков {}
К примеру такая схема должна генерировать правильный, запускаемый код:

Шаблон for
CODE:[INTERFACE]
DIALOG, "for", 619, 109;
STATIC, "Имя переменной", 8, 4, 92, 20;
EDIT, 108, 4, 100, 20, int Var;
STATIC, "Начальное значение", 8, 28, 108, 20;
EDIT, 120, 28, 72, 20, int Init;
STATIC, "Условие", 200, 28, 44, 20;
EDIT, 248, 28, 232, 20, int Cond;
STATIC, "Счетчик", 488, 28, 44, 20;
EDIT, 536, 28, 72, 20, int Counter;
BUTTON_OK, "Принять", 400, 56, 100, 20;
BUTTON_CANCEL, "Закрыть", 508, 56, 100, 20;
[END]
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 48;
SIZE_Y =28;
[END]
[ASSOC_VAR]
Var = N;
Init = 0;
Cond = N<5;
Counter = N++;
cInit = ~Var~=~Init~;
[END]
[GLOBAL_VAR]
int ~Var~;
[END]
[CALL]
(cInit; Cond; Counter)
[END]
[GROUP_BLOCK]
START = {
END = }
ENTER_EXIT =1
CONNECTION=1
[END]
Шаблон while
CODE:[INTERFACE]
DIALOG, "while", 306, 81;
STATIC, "Условие", 8, 4, 44, 20;
EDIT, 64, 4, 232, 20, int Cond;
BUTTON_OK, "Принять", 88, 32, 100, 20;
BUTTON_CANCEL, "Закрыть", 196, 32, 100, 20;
[END]
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 18;
SIZE_Y =22;
[END]
[ASSOC_VAR]
Cond = 1==1;
[END]
[CALL]
(Cond)
[END]
[GROUP_BLOCK]
START = {
END = }
[END]
Шаблон loop
CODE:[INTERFACE]
DIALOG, "loop", 299, 80;
STATIC, "Циклов", 8, 4, 92, 20;
EDIT, 108, 4, 176, 20, unknown Loop;
BUTTON_OK, "Принять", 76, 32, 100, 20;
BUTTON_CANCEL, "Закрыть", 184, 32, 100, 20;
[END]
[APPEARANCE]
COLOR = 0, 0, 0;
SIZE_X = 100;
SIZE_Y =46;
[END]
[ASSOC_VAR]
Loop=;
[END]
[CALL]
(Loop)
[END]
[GROUP_BLOCK]
START = {
END = }
[END]
Шаблон Function
CODE:[INTERFACE]
DIALOG, "Функция", 525, 116;
STATIC, "Имя функции", 8, 8, 72, 20;
EDIT, 88, 8, 424, 20, string Fun;
STATIC, "Параметры", 8, 36, 72, 20;
EDIT, 88, 36, 424, 20, unknown Par;
BUTTON_OK, "Принять", 304, 64, 100, 20;
BUTTON_CANCEL, "Закрыть", 412, 64, 100, 20;
[END]
[APPEARANCE]
COLOR = 193, 97, 0;
SIZE_X = 48;
SIZE_Y =28;
[END]
[ASSOC_VAR]
Fun = NameFun;
Fun_V= function ~%32~ ~Fun~;
Par=int~%32~A,~%32~int~%32~B;
[END]
[CALL]
Fun_V ( Par )
[END]
[GROUP_BLOCK]
START = {
END = }
ENTER_EXIT =0
CONNECTION=0
[END]