Странная ситуация, не пойму почему код работает правильно. 

В общем не получилось с рекурсией, я попробовал сделать это иным способом:
ArrPush($AActionName, "Город")
ArrPush($AActionName, "Таверна")
ArrPush($AActionName, 100)
ArrPush($AActionName, 100)
ArrPush($AActionName, "Таверна")
ArrPush($AActionName, "Окорок")
ArrPush($AActionName, 10)
ArrPush($AActionName, 10)
sub(Activate, $ActionName)
EnterToSubActivate:
   print($ActionName)
   $ActionIndex = 0
   $ActionRecognized = 1
   while (($ActionRecognized = 1) & ($ActionIndex < ArrSize($AActionName)/4))
      if ($AActionName[$ActionIndex*4+1] = $ActionName)
         $ActionRecognized = 0
         
         ArrPush($ActivateVar, $ActionName)
         ArrPush($ActivateVar, $ActionIndex)
         ArrPush($ActivateVar, $ActionRecognized)
         $ActionName = $AActionName[$ActionIndex*4] 
         Goto(EnterToSubActivate)
				 ExitFromSubActivate:         
         $ActionRecognized = ArrPop($ActivateVar)
         $ActionIndex = ArrPop($ActivateVar)
         $ActionName = ArrPop($ActivateVar)
         
         Move($AActionName[$ActionIndex*4+2], $AActionName[$ActionIndex*4+3])
         LClick(-1, -1)
      else
         Inc($ActionIndex)
      end_if
   end_cyc
   Goto(ExitFromSubActivate)
end_sub
print("Start")
Activate("Окорок")
print("Finish")
Я не пойму, почему код у меня завершается?  
Инструкция Goto(ExitFromSubActivate) должна в вечный цикл загонять код, но нет, все завершается вполне пристойно. 

По ошибке внутренней что-ли?