summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--boil/BoilVisitor.java158
-rw-r--r--boil/TypeFactory.java17
-rw-r--r--misc/MinimalSimpleFormatter.java2
-rw-r--r--output/BinaryTree.vapor1684
-rw-r--r--output/BubbleSort.vapor469
-rw-r--r--output/Factorial.vapor59
-rw-r--r--output/LinearSearch.vapor398
-rw-r--r--output/LinkedList.vapor1249
-rw-r--r--output/MoreThan4.vapor128
-rw-r--r--output/QuickSort.vapor699
-rw-r--r--output/TreeVisitor.vapor1966
-rw-r--r--output/ex30.vapor4
-rw-r--r--output/ex31.vapor12
-rw-r--r--output/ex32.vapor31
-rw-r--r--output/ex33.vapor76
-rw-r--r--output/ex34.vapor37
-rw-r--r--output/ex35.vapor17
-rw-r--r--output/ex36.vapor31
-rw-r--r--output/ex37.vapor56
-rw-r--r--output/ex38.vapor56
-rw-r--r--output/ex39.vapor43
-rw-r--r--output/ex40.vapor38
-rw-r--r--output/ex41.vapor82
-rw-r--r--output/ex43.vapor59
-rw-r--r--output/ex44.vapor19
-rw-r--r--output/ex45.vapor40
-rw-r--r--output/ex46.vapor103
-rw-r--r--output/ex47.vapor82
-rw-r--r--output/ex48.vapor49
-rw-r--r--output/ex49.vapor38
-rw-r--r--output/ex50.vapor66
-rw-r--r--output/ex51.java31
-rw-r--r--output/ex51.vapor111
-rw-r--r--output/ex52.java28
-rw-r--r--output/ex52.vapor84
35 files changed, 4976 insertions, 3046 deletions
diff --git a/boil/BoilVisitor.java b/boil/BoilVisitor.java
index 0d1d721..db0392d 100644
--- a/boil/BoilVisitor.java
+++ b/boil/BoilVisitor.java
@@ -6,14 +6,13 @@ import st.*;
import misc.*;
import java.util.*;
-public class BoilVisitor extends GJDepthFirst<String,String> {
+public class BoilVisitor extends GJDepthFirst<String,ArrayList<String>> {
private String vapor;
private TypeFactory tf; // the shared type generator
private int id;
private SymbolTable symt;
- private MethodInstance recentMethod = null; // the most recent method called
private ClassInstance recentClass = null;
public BoilVisitor(SymbolTable symt) {
@@ -68,7 +67,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
//
// Auto class visitors--probably don't need to be overridden.
//
- public String visit(NodeList n, String argu) {
+ public String visit(NodeList n, ArrayList<String> argu) {
String _ret="";
int _count=0;
for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) {
@@ -78,7 +77,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
return _ret;
}
- public String visit(NodeListOptional n, String argu) {
+ public String visit(NodeListOptional n, ArrayList<String> argu) {
if ( n.present() ) {
String _ret="";
int _count=0;
@@ -92,14 +91,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
return "";
}
- public String visit(NodeOptional n, String argu) {
+ public String visit(NodeOptional n, ArrayList<String> argu) {
if ( n.present() )
return n.node.accept(this,argu);
else
return "";
}
- public String visit(NodeSequence n, String argu) {
+ public String visit(NodeSequence n, ArrayList<String> argu) {
String _ret=null;
int _count=0;
for ( Enumeration<Node> e = n.elements(); e.hasMoreElements(); ) {
@@ -109,7 +108,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
return _ret;
}
- public String visit(NodeToken n, String argu) {
+ public String visit(NodeToken n, ArrayList<String> argu) {
return null;
}
@@ -122,7 +121,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f1 -> ( TypeDeclaration() )*
* f2 -> <EOF>
*/
- public String visit(Goal n, String argu) {
+ public String visit(Goal n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -159,7 +158,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f16 -> "}"
* f17 -> "}"
*/
- public String visit(MainClass n, String argu) {
+ public String visit(MainClass n, ArrayList<String> argu) {
String _ret=null;
this.tf.reset();
String id = n.f1.f0.tokenImage;
@@ -188,7 +187,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> ClassDeclaration()
* | ClassExtendsDeclaration()
*/
- public String visit(TypeDeclaration n, String argu) {
+ public String visit(TypeDeclaration n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -209,7 +208,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f4 -> ( MethodDeclaration() )*
* f5 -> "}"
*/
- public String visit(ClassDeclaration n, String argu) {
+ public String visit(ClassDeclaration n, ArrayList<String> argu) {
String _ret=null;
String id = n.f1.f0.tokenImage;
MinimalLogger.info(String.format("-> %s (%s)",
@@ -242,7 +241,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f6 -> ( MethodDeclaration() )*
* f7 -> "}"
*/
- public String visit(ClassExtendsDeclaration n, String argu) {
+ public String visit(ClassExtendsDeclaration n, ArrayList<String> argu) {
String _ret=null;
String id = n.f1.f0.tokenImage;
MinimalLogger.info(String.format("-> %s (%s)",
@@ -271,7 +270,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f1 -> Identifier()
* f2 -> ";"
*/
- public String visit(VarDeclaration n, String argu) {
+ public String visit(VarDeclaration n, ArrayList<String> argu) {
String _ret=null;
String id = n.f1.f0.tokenImage;
MinimalLogger.info(String.format("-> %s (%s)",
@@ -301,7 +300,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f11 -> ";"
* f12 -> "}"
*/
- public String visit(MethodDeclaration n, String argu) {
+ public String visit(MethodDeclaration n, ArrayList<String> argu) {
String _ret=null;
this.tf.reset();
String id = n.f2.f0.tokenImage;
@@ -337,7 +336,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> FormalParameter()
* f1 -> ( FormalParameterRest() )*
*/
- public String visit(FormalParameterList n, String argu) {
+ public String visit(FormalParameterList n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -355,7 +354,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> Type()
* f1 -> Identifier()
*/
- public String visit(FormalParameter n, String argu) {
+ public String visit(FormalParameter n, ArrayList<String> argu) {
String _ret="";
String id = n.f1.f0.tokenImage;
MinimalLogger.info(String.format("-> %s (%s)",
@@ -375,7 +374,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> ","
* f1 -> FormalParameter()
*/
- public String visit(FormalParameterRest n, String argu) {
+ public String visit(FormalParameterRest n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -394,7 +393,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* | IntegerType()
* | Identifier()
*/
- public String visit(Type n, String argu) {
+ public String visit(Type n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -412,7 +411,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f1 -> "["
* f2 -> "]"
*/
- public String visit(ArrayType n, String argu) {
+ public String visit(ArrayType n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -427,7 +426,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> "boolean"
*/
- public String visit(BooleanType n, String argu) {
+ public String visit(BooleanType n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -442,7 +441,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> "int"
*/
- public String visit(IntegerType n, String argu) {
+ public String visit(IntegerType n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -462,7 +461,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* | WhileStatement()
* | PrintStatement()
*/
- public String visit(Statement n, String argu) {
+ public String visit(Statement n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -480,7 +479,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f1 -> ( Statement() )*
* f2 -> "}"
*/
- public String visit(Block n, String argu) {
+ public String visit(Block n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -499,7 +498,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> Expression()
* f3 -> ";"
*/
- public String visit(AssignmentStatement n, String argu) {
+ public String visit(AssignmentStatement n, ArrayList<String> argu) {
String _ret=null;
String id = n.f0.f0.tokenImage;
MinimalLogger.info(String.format("-> %s",
@@ -536,7 +535,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f5 -> Expression()
* f6 -> ";"
*/
- public String visit(ArrayAssignmentStatement n, String argu) {
+ public String visit(ArrayAssignmentStatement n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -582,7 +581,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f5 -> "else"
* f6 -> Statement()
*/
- public String visit(IfStatement n, String argu) {
+ public String visit(IfStatement n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -622,7 +621,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f3 -> ")"
* f4 -> Statement()
*/
- public String visit(WhileStatement n, String argu) {
+ public String visit(WhileStatement n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -661,7 +660,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f3 -> ")"
* f4 -> ";"
*/
- public String visit(PrintStatement n, String argu) {
+ public String visit(PrintStatement n, ArrayList<String> argu) {
String _ret=null;
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -695,12 +694,12 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* | PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(Expression n, String argu) {
+ public String visit(Expression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
///////////////////////////////////////////////////////////////
- _ret += n.f0.accept(this, argu);
+ _ret += this.memoryRead(n.f0.accept(this, argu));
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<- %s with %s",
n.getClass().getSimpleName(),
@@ -714,14 +713,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(AndExpression n, String argu) {
+ public String visit(AndExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
_ret += this.tf.alias(this.getUniqueID());
///////////////////////////////////////////////////////////////
- String oper1 = this.memoryRead(n.f0.accept(this, argu));
- String oper2 = this.memoryRead(n.f2.accept(this, argu));
+ String oper1 = n.f0.accept(this, argu);
+ String oper2 = n.f2.accept(this, argu);
String one = this.tf.alias(this.getUniqueID());
this.addVapor(String.format(" %s = Eq(1 %s)\n",
one,
@@ -747,14 +746,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(CompareExpression n, String argu) {
+ public String visit(CompareExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
_ret += this.tf.alias(this.getUniqueID());
///////////////////////////////////////////////////////////////
- String oper1 = this.memoryRead(n.f0.accept(this, argu));
- String oper2 = this.memoryRead(n.f2.accept(this, argu));
+ String oper1 = n.f0.accept(this, argu);
+ String oper2 = n.f2.accept(this, argu);
this.addVapor(String.format(" %s = LtS(%s %s)\n",
_ret,
oper1,
@@ -772,14 +771,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(PlusExpression n, String argu) {
+ public String visit(PlusExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
_ret += this.tf.alias(this.getUniqueID());
///////////////////////////////////////////////////////////////
- String oper1 = this.memoryRead(n.f0.accept(this, argu));
- String oper2 = this.memoryRead(n.f2.accept(this, argu));
+ String oper1 = n.f0.accept(this, argu);
+ String oper2 = n.f2.accept(this, argu);
this.addVapor(String.format(" %s = Add(%s %s)\n",
_ret,
oper1,
@@ -797,14 +796,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(MinusExpression n, String argu) {
+ public String visit(MinusExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
_ret += this.tf.alias(this.getUniqueID());
///////////////////////////////////////////////////////////////
- String oper1 = this.memoryRead(n.f0.accept(this, argu));
- String oper2 = this.memoryRead(n.f2.accept(this, argu));
+ String oper1 = n.f0.accept(this, argu);
+ String oper2 = n.f2.accept(this, argu);
this.addVapor(String.format(" %s = Sub(%s %s)\n",
_ret,
oper1,
@@ -822,14 +821,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> PrimaryExpression()
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(TimesExpression n, String argu) {
+ public String visit(TimesExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
_ret += this.tf.alias(this.getUniqueID());
///////////////////////////////////////////////////////////////
- String oper1 = this.memoryRead(n.f0.accept(this, argu));
- String oper2 = this.memoryRead(n.f2.accept(this, argu));
+ String oper1 = n.f0.accept(this, argu);
+ String oper2 = n.f2.accept(this, argu);
this.addVapor(String.format(" %s = MulS(%s %s)\n",
_ret,
oper1,
@@ -848,7 +847,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f3 -> "]"
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(ArrayLookup n, String argu) {
+ public String visit(ArrayLookup n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -888,7 +887,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> "length"
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(ArrayLength n, String argu) {
+ public String visit(ArrayLength n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -918,12 +917,13 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f5 -> ")"
*/
// Expressions return a TYPE alias which is equal to the expression!
- public String visit(MessageSend n, String argu) {
+ public String visit(MessageSend n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
///////////////////////////////////////////////////////////////
_ret += this.tf.alias(this.getUniqueID());
+ ArrayList<String> args = new ArrayList<String>();
String mtd = n.f2.f0.tokenImage;
String rhs;
TypeInstance t;
@@ -951,7 +951,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
int mtdIndex = cur.getMethods()
.indexOf(this.symt.getMethod(mtd, cur)) * 4;
- this.addVapor(n.f4.accept(this, argu));
+ n.f4.accept(this, args);
this.addVapor(String.format(" %s = [%s+%d]\n",
rhs,
rhs,
@@ -959,11 +959,11 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
this.addVapor(String.format(" %s = call %s(this",
_ret,
rhs));
- this.addVapor(String.format(" %s)\n",
- this.tf.retrieveRecentList(this.symt.getMethod(mtd, cur)
- .getArguments()
- .size())));
- this.recentMethod = this.symt.getMethod(mtd, cur);
+ for (String arg : args)
+ this.addVapor(String.format(" %s",
+ arg));
+ this.addVapor(")\n");
+ this.recentClass = this.symt.getMethod(mtd, cur).getReturn();
return _ret;
case 6:
MinimalLogger.info("Message send found ANONYMOUS");
@@ -980,7 +980,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
case 8:
MinimalLogger.info("Message send found BRACKET");
rhs = n.f0.accept(this, argu);
- ClassInstance cls = this.recentMethod.getReturn();
+ ClassInstance cls = this.recentClass;
t = new TypeInstance(this.getUniqueID(), null,
(MethodInstance) this.symt.getActive(TypeEnum.method),
(ClassInstance) this.symt.getActive(TypeEnum.classname));
@@ -1009,7 +1009,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
MinimalLogger.severe("mtd: " + mtd);
MinimalLogger.severe("t.getClassInstance() " + t.getClassInstance());
MinimalLogger.severe("t.getClassInstance().getMethods() " + t.getClassInstance().getMethods().toString());
- this.recentMethod = this.symt.getMethod(mtd, t.getClassInstance());
+ this.recentClass = this.symt.getMethod(mtd, t.getClassInstance()).getReturn();
int mtdIndex = t.getClassInstance().getMethods()
.indexOf(this.symt.getMethod(mtd, t.getClassInstance())) * 4;
@@ -1018,17 +1018,17 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
tp1,
mtdIndex));
- this.addVapor(n.f4.accept(this, argu));
+ n.f4.accept(this, args);
this.addVapor(String.format(" %s = call %s(%s",
_ret,
tp2,
this.tf.alias(t.getName())));
- this.addVapor(String.format(" %s)\n",
- this.tf.retrieveRecentList(this.symt.getMethod(mtd, t.getClassInstance())
- .getArguments()
- .size())));
+ for (String arg : args)
+ this.addVapor(String.format(" %s",
+ arg));
+ this.addVapor(")\n");
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<- %s with %s",
n.getClass().getSimpleName(),
@@ -1040,16 +1040,14 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> Expression()
* f1 -> ( ExpressionRest() )*
*/
- public String visit(ExpressionList n, String argu) {
+ public String visit(ExpressionList n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
///////////////////////////////////////////////////////////////
String rhs = n.f0.accept(this, argu);
- _ret += String.format(" %s = %s\n",
- this.tf.alias(this.getUniqueID()),
- rhs);
- _ret += n.f1.accept(this, argu);
+ argu.add(rhs);
+ n.f1.accept(this, argu);
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<- %s with %s",
n.getClass().getSimpleName(),
@@ -1061,15 +1059,13 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> ","
* f1 -> Expression()
*/
- public String visit(ExpressionRest n, String argu) {
+ public String visit(ExpressionRest n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
///////////////////////////////////////////////////////////////
String rhs = n.f1.accept(this, argu);
- _ret += String.format(" %s = %s\n",
- this.tf.alias(this.getUniqueID()),
- rhs);
+ argu.add(rhs);
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<- %s with %s",
n.getClass().getSimpleName(),
@@ -1088,12 +1084,12 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* | NotExpression()
* | BracketExpression()
*/
- public String visit(PrimaryExpression n, String argu) {
+ public String visit(PrimaryExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
///////////////////////////////////////////////////////////////
- _ret += n.f0.accept(this, argu);
+ _ret += this.memoryRead(n.f0.accept(this, argu));
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<- %s with %s",
n.getClass().getSimpleName(),
@@ -1104,7 +1100,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> <INTEGER_LITERAL>
*/
- public String visit(IntegerLiteral n, String argu) {
+ public String visit(IntegerLiteral n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1120,7 +1116,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> "true"
*/
- public String visit(TrueLiteral n, String argu) {
+ public String visit(TrueLiteral n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1136,7 +1132,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> "false"
*/
- public String visit(FalseLiteral n, String argu) {
+ public String visit(FalseLiteral n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1152,7 +1148,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> <IDENTIFIER>
*/
- public String visit(Identifier n, String argu) {
+ public String visit(Identifier n, ArrayList<String> argu) {
String _ret="";
String id = n.f0.tokenImage;
MinimalLogger.info(String.format("-> %s (%s)",
@@ -1181,7 +1177,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
/**
* f0 -> "this"
*/
- public String visit(ThisExpression n, String argu) {
+ public String visit(ThisExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1201,7 +1197,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f3 -> Expression()
* f4 -> "]"
*/
- public String visit(ArrayAllocationExpression n, String argu) {
+ public String visit(ArrayAllocationExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1226,7 +1222,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f2 -> "("
* f3 -> ")"
*/
- public String visit(AllocationExpression n, String argu) {
+ public String visit(AllocationExpression n, ArrayList<String> argu) {
String _ret="";
String id = n.f1.f0.tokenImage;
MinimalLogger.info(String.format("-> %s",
@@ -1253,7 +1249,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f0 -> "!"
* f1 -> Expression()
*/
- public String visit(NotExpression n, String argu) {
+ public String visit(NotExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
@@ -1274,7 +1270,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> {
* f1 -> Expression()
* f2 -> ")"
*/
- public String visit(BracketExpression n, String argu) {
+ public String visit(BracketExpression n, ArrayList<String> argu) {
String _ret="";
MinimalLogger.info(String.format("-> %s",
n.getClass().getSimpleName()));
diff --git a/boil/TypeFactory.java b/boil/TypeFactory.java
index d5b61f3..224d8a3 100644
--- a/boil/TypeFactory.java
+++ b/boil/TypeFactory.java
@@ -31,21 +31,4 @@ public class TypeFactory {
return alias;
}
- public String retrieveRecentList(int x) {
- /**
- * Given int x, retrieve a space-delimited
- * list of the x most recent entries.
- */
- String rtn = "";
- if (x > 0) {
- rtn += String.format("t.%d",
- type_num-x);
- for (int i = type_num-(x-1); i < type_num; ++i) {
- rtn += String.format(" t.%d",
- i);
- }
- }
-
- return rtn;
- }
}
diff --git a/misc/MinimalSimpleFormatter.java b/misc/MinimalSimpleFormatter.java
index 741863d..a325185 100644
--- a/misc/MinimalSimpleFormatter.java
+++ b/misc/MinimalSimpleFormatter.java
@@ -7,7 +7,7 @@ import java.util.logging.SimpleFormatter;
public class MinimalSimpleFormatter extends SimpleFormatter {
@Override
public String format(LogRecord record) {
- if (false)
+ if (true)
return record.getLevel() + ": " + formatMessage(record) + "\n";
else
return "";
diff --git a/output/BinaryTree.vapor b/output/BinaryTree.vapor
index 60719bf..7deadd8 100644
--- a/output/BinaryTree.vapor
+++ b/output/BinaryTree.vapor
@@ -2,11 +2,13 @@ func Main()
t.3 = HeapAllocZ(4)
[t.3+0] = :functable_BT
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.2 = call t.6(t.4 )
- t.7 = t.2
- PrintIntS(t.7)
+ t.7 = [t.6+0]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
ret
const functable_BT
@@ -15,127 +17,186 @@ const functable_BT
func BT_Start(this )
t.2 = HeapAllocZ(104)
[t.2+0] = :functable_Tree
- t.1 = t.2
- t.1 = t.1
- t.5 = [t.1+0]
- t.6 = [t.5+0]
- t.7 = 16
- t.4 = call t.6(t.1 t.7)
- t.3 = t.4
- t.1 = t.1
- t.9 = [t.1+0]
- t.10 = [t.9+72]
- t.8 = call t.10(t.1 )
- t.3 = t.8
- t.11 = 100000000
- PrintIntS(t.11)
- t.1 = t.1
- t.13 = [t.1+0]
- t.14 = [t.13+48]
- t.15 = 8
- t.12 = call t.14(t.1 t.15)
- t.3 = t.12
- t.1 = t.1
- t.17 = [t.1+0]
- t.18 = [t.17+72]
- t.16 = call t.18(t.1 )
- t.3 = t.16
- t.1 = t.1
- t.20 = [t.1+0]
- t.21 = [t.20+48]
- t.22 = 24
- t.19 = call t.21(t.1 t.22)
- t.3 = t.19
- t.1 = t.1
- t.24 = [t.1+0]
- t.25 = [t.24+48]
- t.26 = 4
- t.23 = call t.25(t.1 t.26)
- t.3 = t.23
- t.1 = t.1
- t.28 = [t.1+0]
- t.29 = [t.28+48]
- t.30 = 12
- t.27 = call t.29(t.1 t.30)
- t.3 = t.27
- t.1 = t.1
- t.32 = [t.1+0]
- t.33 = [t.32+48]
- t.34 = 20
- t.31 = call t.33(t.1 t.34)
- t.3 = t.31
- t.1 = t.1
- t.36 = [t.1+0]
- t.37 = [t.36+48]
- t.38 = 28
- t.35 = call t.37(t.1 t.38)
- t.3 = t.35
- t.1 = t.1
- t.40 = [t.1+0]
- t.41 = [t.40+48]
- t.42 = 14
- t.39 = call t.41(t.1 t.42)
- t.3 = t.39
- t.1 = t.1
- t.44 = [t.1+0]
- t.45 = [t.44+72]
- t.43 = call t.45(t.1 )
- t.3 = t.43
- t.1 = t.1
- t.47 = [t.1+0]
- t.48 = [t.47+68]
- t.49 = 24
- t.46 = call t.48(t.1 t.49)
- t.50 = t.46
- PrintIntS(t.50)
- t.1 = t.1
- t.52 = [t.1+0]
- t.53 = [t.52+68]
- t.54 = 12
- t.51 = call t.53(t.1 t.54)
- t.55 = t.51
- PrintIntS(t.55)
- t.1 = t.1
- t.57 = [t.1+0]
- t.58 = [t.57+68]
- t.59 = 16
- t.56 = call t.58(t.1 t.59)
- t.60 = t.56
- PrintIntS(t.60)
- t.1 = t.1
- t.62 = [t.1+0]
- t.63 = [t.62+68]
- t.64 = 50
- t.61 = call t.63(t.1 t.64)
- t.65 = t.61
- PrintIntS(t.65)
- t.1 = t.1
- t.67 = [t.1+0]
- t.68 = [t.67+68]
- t.69 = 12
- t.66 = call t.68(t.1 t.69)
- t.70 = t.66
- PrintIntS(t.70)
- t.1 = t.1
- t.72 = [t.1+0]
- t.73 = [t.72+52]
- t.74 = 12
- t.71 = call t.73(t.1 t.74)
- t.3 = t.71
- t.1 = t.1
- t.76 = [t.1+0]
- t.77 = [t.76+72]
- t.75 = call t.77(t.1 )
- t.3 = t.75
- t.1 = t.1
- t.79 = [t.1+0]
- t.80 = [t.79+68]
- t.81 = 12
- t.78 = call t.80(t.1 t.81)
- t.82 = t.78
- PrintIntS(t.82)
- t.83 = 0
- ret t.83
+ t.3 = t.2
+ t.4 = t.3
+ t.1 = t.4
+ t.7 = t.1
+ t.1 = t.7
+ t.8 = [t.1+0]
+ t.9 = [t.8+0]
+ t.10 = 16
+ t.11 = t.10
+ t.6 = call t.9(t.1 t.11)
+ t.12 = t.6
+ t.5 = t.12
+ t.14 = t.1
+ t.1 = t.14
+ t.15 = [t.1+0]
+ t.16 = [t.15+72]
+ t.13 = call t.16(t.1)
+ t.17 = t.13
+ t.5 = t.17
+ t.18 = 100000000
+ t.19 = t.18
+ t.20 = t.19
+ PrintIntS(t.20)
+ t.22 = t.1
+ t.1 = t.22
+ t.23 = [t.1+0]
+ t.24 = [t.23+48]
+ t.25 = 8
+ t.26 = t.25
+ t.21 = call t.24(t.1 t.26)
+ t.27 = t.21
+ t.5 = t.27
+ t.29 = t.1
+ t.1 = t.29
+ t.30 = [t.1+0]
+ t.31 = [t.30+72]
+ t.28 = call t.31(t.1)
+ t.32 = t.28
+ t.5 = t.32
+ t.34 = t.1
+ t.1 = t.34
+ t.35 = [t.1+0]
+ t.36 = [t.35+48]
+ t.37 = 24
+ t.38 = t.37
+ t.33 = call t.36(t.1 t.38)
+ t.39 = t.33
+ t.5 = t.39
+ t.41 = t.1
+ t.1 = t.41
+ t.42 = [t.1+0]
+ t.43 = [t.42+48]
+ t.44 = 4
+ t.45 = t.44
+ t.40 = call t.43(t.1 t.45)
+ t.46 = t.40
+ t.5 = t.46
+ t.48 = t.1
+ t.1 = t.48
+ t.49 = [t.1+0]
+ t.50 = [t.49+48]
+ t.51 = 12
+ t.52 = t.51
+ t.47 = call t.50(t.1 t.52)
+ t.53 = t.47
+ t.5 = t.53
+ t.55 = t.1
+ t.1 = t.55
+ t.56 = [t.1+0]
+ t.57 = [t.56+48]
+ t.58 = 20
+ t.59 = t.58
+ t.54 = call t.57(t.1 t.59)
+ t.60 = t.54
+ t.5 = t.60
+ t.62 = t.1
+ t.1 = t.62
+ t.63 = [t.1+0]
+ t.64 = [t.63+48]
+ t.65 = 28
+ t.66 = t.65
+ t.61 = call t.64(t.1 t.66)
+ t.67 = t.61
+ t.5 = t.67
+ t.69 = t.1
+ t.1 = t.69
+ t.70 = [t.1+0]
+ t.71 = [t.70+48]
+ t.72 = 14
+ t.73 = t.72
+ t.68 = call t.71(t.1 t.73)
+ t.74 = t.68
+ t.5 = t.74
+ t.76 = t.1
+ t.1 = t.76
+ t.77 = [t.1+0]
+ t.78 = [t.77+72]
+ t.75 = call t.78(t.1)
+ t.79 = t.75
+ t.5 = t.79
+ t.81 = t.1
+ t.1 = t.81
+ t.82 = [t.1+0]
+ t.83 = [t.82+68]
+ t.84 = 24
+ t.85 = t.84
+ t.80 = call t.83(t.1 t.85)
+ t.86 = t.80
+ t.87 = t.86
+ PrintIntS(t.87)
+ t.89 = t.1
+ t.1 = t.89
+ t.90 = [t.1+0]
+ t.91 = [t.90+68]
+ t.92 = 12
+ t.93 = t.92
+ t.88 = call t.91(t.1 t.93)
+ t.94 = t.88
+ t.95 = t.94
+ PrintIntS(t.95)
+ t.97 = t.1
+ t.1 = t.97
+ t.98 = [t.1+0]
+ t.99 = [t.98+68]
+ t.100 = 16
+ t.101 = t.100
+ t.96 = call t.99(t.1 t.101)
+ t.102 = t.96
+ t.103 = t.102
+ PrintIntS(t.103)
+ t.105 = t.1
+ t.1 = t.105
+ t.106 = [t.1+0]
+ t.107 = [t.106+68]
+ t.108 = 50
+ t.109 = t.108
+ t.104 = call t.107(t.1 t.109)
+ t.110 = t.104
+ t.111 = t.110
+ PrintIntS(t.111)
+ t.113 = t.1
+ t.1 = t.113
+ t.114 = [t.1+0]
+ t.115 = [t.114+68]
+ t.116 = 12
+ t.117 = t.116
+ t.112 = call t.115(t.1 t.117)
+ t.118 = t.112
+ t.119 = t.118
+ PrintIntS(t.119)
+ t.121 = t.1
+ t.1 = t.121
+ t.122 = [t.1+0]
+ t.123 = [t.122+52]
+ t.124 = 12
+ t.125 = t.124
+ t.120 = call t.123(t.1 t.125)
+ t.126 = t.120
+ t.5 = t.126
+ t.128 = t.1
+ t.1 = t.128
+ t.129 = [t.1+0]
+ t.130 = [t.129+72]
+ t.127 = call t.130(t.1)
+ t.131 = t.127
+ t.5 = t.131
+ t.133 = t.1
+ t.1 = t.133
+ t.134 = [t.1+0]
+ t.135 = [t.134+68]
+ t.136 = 12
+ t.137 = t.136
+ t.132 = call t.135(t.1 t.137)
+ t.138 = t.132
+ t.139 = t.138
+ PrintIntS(t.139)
+ t.140 = 0
+ t.141 = t.140
+ t.142 = t.141
+ ret t.142
const functable_Tree
:Tree_Init
@@ -160,600 +221,885 @@ const functable_Tree
:Tree_RecPrint
func Tree_Init(this t.0 )
- [this+88] = t.0
- [this+92] = 0
- [this+96] = 0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+88] = t.2
+ t.3 = 0
+ t.4 = t.3
+ [this+92] = t.4
+ t.5 = 0
+ t.6 = t.5
+ [this+96] = t.6
+ t.7 = 1
+ t.8 = t.7
+ t.9 = t.8
+ ret t.9
func Tree_SetRight(this t.0 )
- [this+84] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+84] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_SetLeft(this t.0 )
- [this+80] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+80] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_GetRight(this )
t.0 = [this+84]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetLeft(this )
t.0 = [this+80]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetKey(this )
t.0 = [this+88]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_SetKey(this t.0 )
- [this+88] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+88] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_GetHas_Right(this )
t.0 = [this+96]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetHas_Left(this )
t.0 = [this+92]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_SetHas_Left(this t.0 )
- [this+92] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+92] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_SetHas_Right(this t.0 )
- [this+96] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+96] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_Compare(this t.0 t.1 )
- t.2 = 0
- t.5 = t.1
- t.6 = 1
- t.4 = Add(t.5 t.6)
- t.3 = t.4
- t.8 = t.0
- t.9 = t.1
- t.7 = LtS(t.8 t.9)
- t.10 = t.7
- if0 t.10 goto :if100_else
-if100_body:
- t.2 = 0
- goto :if100_end
-if100_else:
- t.13 = t.0
- t.14 = t.3
- t.12 = LtS(t.13 t.14)
- t.11 = Eq(t.12 0)
- t.15 = t.11
- if0 t.15 goto :if104_else
-if104_body:
- t.2 = 0
- goto :if104_end
-if104_else:
- t.2 = 1
-if104_end:
-if100_end:
- t.16 = t.2
- ret t.16
+ t.3 = 0
+ t.4 = t.3
+ t.2 = t.4
+ t.7 = t.1
+ t.8 = 1
+ t.6 = Add(t.7 t.8)
+ t.9 = t.6
+ t.5 = t.9
+ t.11 = t.0
+ t.12 = t.1
+ t.10 = LtS(t.11 t.12)
+ t.13 = t.10
+ t.14 = t.13
+ if0 t.14 goto :if202_else
+if202_body:
+ t.15 = 0
+ t.16 = t.15
+ t.2 = t.16
+ goto :if202_end
+if202_else:
+ t.19 = t.0
+ t.20 = t.5
+ t.18 = LtS(t.19 t.20)
+ t.21 = t.18
+ t.22 = t.21
+ t.23 = t.22
+ t.17 = Eq(t.23 0)
+ t.24 = t.17
+ t.25 = t.24
+ t.26 = t.25
+ if0 t.26 goto :if209_else
+if209_body:
+ t.27 = 0
+ t.28 = t.27
+ t.2 = t.28
+ goto :if209_end
+if209_else:
+ t.29 = 1
+ t.30 = t.29
+ t.2 = t.30
+if209_end:
+if202_end:
+ t.31 = t.2
+ t.32 = t.31
+ t.33 = t.32
+ ret t.33
func Tree_Insert(this t.0 )
t.3 = HeapAllocZ(104)
[t.3+0] = :functable_Tree
- t.2 = t.3
- t.2 = t.2
- t.6 = [t.2+0]
- t.7 = [t.6+0]
- t.8 = t.0
- t.5 = call t.7(t.2 t.8)
- t.4 = t.5
- t.9 = this
- t.10 = 1
-while115_test:
- t.11 = t.10
- if0 t.11 goto :while115_end
-while115_body:
- t.9 = t.9
- t.14 = [t.9+0]
- t.15 = [t.14+20]
- t.13 = call t.15(t.9 )
- t.12 = t.13
- t.17 = t.0
- t.18 = t.12
- t.16 = LtS(t.17 t.18)
- t.19 = t.16
- if0 t.19 goto :if120_else
-if120_body:
- t.9 = t.9
- t.21 = [t.9+0]
- t.22 = [t.21+32]
- t.20 = call t.22(t.9 )
- t.23 = t.20
- if0 t.23 goto :if124_else
-if124_body:
- t.9 = t.9
- t.25 = [t.9+0]
- t.26 = [t.25+16]
- t.24 = call t.26(t.9 )
- t.9 = t.24
- goto :if124_end
-if124_else:
- t.10 = 0
- t.9 = t.9
- t.28 = [t.9+0]
- t.29 = [t.28+36]
- t.30 = 1
- t.27 = call t.29(t.9 t.30)
- t.4 = t.27
- t.9 = t.9
- t.32 = [t.9+0]
- t.33 = [t.32+8]
- t.34 = t.2
- t.31 = call t.33(t.9 t.34)
- t.4 = t.31
-if124_end:
- goto :if120_end
-if120_else:
- t.9 = t.9
- t.36 = [t.9+0]
- t.37 = [t.36+28]
- t.35 = call t.37(t.9 )
- t.38 = t.35
- if0 t.38 goto :if139_else
-if139_body:
- t.9 = t.9
- t.40 = [t.9+0]
- t.41 = [t.40+12]
- t.39 = call t.41(t.9 )
- t.9 = t.39
- goto :if139_end
-if139_else:
- t.10 = 0
- t.9 = t.9
- t.43 = [t.9+0]
- t.44 = [t.43+40]
- t.45 = 1
- t.42 = call t.44(t.9 t.45)
- t.4 = t.42
- t.9 = t.9
- t.47 = [t.9+0]
- t.48 = [t.47+4]
- t.49 = t.2
- t.46 = call t.48(t.9 t.49)
- t.4 = t.46
-if139_end:
-if120_end:
- goto :while115_test
-while115_end:
- t.50 = 1
- ret t.50
+ t.4 = t.3
+ t.5 = t.4
+ t.2 = t.5
+ t.8 = t.2
+ t.2 = t.8
+ t.9 = [t.2+0]
+ t.10 = [t.9+0]
+ t.11 = t.0
+ t.12 = t.11
+ t.7 = call t.10(t.2 t.12)
+ t.13 = t.7
+ t.6 = t.13
+ t.15 = this
+ t.16 = t.15
+ t.14 = t.16
+ t.18 = 1
+ t.19 = t.18
+ t.17 = t.19
+while240_test:
+ t.20 = t.17
+ t.21 = t.20
+ t.22 = t.21
+ if0 t.22 goto :while240_end
+while240_body:
+ t.25 = t.14
+ t.14 = t.25
+ t.26 = [t.14+0]
+ t.27 = [t.26+20]
+ t.24 = call t.27(t.14)
+ t.28 = t.24
+ t.23 = t.28
+ t.30 = t.0
+ t.31 = t.23
+ t.29 = LtS(t.30 t.31)
+ t.32 = t.29
+ t.33 = t.32
+ if0 t.33 goto :if249_else
+if249_body:
+ t.35 = t.14
+ t.14 = t.35
+ t.36 = [t.14+0]
+ t.37 = [t.36+32]
+ t.34 = call t.37(t.14)
+ t.38 = t.34
+ t.39 = t.38
+ if0 t.39 goto :if254_else
+if254_body:
+ t.41 = t.14
+ t.14 = t.41
+ t.42 = [t.14+0]
+ t.43 = [t.42+16]
+ t.40 = call t.43(t.14)
+ t.44 = t.40
+ t.14 = t.44
+ goto :if254_end
+if254_else:
+ t.45 = 0
+ t.46 = t.45
+ t.17 = t.46
+ t.48 = t.14
+ t.14 = t.48
+ t.49 = [t.14+0]
+ t.50 = [t.49+36]
+ t.51 = 1
+ t.52 = t.51
+ t.47 = call t.50(t.14 t.52)
+ t.53 = t.47
+ t.6 = t.53
+ t.55 = t.14
+ t.14 = t.55
+ t.56 = [t.14+0]
+ t.57 = [t.56+8]
+ t.58 = t.2
+ t.59 = t.58
+ t.54 = call t.57(t.14 t.59)
+ t.60 = t.54
+ t.6 = t.60
+if254_end:
+ goto :if249_end
+if249_else:
+ t.62 = t.14
+ t.14 = t.62
+ t.63 = [t.14+0]
+ t.64 = [t.63+28]
+ t.61 = call t.64(t.14)
+ t.65 = t.61
+ t.66 = t.65
+ if0 t.66 goto :if281_else
+if281_body:
+ t.68 = t.14
+ t.14 = t.68
+ t.69 = [t.14+0]
+ t.70 = [t.69+12]
+ t.67 = call t.70(t.14)
+ t.71 = t.67
+ t.14 = t.71
+ goto :if281_end
+if281_else:
+ t.72 = 0
+ t.73 = t.72
+ t.17 = t.73
+ t.75 = t.14
+ t.14 = t.75
+ t.76 = [t.14+0]
+ t.77 = [t.76+40]
+ t.78 = 1
+ t.79 = t.78
+ t.74 = call t.77(t.14 t.79)
+ t.80 = t.74
+ t.6 = t.80
+ t.82 = t.14
+ t.14 = t.82
+ t.83 = [t.14+0]
+ t.84 = [t.83+4]
+ t.85 = t.2
+ t.86 = t.85
+ t.81 = call t.84(t.14 t.86)
+ t.87 = t.81
+ t.6 = t.87
+if281_end:
+if249_end:
+ goto :while240_test
+while240_end:
+ t.88 = 1
+ t.89 = t.88
+ t.90 = t.89
+ ret t.90
func Tree_Delete(this t.0 )
- t.2 = this
t.3 = this
- t.4 = 1
- t.5 = 0
- t.6 = 1
-while155_test:
- t.7 = t.4
- if0 t.7 goto :while155_end
-while155_body:
- t.2 = t.2
- t.10 = [t.2+0]
- t.11 = [t.10+20]
- t.9 = call t.11(t.2 )
- t.8 = t.9
- t.13 = t.0
- t.14 = t.8
- t.12 = LtS(t.13 t.14)
- t.15 = t.12
- if0 t.15 goto :if160_else
-if160_body:
- t.2 = t.2
- t.17 = [t.2+0]
- t.18 = [t.17+32]
- t.16 = call t.18(t.2 )
- t.19 = t.16
- if0 t.19 goto :if164_else
-if164_body:
- t.3 = t.2
- t.2 = t.2
- t.21 = [t.2+0]
- t.22 = [t.21+16]
- t.20 = call t.22(t.2 )
- t.2 = t.20
- goto :if164_end
-if164_else:
- t.4 = 0
-if164_end:
- goto :if160_end
-if160_else:
- t.24 = t.8
- t.25 = t.0
- t.23 = LtS(t.24 t.25)
- t.26 = t.23
- if0 t.26 goto :if171_else
-if171_body:
- t.2 = t.2
- t.28 = [t.2+0]
- t.29 = [t.28+28]
- t.27 = call t.29(t.2 )
- t.30 = t.27
- if0 t.30 goto :if175_else
-if175_body:
- t.3 = t.2
- t.2 = t.2
- t.32 = [t.2+0]
- t.33 = [t.32+12]
- t.31 = call t.33(t.2 )
- t.2 = t.31
- goto :if175_end
-if175_else:
- t.4 = 0
-if175_end:
- goto :if171_end
-if171_else:
- t.34 = t.6
- if0 t.34 goto :if182_else
-if182_body:
- t.2 = t.2
- t.38 = [t.2+0]
- t.39 = [t.38+28]
- t.37 = call t.39(t.2 )
- t.36 = Eq(t.37 0)
- t.40 = t.36
- t.2 = t.2
- t.43 = [t.2+0]
- t.44 = [t.43+32]
- t.42 = call t.44(t.2 )
- t.41 = Eq(t.42 0)
- t.45 = t.41
- t.46 = Eq(1 t.40)
- t.47 = Eq(1 t.45)
- t.35 = Eq(t.46 t.47)
- t.48 = t.35
- if0 t.48 goto :if183_else
-if183_body:
- t.49 = 1
- goto :if183_end
-if183_else:
- t.51 = [this]
- t.52 = t.3
- t.53 = t.2
- t.51 = [t.51+56]
- t.50 = call t.51(this t.52 t.53)
- t.49 = t.50
-if183_end:
- goto :if182_end
-if182_else:
- t.55 = [this]
- t.56 = t.3
+ t.4 = t.3
+ t.2 = t.4
+ t.6 = this
+ t.7 = t.6
+ t.5 = t.7
+ t.9 = 1
+ t.10 = t.9
+ t.8 = t.10
+ t.12 = 0
+ t.13 = t.12
+ t.11 = t.13
+ t.15 = 1
+ t.16 = t.15
+ t.14 = t.16
+while321_test:
+ t.17 = t.8
+ t.18 = t.17
+ t.19 = t.18
+ if0 t.19 goto :while321_end
+while321_body:
+ t.22 = t.2
+ t.2 = t.22
+ t.23 = [t.2+0]
+ t.24 = [t.23+20]
+ t.21 = call t.24(t.2)
+ t.25 = t.21
+ t.20 = t.25
+ t.27 = t.0
+ t.28 = t.20
+ t.26 = LtS(t.27 t.28)
+ t.29 = t.26
+ t.30 = t.29
+ if0 t.30 goto :if330_else
+if330_body:
+ t.32 = t.2
+ t.2 = t.32
+ t.33 = [t.2+0]
+ t.34 = [t.33+32]
+ t.31 = call t.34(t.2)
+ t.35 = t.31
+ t.36 = t.35
+ if0 t.36 goto :if335_else
+if335_body:
+ t.37 = t.2
+ t.38 = t.37
+ t.5 = t.38
+ t.40 = t.2
+ t.2 = t.40
+ t.41 = [t.2+0]
+ t.42 = [t.41+16]
+ t.39 = call t.42(t.2)
+ t.43 = t.39
+ t.2 = t.43
+ goto :if335_end
+if335_else:
+ t.44 = 0
+ t.45 = t.44
+ t.8 = t.45
+if335_end:
+ goto :if330_end
+if330_else:
+ t.47 = t.20
+ t.48 = t.0
+ t.46 = LtS(t.47 t.48)
+ t.49 = t.46
+ t.50 = t.49
+ if0 t.50 goto :if350_else
+if350_body:
+ t.52 = t.2
+ t.2 = t.52
+ t.53 = [t.2+0]
+ t.54 = [t.53+28]
+ t.51 = call t.54(t.2)
+ t.55 = t.51
+ t.56 = t.55
+ if0 t.56 goto :if355_else
+if355_body:
t.57 = t.2
- t.55 = [t.55+56]
- t.54 = call t.55(this t.56 t.57)
- t.49 = t.54
-if182_end:
- t.5 = 1
- t.4 = 0
-if171_end:
-if160_end:
- t.6 = 0
- goto :while155_test
-while155_end:
- t.58 = t.5
- ret t.58
+ t.58 = t.57
+ t.5 = t.58
+ t.60 = t.2
+ t.2 = t.60
+ t.61 = [t.2+0]
+ t.62 = [t.61+12]
+ t.59 = call t.62(t.2)
+ t.63 = t.59
+ t.2 = t.63
+ goto :if355_end
+if355_else:
+ t.64 = 0
+ t.65 = t.64
+ t.8 = t.65
+if355_end:
+ goto :if350_end
+if350_else:
+ t.66 = t.14
+ t.67 = t.66
+ t.68 = t.67
+ if0 t.68 goto :if370_else
+if370_body:
+ t.72 = t.2
+ t.2 = t.72
+ t.73 = [t.2+0]
+ t.74 = [t.73+28]
+ t.71 = call t.74(t.2)
+ t.75 = t.71
+ t.70 = Eq(t.75 0)
+ t.76 = t.70
+ t.77 = t.76
+ t.78 = t.77
+ t.81 = t.2
+ t.2 = t.81
+ t.82 = [t.2+0]
+ t.83 = [t.82+32]
+ t.80 = call t.83(t.2)
+ t.84 = t.80
+ t.79 = Eq(t.84 0)
+ t.85 = t.79
+ t.86 = t.85
+ t.87 = t.86
+ t.88 = Eq(1 t.78)
+ t.89 = Eq(1 t.87)
+ t.69 = Eq(t.88 t.89)
+ t.90 = t.69
+ t.91 = t.90
+ if0 t.91 goto :if373_else
+if373_body:
+ t.93 = 1
+ t.94 = t.93
+ t.92 = t.94
+ goto :if373_end
+if373_else:
+ t.96 = this
+ t.97 = [this]
+ t.98 = t.5
+ t.99 = t.98
+ t.100 = t.2
+ t.101 = t.100
+ t.97 = [t.97+56]
+ t.95 = call t.97(this t.99 t.101)
+ t.102 = t.95
+ t.92 = t.102
+if373_end:
+ goto :if370_end
+if370_else:
+ t.104 = this
+ t.105 = [this]
+ t.106 = t.5
+ t.107 = t.106
+ t.108 = t.2
+ t.109 = t.108
+ t.105 = [t.105+56]
+ t.103 = call t.105(this t.107 t.109)
+ t.110 = t.103
+ t.92 = t.110
+if370_end:
+ t.111 = 1
+ t.112 = t.111
+ t.11 = t.112
+ t.113 = 0
+ t.114 = t.113
+ t.8 = t.114
+if350_end:
+if330_end:
+ t.115 = 0
+ t.116 = t.115
+ t.14 = t.116
+ goto :while321_test
+while321_end:
+ t.117 = t.11
+ t.118 = t.117
+ t.119 = t.118
+ ret t.119
func Tree_Remove(this t.0 t.1 )
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+32]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :if206_else
-if206_body:
- t.8 = [this]
- t.9 = t.0
- t.10 = t.1
- t.8 = [t.8+64]
- t.7 = call t.8(this t.9 t.10)
- t.6 = t.7
- goto :if206_end
-if206_else:
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+28]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- if0 t.14 goto :if214_else
-if214_body:
- t.16 = [this]
- t.17 = t.0
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+32]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :if423_else
+if423_body:
+ t.10 = this
+ t.11 = [this]
+ t.12 = t.0
+ t.13 = t.12
+ t.14 = t.1
+ t.15 = t.14
+ t.11 = [t.11+64]
+ t.9 = call t.11(this t.13 t.15)
+ t.16 = t.9
+ t.8 = t.16
+ goto :if423_end
+if423_else:
t.18 = t.1
- t.16 = [t.16+60]
- t.15 = call t.16(this t.17 t.18)
- t.6 = t.15
- goto :if214_end
-if214_else:
- t.1 = t.1
- t.21 = [t.1+0]
- t.22 = [t.21+20]
- t.20 = call t.22(t.1 )
- t.19 = t.20
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+16]
- t.25 = call t.27(t.0 )
- t.28 = t.25
- t.29 = [t.28+0]
- t.30 = [t.29+20]
- t.24 = call t.30(t.28 )
- t.23 = t.24
- t.32 = [this]
- t.33 = t.19
- t.34 = t.23
- t.32 = [t.32+44]
- t.31 = call t.32(this t.33 t.34)
- t.35 = t.31
- if0 t.35 goto :if232_else
-if232_body:
- t.0 = t.0
- t.37 = [t.0+0]
- t.38 = [t.37+8]
- t.39 = [this+100]
- t.36 = call t.38(t.0 t.39)
- t.6 = t.36
- t.0 = t.0
+ t.1 = t.18
+ t.19 = [t.1+0]
+ t.20 = [t.19+28]
+ t.17 = call t.20(t.1)
+ t.21 = t.17
+ t.22 = t.21
+ if0 t.22 goto :if437_else
+if437_body:
+ t.24 = this
+ t.25 = [this]
+ t.26 = t.0
+ t.27 = t.26
+ t.28 = t.1
+ t.29 = t.28
+ t.25 = [t.25+60]
+ t.23 = call t.25(this t.27 t.29)
+ t.30 = t.23
+ t.8 = t.30
+ goto :if437_end
+if437_else:
+ t.33 = t.1
+ t.1 = t.33
+ t.34 = [t.1+0]
+ t.35 = [t.34+20]
+ t.32 = call t.35(t.1)
+ t.36 = t.32
+ t.31 = t.36
+ t.40 = t.0
+ t.0 = t.40
t.41 = [t.0+0]
- t.42 = [t.41+36]
- t.43 = 0
- t.40 = call t.42(t.0 t.43)
- t.6 = t.40
- goto :if232_end
-if232_else:
- t.0 = t.0
- t.45 = [t.0+0]
- t.46 = [t.45+4]
- t.47 = [this+100]
- t.44 = call t.46(t.0 t.47)
- t.6 = t.44
- t.0 = t.0
- t.49 = [t.0+0]
- t.50 = [t.49+40]
- t.51 = 0
- t.48 = call t.50(t.0 t.51)
- t.6 = t.48
-if232_end:
-if214_end:
-if206_end:
- t.52 = 1
- ret t.52
+ t.42 = [t.41+16]
+ t.39 = call t.42(t.0)
+ t.43 = t.39
+ t.44 = t.43
+ t.45 = t.44
+ t.46 = [t.45+0]
+ t.47 = [t.46+20]
+ t.38 = call t.47(t.45)
+ t.48 = t.38
+ t.37 = t.48
+ t.50 = this
+ t.51 = [this]
+ t.52 = t.31
+ t.53 = t.52
+ t.54 = t.37
+ t.55 = t.54
+ t.51 = [t.51+44]
+ t.49 = call t.51(this t.53 t.55)
+ t.56 = t.49
+ t.57 = t.56
+ if0 t.57 goto :if467_else
+if467_body:
+ t.59 = t.0
+ t.0 = t.59
+ t.60 = [t.0+0]
+ t.61 = [t.60+8]
+ t.62 = [this+100]
+ t.63 = t.62
+ t.58 = call t.61(t.0 t.63)
+ t.64 = t.58
+ t.8 = t.64
+ t.66 = t.0
+ t.0 = t.66
+ t.67 = [t.0+0]
+ t.68 = [t.67+36]
+ t.69 = 0
+ t.70 = t.69
+ t.65 = call t.68(t.0 t.70)
+ t.71 = t.65
+ t.8 = t.71
+ goto :if467_end
+if467_else:
+ t.73 = t.0
+ t.0 = t.73
+ t.74 = [t.0+0]
+ t.75 = [t.74+4]
+ t.76 = [this+100]
+ t.77 = t.76
+ t.72 = call t.75(t.0 t.77)
+ t.78 = t.72
+ t.8 = t.78
+ t.80 = t.0
+ t.0 = t.80
+ t.81 = [t.0+0]
+ t.82 = [t.81+40]
+ t.83 = 0
+ t.84 = t.83
+ t.79 = call t.82(t.0 t.84)
+ t.85 = t.79
+ t.8 = t.85
+if467_end:
+if437_end:
+if423_end:
+ t.86 = 1
+ t.87 = t.86
+ t.88 = t.87
+ ret t.88
func Tree_RemoveRight(this t.0 t.1 )
-while254_test:
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+28]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :while254_end
-while254_body:
- t.1 = t.1
- t.8 = [t.1+0]
- t.9 = [t.8+24]
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+12]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- t.15 = [t.14+0]
- t.16 = [t.15+20]
- t.10 = call t.16(t.14 )
- t.17 = t.10
- t.7 = call t.9(t.1 t.17)
- t.6 = t.7
- t.0 = t.1
- t.1 = t.1
- t.19 = [t.1+0]
- t.20 = [t.19+12]
- t.18 = call t.20(t.1 )
- t.1 = t.18
- goto :while254_test
-while254_end:
- t.0 = t.0
- t.22 = [t.0+0]
- t.23 = [t.22+4]
- t.24 = [this+100]
- t.21 = call t.23(t.0 t.24)
- t.6 = t.21
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+40]
- t.28 = 0
- t.25 = call t.27(t.0 t.28)
- t.6 = t.25
- t.29 = 1
- ret t.29
+while507_test:
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+28]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :while507_end
+while507_body:
+ t.10 = t.1
+ t.1 = t.10
+ t.11 = [t.1+0]
+ t.12 = [t.11+24]
+ t.15 = t.1
+ t.1 = t.15
+ t.16 = [t.1+0]
+ t.17 = [t.16+12]
+ t.14 = call t.17(t.1)
+ t.18 = t.14
+ t.19 = t.18
+ t.20 = t.19
+ t.21 = [t.20+0]
+ t.22 = [t.21+20]
+ t.13 = call t.22(t.20)
+ t.23 = t.13
+ t.9 = call t.12(t.1 t.23)
+ t.24 = t.9
+ t.8 = t.24
+ t.25 = t.1
+ t.26 = t.25
+ t.0 = t.26
+ t.28 = t.1
+ t.1 = t.28
+ t.29 = [t.1+0]
+ t.30 = [t.29+12]
+ t.27 = call t.30(t.1)
+ t.31 = t.27
+ t.1 = t.31
+ goto :while507_test
+while507_end:
+ t.33 = t.0
+ t.0 = t.33
+ t.34 = [t.0+0]
+ t.35 = [t.34+4]
+ t.36 = [this+100]
+ t.37 = t.36
+ t.32 = call t.35(t.0 t.37)
+ t.38 = t.32
+ t.8 = t.38
+ t.40 = t.0
+ t.0 = t.40
+ t.41 = [t.0+0]
+ t.42 = [t.41+40]
+ t.43 = 0
+ t.44 = t.43
+ t.39 = call t.42(t.0 t.44)
+ t.45 = t.39
+ t.8 = t.45
+ t.46 = 1
+ t.47 = t.46
+ t.48 = t.47
+ ret t.48
func Tree_RemoveLeft(this t.0 t.1 )
-while282_test:
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+32]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :while282_end
-while282_body:
- t.1 = t.1
- t.8 = [t.1+0]
- t.9 = [t.8+24]
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+16]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- t.15 = [t.14+0]
- t.16 = [t.15+20]
- t.10 = call t.16(t.14 )
- t.17 = t.10
- t.7 = call t.9(t.1 t.17)
- t.6 = t.7
- t.0 = t.1
- t.1 = t.1
- t.19 = [t.1+0]
- t.20 = [t.19+16]
- t.18 = call t.20(t.1 )
- t.1 = t.18
- goto :while282_test
-while282_end:
- t.0 = t.0
- t.22 = [t.0+0]
- t.23 = [t.22+8]
- t.24 = [this+100]
- t.21 = call t.23(t.0 t.24)
- t.6 = t.21
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+36]
- t.28 = 0
- t.25 = call t.27(t.0 t.28)
- t.6 = t.25
- t.29 = 1
- ret t.29
+while554_test:
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+32]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :while554_end
+while554_body:
+ t.10 = t.1
+ t.1 = t.10
+ t.11 = [t.1+0]
+ t.12 = [t.11+24]
+ t.15 = t.1
+ t.1 = t.15
+ t.16 = [t.1+0]
+ t.17 = [t.16+16]
+ t.14 = call t.17(t.1)
+ t.18 = t.14
+ t.19 = t.18
+ t.20 = t.19
+ t.21 = [t.20+0]
+ t.22 = [t.21+20]
+ t.13 = call t.22(t.20)
+ t.23 = t.13
+ t.9 = call t.12(t.1 t.23)
+ t.24 = t.9
+ t.8 = t.24
+ t.25 = t.1
+ t.26 = t.25
+ t.0 = t.26
+ t.28 = t.1
+ t.1 = t.28
+ t.29 = [t.1+0]
+ t.30 = [t.29+16]
+ t.27 = call t.30(t.1)
+ t.31 = t.27
+ t.1 = t.31
+ goto :while554_test
+while554_end:
+ t.33 = t.0
+ t.0 = t.33
+ t.34 = [t.0+0]
+ t.35 = [t.34+8]
+ t.36 = [this+100]
+ t.37 = t.36
+ t.32 = call t.35(t.0 t.37)
+ t.38 = t.32
+ t.8 = t.38
+ t.40 = t.0
+ t.0 = t.40
+ t.41 = [t.0+0]
+ t.42 = [t.41+36]
+ t.43 = 0
+ t.44 = t.43
+ t.39 = call t.42(t.0 t.44)
+ t.45 = t.39
+ t.8 = t.45
+ t.46 = 1
+ t.47 = t.46
+ t.48 = t.47
+ ret t.48
func Tree_Search(this t.0 )
- t.2 = this
- t.3 = 1
- t.4 = 0
-while310_test:
- t.5 = t.3
- if0 t.5 goto :while310_end
-while310_body:
- t.2 = t.2
- t.8 = [t.2+0]
- t.9 = [t.8+20]
- t.7 = call t.9(t.2 )
- t.6 = t.7
- t.11 = t.0
- t.12 = t.6
- t.10 = LtS(t.11 t.12)
- t.13 = t.10
- if0 t.13 goto :if315_else
-if315_body:
- t.2 = t.2
- t.15 = [t.2+0]
- t.16 = [t.15+32]
- t.14 = call t.16(t.2 )
- t.17 = t.14
- if0 t.17 goto :if319_else
-if319_body:
- t.2 = t.2
- t.19 = [t.2+0]
- t.20 = [t.19+16]
- t.18 = call t.20(t.2 )
- t.2 = t.18
- goto :if319_end
-if319_else:
- t.3 = 0
-if319_end:
- goto :if315_end
-if315_else:
- t.22 = t.6
- t.23 = t.0
- t.21 = LtS(t.22 t.23)
- t.24 = t.21
- if0 t.24 goto :if326_else
-if326_body:
- t.2 = t.2
- t.26 = [t.2+0]
- t.27 = [t.26+28]
- t.25 = call t.27(t.2 )
- t.28 = t.25
- if0 t.28 goto :if330_else
-if330_body:
- t.2 = t.2
- t.30 = [t.2+0]
- t.31 = [t.30+12]
- t.29 = call t.31(t.2 )
- t.2 = t.29
- goto :if330_end
-if330_else:
- t.3 = 0
-if330_end:
- goto :if326_end
-if326_else:
- t.4 = 1
- t.3 = 0
-if326_end:
-if315_end:
- goto :while310_test
-while310_end:
- t.32 = t.4
- ret t.32
-
-func Tree_Print(this )
- t.1 = this
- t.4 = [this]
- t.5 = t.1
- t.4 = [t.4+76]
- t.3 = call t.4(this t.5)
- t.2 = t.3
+ t.3 = this
+ t.4 = t.3
+ t.2 = t.4
t.6 = 1
- ret t.6
+ t.7 = t.6
+ t.5 = t.7
+ t.9 = 0
+ t.10 = t.9
+ t.8 = t.10
+while607_test:
+ t.11 = t.5
+ t.12 = t.11
+ t.13 = t.12
+ if0 t.13 goto :while607_end
+while607_body:
+ t.16 = t.2
+ t.2 = t.16
+ t.17 = [t.2+0]
+ t.18 = [t.17+20]
+ t.15 = call t.18(t.2)
+ t.19 = t.15
+ t.14 = t.19
+ t.21 = t.0
+ t.22 = t.14
+ t.20 = LtS(t.21 t.22)
+ t.23 = t.20
+ t.24 = t.23
+ if0 t.24 goto :if616_else
+if616_body:
+ t.26 = t.2
+ t.2 = t.26
+ t.27 = [t.2+0]
+ t.28 = [t.27+32]
+ t.25 = call t.28(t.2)
+ t.29 = t.25
+ t.30 = t.29
+ if0 t.30 goto :if621_else
+if621_body:
+ t.32 = t.2
+ t.2 = t.32
+ t.33 = [t.2+0]
+ t.34 = [t.33+16]
+ t.31 = call t.34(t.2)
+ t.35 = t.31
+ t.2 = t.35
+ goto :if621_end
+if621_else:
+ t.36 = 0
+ t.37 = t.36
+ t.5 = t.37
+if621_end:
+ goto :if616_end
+if616_else:
+ t.39 = t.14
+ t.40 = t.0
+ t.38 = LtS(t.39 t.40)
+ t.41 = t.38
+ t.42 = t.41
+ if0 t.42 goto :if634_else
+if634_body:
+ t.44 = t.2
+ t.2 = t.44
+ t.45 = [t.2+0]
+ t.46 = [t.45+28]
+ t.43 = call t.46(t.2)
+ t.47 = t.43
+ t.48 = t.47
+ if0 t.48 goto :if639_else
+if639_body:
+ t.50 = t.2
+ t.2 = t.50
+ t.51 = [t.2+0]
+ t.52 = [t.51+12]
+ t.49 = call t.52(t.2)
+ t.53 = t.49
+ t.2 = t.53
+ goto :if639_end
+if639_else:
+ t.54 = 0
+ t.55 = t.54
+ t.5 = t.55
+if639_end:
+ goto :if634_end
+if634_else:
+ t.56 = 1
+ t.57 = t.56
+ t.8 = t.57
+ t.58 = 0
+ t.59 = t.58
+ t.5 = t.59
+if634_end:
+if616_end:
+ goto :while607_test
+while607_end:
+ t.60 = t.8
+ t.61 = t.60
+ t.62 = t.61
+ ret t.62
-func Tree_RecPrint(this t.0 )
- t.0 = t.0
- t.2 = [t.0+0]
- t.3 = [t.2+32]
- t.1 = call t.3(t.0 )
- t.4 = t.1
- if0 t.4 goto :if342_else
-if342_body:
+func Tree_Print(this )
+ t.2 = this
+ t.3 = t.2
+ t.1 = t.3
+ t.6 = this
t.7 = [this]
- t.0 = t.0
- t.9 = [t.0+0]
- t.10 = [t.9+16]
- t.8 = call t.10(t.0 )
- t.11 = t.8
+ t.8 = t.1
+ t.9 = t.8
t.7 = [t.7+76]
- t.6 = call t.7(this t.11)
- t.5 = t.6
- goto :if342_end
-if342_else:
- t.5 = 1
-if342_end:
- t.0 = t.0
+ t.5 = call t.7(this t.9)
+ t.10 = t.5
+ t.4 = t.10
+ t.11 = 1
+ t.12 = t.11
+ t.13 = t.12
+ ret t.13
+
+func Tree_RecPrint(this t.0 )
+ t.2 = t.0
+ t.0 = t.2
+ t.3 = [t.0+0]
+ t.4 = [t.3+32]
+ t.1 = call t.4(t.0)
+ t.5 = t.1
+ t.6 = t.5
+ if0 t.6 goto :if670_else
+if670_body:
+ t.9 = this
+ t.10 = [this]
+ t.12 = t.0
+ t.0 = t.12
t.13 = [t.0+0]
- t.14 = [t.13+20]
- t.12 = call t.14(t.0 )
- t.15 = t.12
- PrintIntS(t.15)
- t.0 = t.0
- t.17 = [t.0+0]
- t.18 = [t.17+28]
- t.16 = call t.18(t.0 )
- t.19 = t.16
- if0 t.19 goto :if356_else
-if356_body:
- t.21 = [this]
- t.0 = t.0
- t.23 = [t.0+0]
- t.24 = [t.23+12]
- t.22 = call t.24(t.0 )
- t.25 = t.22
- t.21 = [t.21+76]
- t.20 = call t.21(this t.25)
- t.5 = t.20
- goto :if356_end
-if356_else:
- t.5 = 1
-if356_end:
- t.26 = 1
- ret t.26
+ t.14 = [t.13+16]
+ t.11 = call t.14(t.0)
+ t.15 = t.11
+ t.10 = [t.10+76]
+ t.8 = call t.10(this t.15)
+ t.16 = t.8
+ t.7 = t.16
+ goto :if670_end
+if670_else:
+ t.17 = 1
+ t.18 = t.17
+ t.7 = t.18
+if670_end:
+ t.20 = t.0
+ t.0 = t.20
+ t.21 = [t.0+0]
+ t.22 = [t.21+20]
+ t.19 = call t.22(t.0)
+ t.23 = t.19
+ t.24 = t.23
+ PrintIntS(t.24)
+ t.26 = t.0
+ t.0 = t.26
+ t.27 = [t.0+0]
+ t.28 = [t.27+28]
+ t.25 = call t.28(t.0)
+ t.29 = t.25
+ t.30 = t.29
+ if0 t.30 goto :if693_else
+if693_body:
+ t.32 = this
+ t.33 = [this]
+ t.35 = t.0
+ t.0 = t.35
+ t.36 = [t.0+0]
+ t.37 = [t.36+12]
+ t.34 = call t.37(t.0)
+ t.38 = t.34
+ t.33 = [t.33+76]
+ t.31 = call t.33(this t.38)
+ t.39 = t.31
+ t.7 = t.39
+ goto :if693_end
+if693_else:
+ t.40 = 1
+ t.41 = t.40
+ t.7 = t.41
+if693_end:
+ t.42 = 1
+ t.43 = t.42
+ t.44 = t.43
+ ret t.44
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/BubbleSort.vapor b/output/BubbleSort.vapor
index 5315afc..c2cf8ab 100644
--- a/output/BubbleSort.vapor
+++ b/output/BubbleSort.vapor
@@ -2,12 +2,15 @@ func Main()
t.3 = HeapAllocZ(24)
[t.3+0] = :functable_BBS
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 10
- t.2 = call t.6(t.4 t.7)
- t.8 = t.2
- PrintIntS(t.8)
+ t.7 = [t.6+0]
+ t.8 = 10
+ t.9 = t.8
+ t.2 = call t.7(t.5 t.9)
+ t.10 = t.2
+ t.11 = t.10
+ PrintIntS(t.11)
ret
const functable_BBS
@@ -17,202 +20,308 @@ const functable_BBS
:BBS_Init
func BBS_Start(this t.0 )
- t.3 = [this]
- t.4 = t.0
- t.3 = [t.3+12]
- t.2 = call t.3(this t.4)
- t.1 = t.2
- t.6 = [this]
- t.6 = [t.6+8]
- t.5 = call t.6(this )
- t.1 = t.5
- t.7 = 99999
- PrintIntS(t.7)
- t.9 = [this]
- t.9 = [t.9+4]
- t.8 = call t.9(this )
- t.1 = t.8
- t.11 = [this]
- t.11 = [t.11+8]
- t.10 = call t.11(this )
- t.1 = t.10
- t.12 = 0
- ret t.12
+ t.3 = this
+ t.4 = [this]
+ t.5 = t.0
+ t.6 = t.5
+ t.4 = [t.4+12]
+ t.2 = call t.4(this t.6)
+ t.7 = t.2
+ t.1 = t.7
+ t.9 = this
+ t.10 = [this]
+ t.10 = [t.10+8]
+ t.8 = call t.10(this)
+ t.11 = t.8
+ t.1 = t.11
+ t.12 = 99999
+ t.13 = t.12
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.16 = this
+ t.17 = [this]
+ t.17 = [t.17+4]
+ t.15 = call t.17(this)
+ t.18 = t.15
+ t.1 = t.18
+ t.20 = this
+ t.21 = [this]
+ t.21 = [t.21+8]
+ t.19 = call t.21(this)
+ t.22 = t.19
+ t.1 = t.22
+ t.23 = 0
+ t.24 = t.23
+ t.25 = t.24
+ ret t.25
func BBS_Sort(this )
t.2 = [this+20]
t.3 = 1
t.1 = Sub(t.2 t.3)
- t.0 = t.1
- t.6 = 0
- t.7 = 1
- t.5 = Sub(t.6 t.7)
- t.4 = t.5
-while23_test:
- t.9 = t.4
- t.10 = t.0
- t.8 = LtS(t.9 t.10)
- t.11 = t.8
- if0 t.11 goto :while23_end
-while23_body:
- t.12 = 1
-while28_test:
- t.14 = t.12
- t.16 = t.0
- t.17 = 1
- t.15 = Add(t.16 t.17)
- t.18 = t.15
- t.13 = LtS(t.14 t.18)
- t.19 = t.13
- if0 t.19 goto :while28_end
-while28_body:
- t.22 = t.12
- t.23 = 1
- t.21 = Sub(t.22 t.23)
- t.20 = t.21
- t.26 = [this+16]
- t.27 = MulS(t.20 4)
- t.27 = Add(t.27 4)
- t.27 = Add(t.26 t.27)
- t.25 = [t.27]
- t.24 = t.25
- t.30 = [this+16]
- t.31 = MulS(t.12 4)
- t.31 = Add(t.31 4)
- t.31 = Add(t.30 t.31)
- t.29 = [t.31]
- t.28 = t.29
- t.33 = t.28
- t.34 = t.24
- t.32 = LtS(t.33 t.34)
- t.35 = t.32
- if0 t.35 goto :if45_else
-if45_body:
- t.38 = t.12
- t.39 = 1
- t.37 = Sub(t.38 t.39)
- t.36 = t.37
+ t.4 = t.1
+ t.0 = t.4
+ t.7 = 0
+ t.8 = 1
+ t.6 = Sub(t.7 t.8)
+ t.9 = t.6
+ t.5 = t.9
+while41_test:
+ t.11 = t.5
+ t.12 = t.0
+ t.10 = LtS(t.11 t.12)
+ t.13 = t.10
+ t.14 = t.13
+ if0 t.14 goto :while41_end
+while41_body:
+ t.16 = 1
+ t.17 = t.16
+ t.15 = t.17
+while49_test:
+ t.19 = t.15
+ t.21 = t.0
+ t.22 = 1
+ t.20 = Add(t.21 t.22)
+ t.23 = t.20
+ t.24 = t.23
+ t.18 = LtS(t.19 t.24)
+ t.25 = t.18
+ t.26 = t.25
+ if0 t.26 goto :while49_end
+while49_body:
+ t.29 = t.15
+ t.30 = 1
+ t.28 = Sub(t.29 t.30)
+ t.31 = t.28
+ t.27 = t.31
+ t.35 = [this+16]
+ t.34 = t.35
+ t.37 = t.27
+ t.36 = MulS(t.37 4)
+ t.36 = Add(t.36 4)
+ t.36 = Add(t.34 t.36)
+ t.33 = [t.36]
+ t.38 = t.33
+ t.32 = t.38
t.42 = [this+16]
- t.43 = MulS(t.36 4)
+ t.41 = t.42
+ t.44 = t.15
+ t.43 = MulS(t.44 4)
t.43 = Add(t.43 4)
- t.43 = Add(t.42 t.43)
- t.41 = [t.43]
- t.40 = t.41
- t.44 = [this+16]
- t.45 = MulS(t.36 4)
- t.45 = Add(t.45 4)
- t.45 = Add(t.44 t.45)
- t.47 = [this+16]
- t.48 = MulS(t.12 4)
- t.48 = Add(t.48 4)
- t.48 = Add(t.47 t.48)
- t.46 = [t.48]
- [t.45] = t.46
- t.49 = [this+16]
- t.50 = MulS(t.12 4)
- t.50 = Add(t.50 4)
- t.50 = Add(t.49 t.50)
- [t.50] = t.40
- goto :if45_end
-if45_else:
- t.51 = 0
-if45_end:
- t.53 = t.12
+ t.43 = Add(t.41 t.43)
+ t.40 = [t.43]
+ t.45 = t.40
+ t.39 = t.45
+ t.47 = t.39
+ t.48 = t.32
+ t.46 = LtS(t.47 t.48)
+ t.49 = t.46
+ t.50 = t.49
+ if0 t.50 goto :if75_else
+if75_body:
+ t.53 = t.15
t.54 = 1
- t.52 = Add(t.53 t.54)
- t.12 = t.52
- goto :while28_test
-while28_end:
- t.56 = t.0
- t.57 = 1
- t.55 = Sub(t.56 t.57)
- t.0 = t.55
- goto :while23_test
-while23_end:
- t.58 = 0
- ret t.58
+ t.52 = Sub(t.53 t.54)
+ t.55 = t.52
+ t.51 = t.55
+ t.59 = [this+16]
+ t.58 = t.59
+ t.61 = t.51
+ t.60 = MulS(t.61 4)
+ t.60 = Add(t.60 4)
+ t.60 = Add(t.58 t.60)
+ t.57 = [t.60]
+ t.62 = t.57
+ t.56 = t.62
+ t.63 = [this+16]
+ t.65 = t.51
+ t.66 = t.65
+ t.64 = MulS(t.66 4)
+ t.64 = Add(t.64 4)
+ t.64 = Add(t.63 t.64)
+ t.69 = [this+16]
+ t.68 = t.69
+ t.71 = t.15
+ t.70 = MulS(t.71 4)
+ t.70 = Add(t.70 4)
+ t.70 = Add(t.68 t.70)
+ t.67 = [t.70]
+ t.72 = t.67
+ [t.64] = t.72
+ t.73 = [this+16]
+ t.75 = t.15
+ t.76 = t.75
+ t.74 = MulS(t.76 4)
+ t.74 = Add(t.74 4)
+ t.74 = Add(t.73 t.74)
+ t.77 = t.56
+ t.78 = t.77
+ [t.74] = t.78
+ goto :if75_end
+if75_else:
+ t.80 = 0
+ t.81 = t.80
+ t.79 = t.81
+if75_end:
+ t.83 = t.15
+ t.84 = 1
+ t.82 = Add(t.83 t.84)
+ t.85 = t.82
+ t.15 = t.85
+ goto :while49_test
+while49_end:
+ t.87 = t.0
+ t.88 = 1
+ t.86 = Sub(t.87 t.88)
+ t.89 = t.86
+ t.0 = t.89
+ goto :while41_test
+while41_end:
+ t.90 = 0
+ t.91 = t.90
+ t.92 = t.91
+ ret t.92
func BBS_Print(this )
- t.0 = 0
-while69_test:
- t.2 = t.0
- t.3 = [this+20]
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :while69_end
-while69_body:
- t.6 = [this+16]
- t.7 = MulS(t.0 4)
- t.7 = Add(t.7 4)
- t.7 = Add(t.6 t.7)
- t.5 = [t.7]
- t.8 = t.5
- PrintIntS(t.8)
- t.10 = t.0
- t.11 = 1
- t.9 = Add(t.10 t.11)
- t.0 = t.9
- goto :while69_test
-while69_end:
- t.12 = 0
- ret t.12
+ t.1 = 0
+ t.2 = t.1
+ t.0 = t.2
+while121_test:
+ t.4 = t.0
+ t.5 = [this+20]
+ t.6 = t.5
+ t.7 = t.6
+ t.3 = LtS(t.4 t.7)
+ t.8 = t.3
+ t.9 = t.8
+ if0 t.9 goto :while121_end
+while121_body:
+ t.12 = [this+16]
+ t.11 = t.12
+ t.14 = t.0
+ t.13 = MulS(t.14 4)
+ t.13 = Add(t.13 4)
+ t.13 = Add(t.11 t.13)
+ t.10 = [t.13]
+ t.15 = t.10
+ t.16 = t.15
+ PrintIntS(t.16)
+ t.18 = t.0
+ t.19 = 1
+ t.17 = Add(t.18 t.19)
+ t.20 = t.17
+ t.0 = t.20
+ goto :while121_test
+while121_end:
+ t.21 = 0
+ t.22 = t.21
+ t.23 = t.22
+ ret t.23
func BBS_Init(this t.0 )
- [this+20] = t.0
- t.1 = call :AllocArray(t.0)
- [this+16] = t.1
- t.2 = [this+16]
- t.3 = MulS(0 4)
- t.3 = Add(t.3 4)
- t.3 = Add(t.2 t.3)
- [t.3] = 20
- t.4 = [this+16]
- t.5 = MulS(1 4)
- t.5 = Add(t.5 4)
- t.5 = Add(t.4 t.5)
- [t.5] = 7
- t.6 = [this+16]
- t.7 = MulS(2 4)
- t.7 = Add(t.7 4)
- t.7 = Add(t.6 t.7)
- [t.7] = 12
+ t.1 = t.0
+ t.2 = t.1
+ [this+20] = t.2
+ t.3 = t.0
+ t.4 = t.3
+ t.5 = call :AllocArray(t.4)
+ t.6 = t.5
+ t.7 = t.6
+ [this+16] = t.7
t.8 = [this+16]
- t.9 = MulS(3 4)
+ t.10 = 0
+ t.11 = t.10
+ t.9 = MulS(t.11 4)
t.9 = Add(t.9 4)
t.9 = Add(t.8 t.9)
- [t.9] = 18
- t.10 = [this+16]
- t.11 = MulS(4 4)
- t.11 = Add(t.11 4)
- t.11 = Add(t.10 t.11)
- [t.11] = 2
- t.12 = [this+16]
- t.13 = MulS(5 4)
- t.13 = Add(t.13 4)
- t.13 = Add(t.12 t.13)
- [t.13] = 11
+ t.12 = 20
+ t.13 = t.12
+ [t.9] = t.13
t.14 = [this+16]
- t.15 = MulS(6 4)
+ t.16 = 1
+ t.17 = t.16
+ t.15 = MulS(t.17 4)
t.15 = Add(t.15 4)
t.15 = Add(t.14 t.15)
- [t.15] = 6
- t.16 = [this+16]
- t.17 = MulS(7 4)
- t.17 = Add(t.17 4)
- t.17 = Add(t.16 t.17)
- [t.17] = 9
- t.18 = [this+16]
- t.19 = MulS(8 4)
- t.19 = Add(t.19 4)
- t.19 = Add(t.18 t.19)
- [t.19] = 19
+ t.18 = 7
+ t.19 = t.18
+ [t.15] = t.19
t.20 = [this+16]
- t.21 = MulS(9 4)
+ t.22 = 2
+ t.23 = t.22
+ t.21 = MulS(t.23 4)
t.21 = Add(t.21 4)
t.21 = Add(t.20 t.21)
- [t.21] = 5
- t.22 = 0
- ret t.22
+ t.24 = 12
+ t.25 = t.24
+ [t.21] = t.25
+ t.26 = [this+16]
+ t.28 = 3
+ t.29 = t.28
+ t.27 = MulS(t.29 4)
+ t.27 = Add(t.27 4)
+ t.27 = Add(t.26 t.27)
+ t.30 = 18
+ t.31 = t.30
+ [t.27] = t.31
+ t.32 = [this+16]
+ t.34 = 4
+ t.35 = t.34
+ t.33 = MulS(t.35 4)
+ t.33 = Add(t.33 4)
+ t.33 = Add(t.32 t.33)
+ t.36 = 2
+ t.37 = t.36
+ [t.33] = t.37
+ t.38 = [this+16]
+ t.40 = 5
+ t.41 = t.40
+ t.39 = MulS(t.41 4)
+ t.39 = Add(t.39 4)
+ t.39 = Add(t.38 t.39)
+ t.42 = 11
+ t.43 = t.42
+ [t.39] = t.43
+ t.44 = [this+16]
+ t.46 = 6
+ t.47 = t.46
+ t.45 = MulS(t.47 4)
+ t.45 = Add(t.45 4)
+ t.45 = Add(t.44 t.45)
+ t.48 = 6
+ t.49 = t.48
+ [t.45] = t.49
+ t.50 = [this+16]
+ t.52 = 7
+ t.53 = t.52
+ t.51 = MulS(t.53 4)
+ t.51 = Add(t.51 4)
+ t.51 = Add(t.50 t.51)
+ t.54 = 9
+ t.55 = t.54
+ [t.51] = t.55
+ t.56 = [this+16]
+ t.58 = 8
+ t.59 = t.58
+ t.57 = MulS(t.59 4)
+ t.57 = Add(t.57 4)
+ t.57 = Add(t.56 t.57)
+ t.60 = 19
+ t.61 = t.60
+ [t.57] = t.61
+ t.62 = [this+16]
+ t.64 = 9
+ t.65 = t.64
+ t.63 = MulS(t.65 4)
+ t.63 = Add(t.63 4)
+ t.63 = Add(t.62 t.63)
+ t.66 = 5
+ t.67 = t.66
+ [t.63] = t.67
+ t.68 = 0
+ t.69 = t.68
+ t.70 = t.69
+ ret t.70
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/Factorial.vapor b/output/Factorial.vapor
index 713ef06..e66f122 100644
--- a/output/Factorial.vapor
+++ b/output/Factorial.vapor
@@ -2,12 +2,15 @@ func Main()
t.3 = HeapAllocZ(4)
[t.3+0] = :functable_Fac
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 10
- t.2 = call t.6(t.4 t.7)
- t.8 = t.2
- PrintIntS(t.8)
+ t.7 = [t.6+0]
+ t.8 = 10
+ t.9 = t.8
+ t.2 = call t.7(t.5 t.9)
+ t.10 = t.2
+ t.11 = t.10
+ PrintIntS(t.11)
ret
const functable_Fac
@@ -18,25 +21,33 @@ func Fac_ComputeFac(this t.0 )
t.3 = 1
t.1 = LtS(t.2 t.3)
t.4 = t.1
- if0 t.4 goto :if6_else
-if6_body:
- t.5 = 1
- goto :if6_end
-if6_else:
- t.7 = t.0
- t.9 = [this]
- t.11 = t.0
- t.12 = 1
- t.10 = Sub(t.11 t.12)
- t.13 = t.10
- t.9 = [t.9+0]
- t.8 = call t.9(this t.13)
- t.14 = t.8
- t.6 = MulS(t.7 t.14)
- t.5 = t.6
-if6_end:
- t.15 = t.5
- ret t.15
+ t.5 = t.4
+ if0 t.5 goto :if9_else
+if9_body:
+ t.7 = 1
+ t.8 = t.7
+ t.6 = t.8
+ goto :if9_end
+if9_else:
+ t.10 = t.0
+ t.12 = this
+ t.13 = [this]
+ t.15 = t.0
+ t.16 = 1
+ t.14 = Sub(t.15 t.16)
+ t.17 = t.14
+ t.13 = [t.13+0]
+ t.11 = call t.13(this t.17)
+ t.18 = t.11
+ t.19 = t.18
+ t.9 = MulS(t.10 t.19)
+ t.20 = t.9
+ t.6 = t.20
+if9_end:
+ t.21 = t.6
+ t.22 = t.21
+ t.23 = t.22
+ ret t.23
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/LinearSearch.vapor b/output/LinearSearch.vapor
index 868e715..a595d8b 100644
--- a/output/LinearSearch.vapor
+++ b/output/LinearSearch.vapor
@@ -2,12 +2,15 @@ func Main()
t.3 = HeapAllocZ(24)
[t.3+0] = :functable_LS
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 10
- t.2 = call t.6(t.4 t.7)
- t.8 = t.2
- PrintIntS(t.8)
+ t.7 = [t.6+0]
+ t.8 = 10
+ t.9 = t.8
+ t.2 = call t.7(t.5 t.9)
+ t.10 = t.2
+ t.11 = t.10
+ PrintIntS(t.11)
ret
const functable_LS
@@ -17,167 +20,252 @@ const functable_LS
:LS_Init
func LS_Start(this t.0 )
- t.3 = [this]
- t.4 = t.0
- t.3 = [t.3+12]
- t.2 = call t.3(this t.4)
- t.1 = t.2
- t.7 = [this]
- t.7 = [t.7+4]
- t.6 = call t.7(this )
- t.5 = t.6
- t.8 = 9999
- PrintIntS(t.8)
- t.10 = [this]
- t.11 = 8
- t.10 = [t.10+8]
- t.9 = call t.10(this t.11)
+ t.3 = this
+ t.4 = [this]
+ t.5 = t.0
+ t.6 = t.5
+ t.4 = [t.4+12]
+ t.2 = call t.4(this t.6)
+ t.7 = t.2
+ t.1 = t.7
+ t.10 = this
+ t.11 = [this]
+ t.11 = [t.11+4]
+ t.9 = call t.11(this)
t.12 = t.9
- PrintIntS(t.12)
- t.14 = [this]
- t.15 = 12
- t.14 = [t.14+8]
- t.13 = call t.14(this t.15)
- t.16 = t.13
- PrintIntS(t.16)
+ t.8 = t.12
+ t.13 = 9999
+ t.14 = t.13
+ t.15 = t.14
+ PrintIntS(t.15)
+ t.17 = this
t.18 = [this]
- t.19 = 17
+ t.19 = 8
+ t.20 = t.19
t.18 = [t.18+8]
- t.17 = call t.18(this t.19)
- t.20 = t.17
- PrintIntS(t.20)
- t.22 = [this]
- t.23 = 50
- t.22 = [t.22+8]
- t.21 = call t.22(this t.23)
- t.24 = t.21
- PrintIntS(t.24)
- t.25 = 55
- ret t.25
+ t.16 = call t.18(this t.20)
+ t.21 = t.16
+ t.22 = t.21
+ PrintIntS(t.22)
+ t.24 = this
+ t.25 = [this]
+ t.26 = 12
+ t.27 = t.26
+ t.25 = [t.25+8]
+ t.23 = call t.25(this t.27)
+ t.28 = t.23
+ t.29 = t.28
+ PrintIntS(t.29)
+ t.31 = this
+ t.32 = [this]
+ t.33 = 17
+ t.34 = t.33
+ t.32 = [t.32+8]
+ t.30 = call t.32(this t.34)
+ t.35 = t.30
+ t.36 = t.35
+ PrintIntS(t.36)
+ t.38 = this
+ t.39 = [this]
+ t.40 = 50
+ t.41 = t.40
+ t.39 = [t.39+8]
+ t.37 = call t.39(this t.41)
+ t.42 = t.37
+ t.43 = t.42
+ PrintIntS(t.43)
+ t.44 = 55
+ t.45 = t.44
+ t.46 = t.45
+ ret t.46
func LS_Print(this )
- t.0 = 1
-while29_test:
- t.2 = t.0
- t.3 = [this+20]
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :while29_end
-while29_body:
- t.6 = [this+16]
- t.7 = MulS(t.0 4)
- t.7 = Add(t.7 4)
- t.7 = Add(t.6 t.7)
- t.5 = [t.7]
- t.8 = t.5
- PrintIntS(t.8)
- t.10 = t.0
- t.11 = 1
- t.9 = Add(t.10 t.11)
- t.0 = t.9
- goto :while29_test
-while29_end:
- t.12 = 0
- ret t.12
-
-func LS_Search(this t.0 )
t.1 = 1
- t.2 = 0
- t.3 = 0
-while42_test:
- t.5 = t.1
- t.6 = [this+20]
- t.4 = LtS(t.5 t.6)
- t.7 = t.4
- if0 t.7 goto :while42_end
-while42_body:
- t.10 = [this+16]
- t.11 = MulS(t.1 4)
- t.11 = Add(t.11 4)
- t.11 = Add(t.10 t.11)
- t.9 = [t.11]
- t.8 = t.9
+ t.2 = t.1
+ t.0 = t.2
+while55_test:
+ t.4 = t.0
+ t.5 = [this+20]
+ t.6 = t.5
+ t.7 = t.6
+ t.3 = LtS(t.4 t.7)
+ t.8 = t.3
+ t.9 = t.8
+ if0 t.9 goto :while55_end
+while55_body:
+ t.12 = [this+16]
+ t.11 = t.12
t.14 = t.0
- t.15 = 1
- t.13 = Add(t.14 t.15)
- t.12 = t.13
- t.17 = t.8
+ t.13 = MulS(t.14 4)
+ t.13 = Add(t.13 4)
+ t.13 = Add(t.11 t.13)
+ t.10 = [t.13]
+ t.15 = t.10
+ t.16 = t.15
+ PrintIntS(t.16)
t.18 = t.0
- t.16 = LtS(t.17 t.18)
- t.19 = t.16
- if0 t.19 goto :if53_else
-if53_body:
- t.20 = 0
- goto :if53_end
-if53_else:
- t.23 = t.8
- t.24 = t.12
- t.22 = LtS(t.23 t.24)
- t.21 = Eq(t.22 0)
- t.25 = t.21
- if0 t.25 goto :if57_else
-if57_body:
- t.20 = 0
- goto :if57_end
-if57_else:
+ t.19 = 1
+ t.17 = Add(t.18 t.19)
+ t.20 = t.17
+ t.0 = t.20
+ goto :while55_test
+while55_end:
+ t.21 = 0
+ t.22 = t.21
+ t.23 = t.22
+ ret t.23
+
+func LS_Search(this t.0 )
t.2 = 1
- t.3 = 1
- t.1 = [this+20]
-if57_end:
-if53_end:
- t.27 = t.1
- t.28 = 1
- t.26 = Add(t.27 t.28)
- t.1 = t.26
- goto :while42_test
-while42_end:
- t.29 = t.3
- ret t.29
+ t.3 = t.2
+ t.1 = t.3
+ t.5 = 0
+ t.6 = t.5
+ t.4 = t.6
+ t.8 = 0
+ t.9 = t.8
+ t.7 = t.9
+while83_test:
+ t.11 = t.1
+ t.12 = [this+20]
+ t.13 = t.12
+ t.14 = t.13
+ t.10 = LtS(t.11 t.14)
+ t.15 = t.10
+ t.16 = t.15
+ if0 t.16 goto :while83_end
+while83_body:
+ t.20 = [this+16]
+ t.19 = t.20
+ t.22 = t.1
+ t.21 = MulS(t.22 4)
+ t.21 = Add(t.21 4)
+ t.21 = Add(t.19 t.21)
+ t.18 = [t.21]
+ t.23 = t.18
+ t.17 = t.23
+ t.26 = t.0
+ t.27 = 1
+ t.25 = Add(t.26 t.27)
+ t.28 = t.25
+ t.24 = t.28
+ t.30 = t.17
+ t.31 = t.0
+ t.29 = LtS(t.30 t.31)
+ t.32 = t.29
+ t.33 = t.32
+ if0 t.33 goto :if101_else
+if101_body:
+ t.35 = 0
+ t.36 = t.35
+ t.34 = t.36
+ goto :if101_end
+if101_else:
+ t.39 = t.17
+ t.40 = t.24
+ t.38 = LtS(t.39 t.40)
+ t.41 = t.38
+ t.42 = t.41
+ t.43 = t.42
+ t.37 = Eq(t.43 0)
+ t.44 = t.37
+ t.45 = t.44
+ t.46 = t.45
+ if0 t.46 goto :if108_else
+if108_body:
+ t.47 = 0
+ t.48 = t.47
+ t.34 = t.48
+ goto :if108_end
+if108_else:
+ t.49 = 1
+ t.50 = t.49
+ t.4 = t.50
+ t.51 = 1
+ t.52 = t.51
+ t.7 = t.52
+ t.53 = [this+20]
+ t.54 = t.53
+ t.1 = t.54
+if108_end:
+if101_end:
+ t.56 = t.1
+ t.57 = 1
+ t.55 = Add(t.56 t.57)
+ t.58 = t.55
+ t.1 = t.58
+ goto :while83_test
+while83_end:
+ t.59 = t.7
+ t.60 = t.59
+ t.61 = t.60
+ ret t.61
func LS_Init(this t.0 )
- [this+20] = t.0
- t.1 = call :AllocArray(t.0)
- [this+16] = t.1
- t.2 = 1
- t.5 = [this+20]
- t.6 = 1
- t.4 = Add(t.5 t.6)
- t.3 = t.4
-while70_test:
- t.8 = t.2
- t.9 = [this+20]
- t.7 = LtS(t.8 t.9)
- t.10 = t.7
- if0 t.10 goto :while70_end
-while70_body:
- t.13 = 2
- t.14 = t.2
- t.12 = MulS(t.13 t.14)
- t.11 = t.12
- t.17 = t.3
- t.18 = 3
- t.16 = Sub(t.17 t.18)
- t.15 = t.16
- t.19 = [this+16]
- t.20 = MulS(t.2 4)
- t.20 = Add(t.20 4)
- t.20 = Add(t.19 t.20)
- t.22 = t.11
- t.23 = t.15
- t.21 = Add(t.22 t.23)
- [t.20] = t.21
- t.25 = t.2
- t.26 = 1
- t.24 = Add(t.25 t.26)
- t.2 = t.24
- t.28 = t.3
- t.29 = 1
- t.27 = Sub(t.28 t.29)
- t.3 = t.27
- goto :while70_test
-while70_end:
- t.30 = 0
- ret t.30
+ t.1 = t.0
+ t.2 = t.1
+ [this+20] = t.2
+ t.3 = t.0
+ t.4 = t.3
+ t.5 = call :AllocArray(t.4)
+ t.6 = t.5
+ t.7 = t.6
+ [this+16] = t.7
+ t.9 = 1
+ t.10 = t.9
+ t.8 = t.10
+ t.13 = [this+20]
+ t.14 = 1
+ t.12 = Add(t.13 t.14)
+ t.15 = t.12
+ t.11 = t.15
+while146_test:
+ t.17 = t.8
+ t.18 = [this+20]
+ t.19 = t.18
+ t.20 = t.19
+ t.16 = LtS(t.17 t.20)
+ t.21 = t.16
+ t.22 = t.21
+ if0 t.22 goto :while146_end
+while146_body:
+ t.25 = 2
+ t.26 = t.8
+ t.24 = MulS(t.25 t.26)
+ t.27 = t.24
+ t.23 = t.27
+ t.30 = t.11
+ t.31 = 3
+ t.29 = Sub(t.30 t.31)
+ t.32 = t.29
+ t.28 = t.32
+ t.33 = [this+16]
+ t.35 = t.8
+ t.36 = t.35
+ t.34 = MulS(t.36 4)
+ t.34 = Add(t.34 4)
+ t.34 = Add(t.33 t.34)
+ t.38 = t.23
+ t.39 = t.28
+ t.37 = Add(t.38 t.39)
+ t.40 = t.37
+ [t.34] = t.40
+ t.42 = t.8
+ t.43 = 1
+ t.41 = Add(t.42 t.43)
+ t.44 = t.41
+ t.8 = t.44
+ t.46 = t.11
+ t.47 = 1
+ t.45 = Sub(t.46 t.47)
+ t.48 = t.45
+ t.11 = t.48
+ goto :while146_test
+while146_end:
+ t.49 = 0
+ t.50 = t.49
+ t.51 = t.50
+ ret t.51
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/LinkedList.vapor b/output/LinkedList.vapor
index 6a04bc4..1c9f2ec 100644
--- a/output/LinkedList.vapor
+++ b/output/LinkedList.vapor
@@ -2,11 +2,13 @@ func Main()
t.3 = HeapAllocZ(4)
[t.3+0] = :functable_LL
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.2 = call t.6(t.4 )
- t.7 = t.2
- PrintIntS(t.7)
+ t.7 = [t.6+0]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
ret
const functable_Element
@@ -18,126 +20,197 @@ const functable_Element
:Element_Compare
func Element_Init(this t.0 t.1 t.2 )
- [this+24] = t.0
- [this+28] = t.1
- [this+32] = t.2
- t.3 = 1
- ret t.3
+ t.3 = t.0
+ t.4 = t.3
+ [this+24] = t.4
+ t.5 = t.1
+ t.6 = t.5
+ [this+28] = t.6
+ t.7 = t.2
+ t.8 = t.7
+ [this+32] = t.8
+ t.9 = 1
+ t.10 = t.9
+ t.11 = t.10
+ ret t.11
func Element_GetAge(this )
t.0 = [this+24]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Element_GetSalary(this )
t.0 = [this+28]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Element_GetMarried(this )
t.0 = [this+32]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Element_Equal(this t.0 )
- t.1 = 1
- t.0 = t.0
- t.4 = [t.0+0]
- t.5 = [t.4+4]
- t.3 = call t.5(t.0 )
- t.2 = t.3
- t.8 = [this]
- t.9 = t.2
- t.10 = [this+24]
- t.8 = [t.8+20]
- t.7 = call t.8(this t.9 t.10)
- t.6 = Eq(t.7 0)
- t.11 = t.6
- if0 t.11 goto :if12_else
-if12_body:
- t.1 = 0
- goto :if12_end
-if12_else:
- t.0 = t.0
- t.14 = [t.0+0]
- t.15 = [t.14+8]
- t.13 = call t.15(t.0 )
- t.12 = t.13
- t.18 = [this]
- t.19 = t.12
- t.20 = [this+28]
- t.18 = [t.18+20]
- t.17 = call t.18(this t.19 t.20)
- t.16 = Eq(t.17 0)
- t.21 = t.16
- if0 t.21 goto :if21_else
-if21_body:
- t.1 = 0
- goto :if21_end
-if21_else:
- t.22 = [this+32]
- if0 t.22 goto :if27_else
-if27_body:
- t.0 = t.0
- t.25 = [t.0+0]
- t.26 = [t.25+12]
- t.24 = call t.26(t.0 )
- t.23 = Eq(t.24 0)
- t.27 = t.23
- if0 t.27 goto :if28_else
-if28_body:
- t.1 = 0
- goto :if28_end
-if28_else:
- t.28 = 0
-if28_end:
- goto :if27_end
-if27_else:
- t.0 = t.0
- t.30 = [t.0+0]
- t.31 = [t.30+12]
- t.29 = call t.31(t.0 )
- t.32 = t.29
- if0 t.32 goto :if33_else
-if33_body:
- t.1 = 0
- goto :if33_end
-if33_else:
- t.28 = 0
-if33_end:
-if27_end:
-if21_end:
-if12_end:
- t.33 = t.1
- ret t.33
+ t.2 = 1
+ t.3 = t.2
+ t.1 = t.3
+ t.6 = t.0
+ t.0 = t.6
+ t.7 = [t.0+0]
+ t.8 = [t.7+4]
+ t.5 = call t.8(t.0)
+ t.9 = t.5
+ t.4 = t.9
+ t.12 = this
+ t.13 = [this]
+ t.14 = t.4
+ t.15 = t.14
+ t.16 = [this+24]
+ t.17 = t.16
+ t.13 = [t.13+20]
+ t.11 = call t.13(this t.15 t.17)
+ t.18 = t.11
+ t.10 = Eq(t.18 0)
+ t.19 = t.10
+ t.20 = t.19
+ t.21 = t.20
+ if0 t.21 goto :if32_else
+if32_body:
+ t.22 = 0
+ t.23 = t.22
+ t.1 = t.23
+ goto :if32_end
+if32_else:
+ t.26 = t.0
+ t.0 = t.26
+ t.27 = [t.0+0]
+ t.28 = [t.27+8]
+ t.25 = call t.28(t.0)
+ t.29 = t.25
+ t.24 = t.29
+ t.32 = this
+ t.33 = [this]
+ t.34 = t.24
+ t.35 = t.34
+ t.36 = [this+28]
+ t.37 = t.36
+ t.33 = [t.33+20]
+ t.31 = call t.33(this t.35 t.37)
+ t.38 = t.31
+ t.30 = Eq(t.38 0)
+ t.39 = t.30
+ t.40 = t.39
+ t.41 = t.40
+ if0 t.41 goto :if51_else
+if51_body:
+ t.42 = 0
+ t.43 = t.42
+ t.1 = t.43
+ goto :if51_end
+if51_else:
+ t.44 = [this+32]
+ t.45 = t.44
+ t.46 = t.45
+ if0 t.46 goto :if65_else
+if65_body:
+ t.49 = t.0
+ t.0 = t.49
+ t.50 = [t.0+0]
+ t.51 = [t.50+12]
+ t.48 = call t.51(t.0)
+ t.52 = t.48
+ t.47 = Eq(t.52 0)
+ t.53 = t.47
+ t.54 = t.53
+ t.55 = t.54
+ if0 t.55 goto :if68_else
+if68_body:
+ t.56 = 0
+ t.57 = t.56
+ t.1 = t.57
+ goto :if68_end
+if68_else:
+ t.59 = 0
+ t.60 = t.59
+ t.58 = t.60
+if68_end:
+ goto :if65_end
+if65_else:
+ t.62 = t.0
+ t.0 = t.62
+ t.63 = [t.0+0]
+ t.64 = [t.63+12]
+ t.61 = call t.64(t.0)
+ t.65 = t.61
+ t.66 = t.65
+ if0 t.66 goto :if81_else
+if81_body:
+ t.67 = 0
+ t.68 = t.67
+ t.1 = t.68
+ goto :if81_end
+if81_else:
+ t.69 = 0
+ t.70 = t.69
+ t.58 = t.70
+if81_end:
+if65_end:
+if51_end:
+if32_end:
+ t.71 = t.1
+ t.72 = t.71
+ t.73 = t.72
+ ret t.73
func Element_Compare(this t.0 t.1 )
- t.2 = 0
- t.5 = t.1
- t.6 = 1
- t.4 = Add(t.5 t.6)
- t.3 = t.4
- t.8 = t.0
- t.9 = t.1
- t.7 = LtS(t.8 t.9)
- t.10 = t.7
- if0 t.10 goto :if41_else
-if41_body:
- t.2 = 0
- goto :if41_end
-if41_else:
- t.13 = t.0
- t.14 = t.3
- t.12 = LtS(t.13 t.14)
- t.11 = Eq(t.12 0)
- t.15 = t.11
- if0 t.15 goto :if45_else
-if45_body:
- t.2 = 0
- goto :if45_end
-if45_else:
- t.2 = 1
-if45_end:
-if41_end:
- t.16 = t.2
- ret t.16
+ t.3 = 0
+ t.4 = t.3
+ t.2 = t.4
+ t.7 = t.1
+ t.8 = 1
+ t.6 = Add(t.7 t.8)
+ t.9 = t.6
+ t.5 = t.9
+ t.11 = t.0
+ t.12 = t.1
+ t.10 = LtS(t.11 t.12)
+ t.13 = t.10
+ t.14 = t.13
+ if0 t.14 goto :if100_else
+if100_body:
+ t.15 = 0
+ t.16 = t.15
+ t.2 = t.16
+ goto :if100_end
+if100_else:
+ t.19 = t.0
+ t.20 = t.5
+ t.18 = LtS(t.19 t.20)
+ t.21 = t.18
+ t.22 = t.21
+ t.23 = t.22
+ t.17 = Eq(t.23 0)
+ t.24 = t.17
+ t.25 = t.24
+ t.26 = t.25
+ if0 t.26 goto :if107_else
+if107_body:
+ t.27 = 0
+ t.28 = t.27
+ t.2 = t.28
+ goto :if107_end
+if107_else:
+ t.29 = 1
+ t.30 = t.29
+ t.2 = t.30
+if107_end:
+if100_end:
+ t.31 = t.2
+ t.32 = t.31
+ t.33 = t.32
+ ret t.33
const functable_List
:List_Init
@@ -152,226 +225,361 @@ const functable_List
:List_Print
func List_Init(this )
- [this+48] = 1
t.0 = 1
- ret t.0
+ t.1 = t.0
+ [this+48] = t.1
+ t.2 = 1
+ t.3 = t.2
+ t.4 = t.3
+ ret t.4
func List_InitNew(this t.0 t.1 t.2 )
- [this+48] = t.2
- [this+40] = t.0
- [this+44] = t.1
- t.3 = 1
- ret t.3
+ t.3 = t.2
+ t.4 = t.3
+ [this+48] = t.4
+ t.5 = t.0
+ t.6 = t.5
+ [this+40] = t.6
+ t.7 = t.1
+ t.8 = t.7
+ [this+44] = t.8
+ t.9 = 1
+ t.10 = t.9
+ t.11 = t.10
+ ret t.11
func List_Insert(this t.0 )
- t.2 = this
- t.4 = HeapAllocZ(52)
- [t.4+0] = :functable_List
- t.3 = t.4
- t.3 = t.3
- t.7 = [t.3+0]
- t.8 = [t.7+4]
- t.9 = t.0
- t.10 = t.2
- t.11 = 0
- t.6 = call t.8(t.3 t.9 t.10 t.11)
- t.5 = t.6
- t.12 = t.3
- ret t.12
+ t.3 = this
+ t.4 = t.3
+ t.2 = t.4
+ t.6 = HeapAllocZ(52)
+ [t.6+0] = :functable_List
+ t.7 = t.6
+ t.8 = t.7
+ t.5 = t.8
+ t.11 = t.5
+ t.5 = t.11
+ t.12 = [t.5+0]
+ t.13 = [t.12+4]
+ t.14 = t.0
+ t.15 = t.14
+ t.16 = t.2
+ t.17 = t.16
+ t.18 = 0
+ t.19 = t.18
+ t.10 = call t.13(t.5 t.15 t.17 t.19)
+ t.20 = t.10
+ t.9 = t.20
+ t.21 = t.5
+ t.22 = t.21
+ t.23 = t.22
+ ret t.23
func List_SetNext(this t.0 )
- [this+44] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+44] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func List_Delete(this t.0 )
- t.3 = this
- t.4 = 0
+ t.4 = this
+ t.5 = t.4
+ t.3 = t.5
t.7 = 0
- t.8 = 1
- t.6 = Sub(t.7 t.8)
- t.5 = t.6
- t.9 = this
- t.10 = this
- t.11 = [this+48]
- t.12 = [this+40]
-while65_test:
- t.14 = Eq(t.11 0)
- t.15 = t.14
- t.16 = Eq(t.4 0)
- t.17 = t.16
- t.18 = Eq(1 t.15)
- t.19 = Eq(1 t.17)
- t.13 = Eq(t.18 t.19)
- t.20 = t.13
- if0 t.20 goto :while65_end
-while65_body:
- t.0 = t.0
- t.22 = [t.0+0]
- t.23 = [t.22+16]
- t.24 = t.12
- t.21 = call t.23(t.0 t.24)
- t.25 = t.21
- if0 t.25 goto :if74_else
-if74_body:
- t.4 = 1
- t.27 = t.5
- t.28 = 0
- t.26 = LtS(t.27 t.28)
- t.29 = t.26
- if0 t.29 goto :if79_else
-if79_body:
- t.9 = t.9
- t.31 = [t.9+0]
- t.32 = [t.31+32]
- t.30 = call t.32(t.9 )
- t.3 = t.30
- goto :if79_end
-if79_else:
- t.34 = 0
- t.35 = 555
- t.33 = Sub(t.34 t.35)
+ t.8 = t.7
+ t.6 = t.8
+ t.11 = 0
+ t.12 = 1
+ t.10 = Sub(t.11 t.12)
+ t.13 = t.10
+ t.9 = t.13
+ t.15 = this
+ t.16 = t.15
+ t.14 = t.16
+ t.18 = this
+ t.19 = t.18
+ t.17 = t.19
+ t.21 = [this+48]
+ t.22 = t.21
+ t.20 = t.22
+ t.24 = [this+40]
+ t.25 = t.24
+ t.23 = t.25
+while178_test:
+ t.28 = t.20
+ t.29 = t.28
+ t.27 = Eq(t.29 0)
+ t.30 = t.27
+ t.31 = t.30
+ t.32 = t.31
+ t.34 = t.6
+ t.35 = t.34
+ t.33 = Eq(t.35 0)
t.36 = t.33
- PrintIntS(t.36)
- t.10 = t.10
- t.39 = [t.10+0]
- t.40 = [t.39+12]
- t.9 = t.9
- t.42 = [t.9+0]
- t.43 = [t.42+32]
- t.41 = call t.43(t.9 )
- t.44 = t.41
- t.38 = call t.40(t.10 t.44)
- t.37 = t.38
- t.46 = 0
- t.47 = 555
- t.45 = Sub(t.46 t.47)
- t.48 = t.45
- PrintIntS(t.48)
-if79_end:
- goto :if74_end
-if74_else:
- t.49 = 0
-if74_end:
- t.50 = Eq(t.4 0)
- t.51 = t.50
- if0 t.51 goto :if101_else
-if101_body:
- t.10 = t.9
- t.9 = t.9
- t.53 = [t.9+0]
- t.54 = [t.53+32]
- t.52 = call t.54(t.9 )
- t.9 = t.52
- t.9 = t.9
- t.56 = [t.9+0]
- t.57 = [t.56+24]
- t.55 = call t.57(t.9 )
- t.11 = t.55
- t.9 = t.9
- t.59 = [t.9+0]
- t.60 = [t.59+28]
- t.58 = call t.60(t.9 )
- t.12 = t.58
- t.5 = 1
- goto :if101_end
-if101_else:
- t.49 = 0
-if101_end:
- goto :while65_test
-while65_end:
- t.61 = t.3
- ret t.61
+ t.37 = t.36
+ t.38 = t.37
+ t.39 = Eq(1 t.32)
+ t.40 = Eq(1 t.38)
+ t.26 = Eq(t.39 t.40)
+ t.41 = t.26
+ t.42 = t.41
+ if0 t.42 goto :while178_end
+while178_body:
+ t.44 = t.0
+ t.0 = t.44
+ t.45 = [t.0+0]
+ t.46 = [t.45+16]
+ t.47 = t.23
+ t.48 = t.47
+ t.43 = call t.46(t.0 t.48)
+ t.49 = t.43
+ t.50 = t.49
+ if0 t.50 goto :if196_else
+if196_body:
+ t.51 = 1
+ t.52 = t.51
+ t.6 = t.52
+ t.54 = t.9
+ t.55 = 0
+ t.53 = LtS(t.54 t.55)
+ t.56 = t.53
+ t.57 = t.56
+ if0 t.57 goto :if206_else
+if206_body:
+ t.59 = t.14
+ t.14 = t.59
+ t.60 = [t.14+0]
+ t.61 = [t.60+32]
+ t.58 = call t.61(t.14)
+ t.62 = t.58
+ t.3 = t.62
+ goto :if206_end
+if206_else:
+ t.64 = 0
+ t.65 = 555
+ t.63 = Sub(t.64 t.65)
+ t.66 = t.63
+ t.67 = t.66
+ PrintIntS(t.67)
+ t.70 = t.17
+ t.17 = t.70
+ t.71 = [t.17+0]
+ t.72 = [t.71+12]
+ t.74 = t.14
+ t.14 = t.74
+ t.75 = [t.14+0]
+ t.76 = [t.75+32]
+ t.73 = call t.76(t.14)
+ t.77 = t.73
+ t.69 = call t.72(t.17 t.77)
+ t.78 = t.69
+ t.68 = t.78
+ t.80 = 0
+ t.81 = 555
+ t.79 = Sub(t.80 t.81)
+ t.82 = t.79
+ t.83 = t.82
+ PrintIntS(t.83)
+if206_end:
+ goto :if196_end
+if196_else:
+ t.85 = 0
+ t.86 = t.85
+ t.84 = t.86
+if196_end:
+ t.88 = t.6
+ t.89 = t.88
+ t.87 = Eq(t.89 0)
+ t.90 = t.87
+ t.91 = t.90
+ t.92 = t.91
+ if0 t.92 goto :if238_else
+if238_body:
+ t.93 = t.14
+ t.94 = t.93
+ t.17 = t.94
+ t.96 = t.14
+ t.14 = t.96
+ t.97 = [t.14+0]
+ t.98 = [t.97+32]
+ t.95 = call t.98(t.14)
+ t.99 = t.95
+ t.14 = t.99
+ t.101 = t.14
+ t.14 = t.101
+ t.102 = [t.14+0]
+ t.103 = [t.102+24]
+ t.100 = call t.103(t.14)
+ t.104 = t.100
+ t.20 = t.104
+ t.106 = t.14
+ t.14 = t.106
+ t.107 = [t.14+0]
+ t.108 = [t.107+28]
+ t.105 = call t.108(t.14)
+ t.109 = t.105
+ t.23 = t.109
+ t.110 = 1
+ t.111 = t.110
+ t.9 = t.111
+ goto :if238_end
+if238_else:
+ t.112 = 0
+ t.113 = t.112
+ t.84 = t.113
+if238_end:
+ goto :while178_test
+while178_end:
+ t.114 = t.3
+ t.115 = t.114
+ t.116 = t.115
+ ret t.116
func List_Search(this t.0 )
- t.3 = 0
- t.4 = this
- t.5 = [this+48]
- t.6 = [this+40]
-while113_test:
- t.7 = Eq(t.5 0)
+ t.4 = 0
+ t.5 = t.4
+ t.3 = t.5
+ t.7 = this
t.8 = t.7
- if0 t.8 goto :while113_end
-while113_body:
- t.0 = t.0
- t.10 = [t.0+0]
- t.11 = [t.10+16]
- t.12 = t.6
- t.9 = call t.11(t.0 t.12)
- t.13 = t.9
- if0 t.13 goto :if116_else
-if116_body:
- t.3 = 1
- goto :if116_end
-if116_else:
- t.14 = 0
-if116_end:
- t.4 = t.4
- t.16 = [t.4+0]
- t.17 = [t.16+32]
- t.15 = call t.17(t.4 )
- t.4 = t.15
- t.4 = t.4
- t.19 = [t.4+0]
- t.20 = [t.19+24]
- t.18 = call t.20(t.4 )
- t.5 = t.18
- t.4 = t.4
- t.22 = [t.4+0]
- t.23 = [t.22+28]
- t.21 = call t.23(t.4 )
- t.6 = t.21
- goto :while113_test
-while113_end:
- t.24 = t.3
- ret t.24
+ t.6 = t.8
+ t.10 = [this+48]
+ t.11 = t.10
+ t.9 = t.11
+ t.13 = [this+40]
+ t.14 = t.13
+ t.12 = t.14
+while276_test:
+ t.16 = t.9
+ t.17 = t.16
+ t.15 = Eq(t.17 0)
+ t.18 = t.15
+ t.19 = t.18
+ t.20 = t.19
+ if0 t.20 goto :while276_end
+while276_body:
+ t.22 = t.0
+ t.0 = t.22
+ t.23 = [t.0+0]
+ t.24 = [t.23+16]
+ t.25 = t.12
+ t.26 = t.25
+ t.21 = call t.24(t.0 t.26)
+ t.27 = t.21
+ t.28 = t.27
+ if0 t.28 goto :if283_else
+if283_body:
+ t.29 = 1
+ t.30 = t.29
+ t.3 = t.30
+ goto :if283_end
+if283_else:
+ t.32 = 0
+ t.33 = t.32
+ t.31 = t.33
+if283_end:
+ t.35 = t.6
+ t.6 = t.35
+ t.36 = [t.6+0]
+ t.37 = [t.36+32]
+ t.34 = call t.37(t.6)
+ t.38 = t.34
+ t.6 = t.38
+ t.40 = t.6
+ t.6 = t.40
+ t.41 = [t.6+0]
+ t.42 = [t.41+24]
+ t.39 = call t.42(t.6)
+ t.43 = t.39
+ t.9 = t.43
+ t.45 = t.6
+ t.6 = t.45
+ t.46 = [t.6+0]
+ t.47 = [t.46+28]
+ t.44 = call t.47(t.6)
+ t.48 = t.44
+ t.12 = t.48
+ goto :while276_test
+while276_end:
+ t.49 = t.3
+ t.50 = t.49
+ t.51 = t.50
+ ret t.51
func List_GetEnd(this )
t.0 = [this+48]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func List_GetElem(this )
t.0 = [this+40]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func List_GetNext(this )
t.0 = [this+44]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func List_Print(this )
- t.2 = this
- t.3 = [this+48]
- t.4 = [this+40]
-while134_test:
- t.5 = Eq(t.3 0)
- t.6 = t.5
- if0 t.6 goto :while134_end
-while134_body:
- t.4 = t.4
- t.8 = [t.4+0]
- t.9 = [t.8+4]
- t.7 = call t.9(t.4 )
- t.10 = t.7
- PrintIntS(t.10)
- t.2 = t.2
- t.12 = [t.2+0]
- t.13 = [t.12+32]
- t.11 = call t.13(t.2 )
- t.2 = t.11
- t.2 = t.2
- t.15 = [t.2+0]
- t.16 = [t.15+24]
- t.14 = call t.16(t.2 )
- t.3 = t.14
- t.2 = t.2
- t.18 = [t.2+0]
- t.19 = [t.18+28]
- t.17 = call t.19(t.2 )
- t.4 = t.17
- goto :while134_test
-while134_end:
- t.20 = 1
- ret t.20
+ t.3 = this
+ t.4 = t.3
+ t.2 = t.4
+ t.6 = [this+48]
+ t.7 = t.6
+ t.5 = t.7
+ t.9 = [this+40]
+ t.10 = t.9
+ t.8 = t.10
+while328_test:
+ t.12 = t.5
+ t.13 = t.12
+ t.11 = Eq(t.13 0)
+ t.14 = t.11
+ t.15 = t.14
+ t.16 = t.15
+ if0 t.16 goto :while328_end
+while328_body:
+ t.18 = t.8
+ t.8 = t.18
+ t.19 = [t.8+0]
+ t.20 = [t.19+4]
+ t.17 = call t.20(t.8)
+ t.21 = t.17
+ t.22 = t.21
+ PrintIntS(t.22)
+ t.24 = t.2
+ t.2 = t.24
+ t.25 = [t.2+0]
+ t.26 = [t.25+32]
+ t.23 = call t.26(t.2)
+ t.27 = t.23
+ t.2 = t.27
+ t.29 = t.2
+ t.2 = t.29
+ t.30 = [t.2+0]
+ t.31 = [t.30+24]
+ t.28 = call t.31(t.2)
+ t.32 = t.28
+ t.5 = t.32
+ t.34 = t.2
+ t.2 = t.34
+ t.35 = [t.2+0]
+ t.36 = [t.35+28]
+ t.33 = call t.36(t.2)
+ t.37 = t.33
+ t.8 = t.37
+ goto :while328_test
+while328_end:
+ t.38 = 1
+ t.39 = t.38
+ t.40 = t.39
+ ret t.40
const functable_LL
:LL_Start
@@ -379,173 +587,270 @@ const functable_LL
func LL_Start(this )
t.3 = HeapAllocZ(52)
[t.3+0] = :functable_List
- t.2 = t.3
- t.2 = t.2
- t.6 = [t.2+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.2 )
- t.4 = t.5
+ t.4 = t.3
+ t.5 = t.4
+ t.2 = t.5
t.8 = t.2
- t.8 = t.8
- t.10 = [t.8+0]
- t.11 = [t.10+0]
- t.9 = call t.11(t.8 )
- t.4 = t.9
- t.8 = t.8
- t.13 = [t.8+0]
- t.14 = [t.13+36]
- t.12 = call t.14(t.8 )
- t.4 = t.12
- t.16 = HeapAllocZ(36)
- [t.16+0] = :functable_Element
- t.15 = t.16
- t.15 = t.15
- t.18 = [t.15+0]
- t.19 = [t.18+0]
- t.20 = 25
- t.21 = 37000
- t.22 = 0
- t.17 = call t.19(t.15 t.20 t.21 t.22)
- t.4 = t.17
- t.8 = t.8
- t.24 = [t.8+0]
- t.25 = [t.24+8]
- t.26 = t.15
- t.23 = call t.25(t.8 t.26)
- t.8 = t.23
- t.8 = t.8
- t.28 = [t.8+0]
- t.29 = [t.28+36]
- t.27 = call t.29(t.8 )
- t.4 = t.27
- t.30 = 10000000
- PrintIntS(t.30)
- t.31 = HeapAllocZ(36)
- [t.31+0] = :functable_Element
- t.15 = t.31
- t.15 = t.15
- t.33 = [t.15+0]
- t.34 = [t.33+0]
- t.35 = 39
- t.36 = 42000
- t.37 = 1
- t.32 = call t.34(t.15 t.35 t.36 t.37)
- t.4 = t.32
- t.38 = t.15
- t.8 = t.8
- t.40 = [t.8+0]
- t.41 = [t.40+8]
- t.42 = t.15
- t.39 = call t.41(t.8 t.42)
- t.8 = t.39
- t.8 = t.8
- t.44 = [t.8+0]
- t.45 = [t.44+36]
- t.43 = call t.45(t.8 )
- t.4 = t.43
- t.46 = 10000000
- PrintIntS(t.46)
- t.47 = HeapAllocZ(36)
- [t.47+0] = :functable_Element
- t.15 = t.47
- t.15 = t.15
- t.49 = [t.15+0]
- t.50 = [t.49+0]
- t.51 = 22
- t.52 = 34000
- t.53 = 0
- t.48 = call t.50(t.15 t.51 t.52 t.53)
- t.4 = t.48
- t.8 = t.8
- t.55 = [t.8+0]
- t.56 = [t.55+8]
- t.57 = t.15
- t.54 = call t.56(t.8 t.57)
- t.8 = t.54
- t.8 = t.8
- t.59 = [t.8+0]
- t.60 = [t.59+36]
- t.58 = call t.60(t.8 )
- t.4 = t.58
- t.62 = HeapAllocZ(36)
- [t.62+0] = :functable_Element
- t.61 = t.62
- t.61 = t.61
- t.64 = [t.61+0]
- t.65 = [t.64+0]
- t.66 = 27
- t.67 = 34000
- t.68 = 0
- t.63 = call t.65(t.61 t.66 t.67 t.68)
- t.4 = t.63
- t.8 = t.8
- t.70 = [t.8+0]
- t.71 = [t.70+20]
- t.72 = t.38
- t.69 = call t.71(t.8 t.72)
- t.73 = t.69
- PrintIntS(t.73)
- t.8 = t.8
- t.75 = [t.8+0]
- t.76 = [t.75+20]
- t.77 = t.61
- t.74 = call t.76(t.8 t.77)
- t.78 = t.74
- PrintIntS(t.78)
- t.79 = 10000000
- PrintIntS(t.79)
- t.80 = HeapAllocZ(36)
- [t.80+0] = :functable_Element
- t.15 = t.80
- t.15 = t.15
- t.82 = [t.15+0]
- t.83 = [t.82+0]
- t.84 = 28
- t.85 = 35000
- t.86 = 0
- t.81 = call t.83(t.15 t.84 t.85 t.86)
- t.4 = t.81
- t.8 = t.8
- t.88 = [t.8+0]
- t.89 = [t.88+8]
- t.90 = t.15
- t.87 = call t.89(t.8 t.90)
- t.8 = t.87
- t.8 = t.8
- t.92 = [t.8+0]
- t.93 = [t.92+36]
- t.91 = call t.93(t.8 )
- t.4 = t.91
- t.94 = 2220000
- PrintIntS(t.94)
- t.8 = t.8
- t.96 = [t.8+0]
- t.97 = [t.96+16]
- t.98 = t.38
- t.95 = call t.97(t.8 t.98)
- t.8 = t.95
- t.8 = t.8
- t.100 = [t.8+0]
- t.101 = [t.100+36]
- t.99 = call t.101(t.8 )
- t.4 = t.99
- t.102 = 33300000
- PrintIntS(t.102)
- t.8 = t.8
- t.104 = [t.8+0]
- t.105 = [t.104+16]
- t.106 = t.15
- t.103 = call t.105(t.8 t.106)
- t.8 = t.103
- t.8 = t.8
- t.108 = [t.8+0]
- t.109 = [t.108+36]
- t.107 = call t.109(t.8 )
- t.4 = t.107
- t.110 = 44440000
- PrintIntS(t.110)
- t.111 = 0
- ret t.111
+ t.2 = t.8
+ t.9 = [t.2+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.2)
+ t.11 = t.7
+ t.6 = t.11
+ t.13 = t.2
+ t.14 = t.13
+ t.12 = t.14
+ t.16 = t.12
+ t.12 = t.16
+ t.17 = [t.12+0]
+ t.18 = [t.17+0]
+ t.15 = call t.18(t.12)
+ t.19 = t.15
+ t.6 = t.19
+ t.21 = t.12
+ t.12 = t.21
+ t.22 = [t.12+0]
+ t.23 = [t.22+36]
+ t.20 = call t.23(t.12)
+ t.24 = t.20
+ t.6 = t.24
+ t.26 = HeapAllocZ(36)
+ [t.26+0] = :functable_Element
+ t.27 = t.26
+ t.28 = t.27
+ t.25 = t.28
+ t.30 = t.25
+ t.25 = t.30
+ t.31 = [t.25+0]
+ t.32 = [t.31+0]
+ t.33 = 25
+ t.34 = t.33
+ t.35 = 37000
+ t.36 = t.35
+ t.37 = 0
+ t.38 = t.37
+ t.29 = call t.32(t.25 t.34 t.36 t.38)
+ t.39 = t.29
+ t.6 = t.39
+ t.41 = t.12
+ t.12 = t.41
+ t.42 = [t.12+0]
+ t.43 = [t.42+8]
+ t.44 = t.25
+ t.45 = t.44
+ t.40 = call t.43(t.12 t.45)
+ t.46 = t.40
+ t.12 = t.46
+ t.48 = t.12
+ t.12 = t.48
+ t.49 = [t.12+0]
+ t.50 = [t.49+36]
+ t.47 = call t.50(t.12)
+ t.51 = t.47
+ t.6 = t.51
+ t.52 = 10000000
+ t.53 = t.52
+ t.54 = t.53
+ PrintIntS(t.54)
+ t.55 = HeapAllocZ(36)
+ [t.55+0] = :functable_Element
+ t.56 = t.55
+ t.57 = t.56
+ t.25 = t.57
+ t.59 = t.25
+ t.25 = t.59
+ t.60 = [t.25+0]
+ t.61 = [t.60+0]
+ t.62 = 39
+ t.63 = t.62
+ t.64 = 42000
+ t.65 = t.64
+ t.66 = 1
+ t.67 = t.66
+ t.58 = call t.61(t.25 t.63 t.65 t.67)
+ t.68 = t.58
+ t.6 = t.68
+ t.70 = t.25
+ t.71 = t.70
+ t.69 = t.71
+ t.73 = t.12
+ t.12 = t.73
+ t.74 = [t.12+0]
+ t.75 = [t.74+8]
+ t.76 = t.25
+ t.77 = t.76
+ t.72 = call t.75(t.12 t.77)
+ t.78 = t.72
+ t.12 = t.78
+ t.80 = t.12
+ t.12 = t.80
+ t.81 = [t.12+0]
+ t.82 = [t.81+36]
+ t.79 = call t.82(t.12)
+ t.83 = t.79
+ t.6 = t.83
+ t.84 = 10000000
+ t.85 = t.84
+ t.86 = t.85
+ PrintIntS(t.86)
+ t.87 = HeapAllocZ(36)
+ [t.87+0] = :functable_Element
+ t.88 = t.87
+ t.89 = t.88
+ t.25 = t.89
+ t.91 = t.25
+ t.25 = t.91
+ t.92 = [t.25+0]
+ t.93 = [t.92+0]
+ t.94 = 22
+ t.95 = t.94
+ t.96 = 34000
+ t.97 = t.96
+ t.98 = 0
+ t.99 = t.98
+ t.90 = call t.93(t.25 t.95 t.97 t.99)
+ t.100 = t.90
+ t.6 = t.100
+ t.102 = t.12
+ t.12 = t.102
+ t.103 = [t.12+0]
+ t.104 = [t.103+8]
+ t.105 = t.25
+ t.106 = t.105
+ t.101 = call t.104(t.12 t.106)
+ t.107 = t.101
+ t.12 = t.107
+ t.109 = t.12
+ t.12 = t.109
+ t.110 = [t.12+0]
+ t.111 = [t.110+36]
+ t.108 = call t.111(t.12)
+ t.112 = t.108
+ t.6 = t.112
+ t.114 = HeapAllocZ(36)
+ [t.114+0] = :functable_Element
+ t.115 = t.114
+ t.116 = t.115
+ t.113 = t.116
+ t.118 = t.113
+ t.113 = t.118
+ t.119 = [t.113+0]
+ t.120 = [t.119+0]
+ t.121 = 27
+ t.122 = t.121
+ t.123 = 34000
+ t.124 = t.123
+ t.125 = 0
+ t.126 = t.125
+ t.117 = call t.120(t.113 t.122 t.124 t.126)
+ t.127 = t.117
+ t.6 = t.127
+ t.129 = t.12
+ t.12 = t.129
+ t.130 = [t.12+0]
+ t.131 = [t.130+20]
+ t.132 = t.69
+ t.133 = t.132
+ t.128 = call t.131(t.12 t.133)
+ t.134 = t.128
+ t.135 = t.134
+ PrintIntS(t.135)
+ t.137 = t.12
+ t.12 = t.137
+ t.138 = [t.12+0]
+ t.139 = [t.138+20]
+ t.140 = t.113
+ t.141 = t.140
+ t.136 = call t.139(t.12 t.141)
+ t.142 = t.136
+ t.143 = t.142
+ PrintIntS(t.143)
+ t.144 = 10000000
+ t.145 = t.144
+ t.146 = t.145
+ PrintIntS(t.146)
+ t.147 = HeapAllocZ(36)
+ [t.147+0] = :functable_Element
+ t.148 = t.147
+ t.149 = t.148
+ t.25 = t.149
+ t.151 = t.25
+ t.25 = t.151
+ t.152 = [t.25+0]
+ t.153 = [t.152+0]
+ t.154 = 28
+ t.155 = t.154
+ t.156 = 35000
+ t.157 = t.156
+ t.158 = 0
+ t.159 = t.158
+ t.150 = call t.153(t.25 t.155 t.157 t.159)
+ t.160 = t.150
+ t.6 = t.160
+ t.162 = t.12
+ t.12 = t.162
+ t.163 = [t.12+0]
+ t.164 = [t.163+8]
+ t.165 = t.25
+ t.166 = t.165
+ t.161 = call t.164(t.12 t.166)
+ t.167 = t.161
+ t.12 = t.167
+ t.169 = t.12
+ t.12 = t.169
+ t.170 = [t.12+0]
+ t.171 = [t.170+36]
+ t.168 = call t.171(t.12)
+ t.172 = t.168
+ t.6 = t.172
+ t.173 = 2220000
+ t.174 = t.173
+ t.175 = t.174
+ PrintIntS(t.175)
+ t.177 = t.12
+ t.12 = t.177
+ t.178 = [t.12+0]
+ t.179 = [t.178+16]
+ t.180 = t.69
+ t.181 = t.180
+ t.176 = call t.179(t.12 t.181)
+ t.182 = t.176
+ t.12 = t.182
+ t.184 = t.12
+ t.12 = t.184
+ t.185 = [t.12+0]
+ t.186 = [t.185+36]
+ t.183 = call t.186(t.12)
+ t.187 = t.183
+ t.6 = t.187
+ t.188 = 33300000
+ t.189 = t.188
+ t.190 = t.189
+ PrintIntS(t.190)
+ t.192 = t.12
+ t.12 = t.192
+ t.193 = [t.12+0]
+ t.194 = [t.193+16]
+ t.195 = t.25
+ t.196 = t.195
+ t.191 = call t.194(t.12 t.196)
+ t.197 = t.191
+ t.12 = t.197
+ t.199 = t.12
+ t.12 = t.199
+ t.200 = [t.12+0]
+ t.201 = [t.200+36]
+ t.198 = call t.201(t.12)
+ t.202 = t.198
+ t.6 = t.202
+ t.203 = 44440000
+ t.204 = t.203
+ t.205 = t.204
+ PrintIntS(t.205)
+ t.206 = 0
+ t.207 = t.206
+ t.208 = t.207
+ ret t.208
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/MoreThan4.vapor b/output/MoreThan4.vapor
index fc09ab1..2479bbb 100644
--- a/output/MoreThan4.vapor
+++ b/output/MoreThan4.vapor
@@ -2,17 +2,25 @@ func Main()
t.3 = HeapAllocZ(8)
[t.3+0] = :functable_MT4
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 1
- t.8 = 2
- t.9 = 3
- t.10 = 4
- t.11 = 5
- t.12 = 6
- t.2 = call t.6(t.4 t.7 t.8 t.9 t.10 t.11 t.12)
- t.13 = t.2
- PrintIntS(t.13)
+ t.7 = [t.6+0]
+ t.8 = 1
+ t.9 = t.8
+ t.10 = 2
+ t.11 = t.10
+ t.12 = 3
+ t.13 = t.12
+ t.14 = 4
+ t.15 = t.14
+ t.16 = 5
+ t.17 = t.16
+ t.18 = 6
+ t.19 = t.18
+ t.2 = call t.7(t.5 t.9 t.11 t.13 t.15 t.17 t.19)
+ t.20 = t.2
+ t.21 = t.20
+ PrintIntS(t.21)
ret
const functable_MT4
@@ -21,45 +29,81 @@ const functable_MT4
func MT4_Start(this t.0 t.1 t.2 t.3 t.4 t.5 )
t.6 = t.0
- PrintIntS(t.6)
- t.7 = t.1
- PrintIntS(t.7)
- t.8 = t.2
+ t.7 = t.6
+ t.8 = t.7
PrintIntS(t.8)
- t.9 = t.3
- PrintIntS(t.9)
- t.10 = t.4
- PrintIntS(t.10)
- t.11 = t.5
+ t.9 = t.1
+ t.10 = t.9
+ t.11 = t.10
PrintIntS(t.11)
- t.14 = [this]
- t.15 = t.5
- t.16 = t.4
- t.17 = t.3
- t.18 = t.2
- t.19 = t.1
- t.20 = t.0
- t.14 = [t.14+4]
- t.13 = call t.14(this t.15 t.16 t.17 t.18 t.19 t.20)
- t.12 = t.13
- t.21 = t.12
- ret t.21
+ t.12 = t.2
+ t.13 = t.12
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.15 = t.3
+ t.16 = t.15
+ t.17 = t.16
+ PrintIntS(t.17)
+ t.18 = t.4
+ t.19 = t.18
+ t.20 = t.19
+ PrintIntS(t.20)
+ t.21 = t.5
+ t.22 = t.21
+ t.23 = t.22
+ PrintIntS(t.23)
+ t.26 = this
+ t.27 = [this]
+ t.28 = t.5
+ t.29 = t.28
+ t.30 = t.4
+ t.31 = t.30
+ t.32 = t.3
+ t.33 = t.32
+ t.34 = t.2
+ t.35 = t.34
+ t.36 = t.1
+ t.37 = t.36
+ t.38 = t.0
+ t.39 = t.38
+ t.27 = [t.27+4]
+ t.25 = call t.27(this t.29 t.31 t.33 t.35 t.37 t.39)
+ t.40 = t.25
+ t.24 = t.40
+ t.41 = t.24
+ t.42 = t.41
+ t.43 = t.42
+ ret t.43
func MT4_Change(this t.0 t.1 t.2 t.3 t.4 t.5 )
t.6 = t.0
- PrintIntS(t.6)
- t.7 = t.1
- PrintIntS(t.7)
- t.8 = t.2
+ t.7 = t.6
+ t.8 = t.7
PrintIntS(t.8)
- t.9 = t.3
- PrintIntS(t.9)
- t.10 = t.4
- PrintIntS(t.10)
- t.11 = t.5
+ t.9 = t.1
+ t.10 = t.9
+ t.11 = t.10
PrintIntS(t.11)
- t.12 = 0
- ret t.12
+ t.12 = t.2
+ t.13 = t.12
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.15 = t.3
+ t.16 = t.15
+ t.17 = t.16
+ PrintIntS(t.17)
+ t.18 = t.4
+ t.19 = t.18
+ t.20 = t.19
+ PrintIntS(t.20)
+ t.21 = t.5
+ t.22 = t.21
+ t.23 = t.22
+ PrintIntS(t.23)
+ t.24 = 0
+ t.25 = t.24
+ t.26 = t.25
+ ret t.26
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/QuickSort.vapor b/output/QuickSort.vapor
index 57389d6..1d0a9fe 100644
--- a/output/QuickSort.vapor
+++ b/output/QuickSort.vapor
@@ -2,12 +2,15 @@ func Main()
t.3 = HeapAllocZ(24)
[t.3+0] = :functable_QS
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 10
- t.2 = call t.6(t.4 t.7)
- t.8 = t.2
- PrintIntS(t.8)
+ t.7 = [t.6+0]
+ t.8 = 10
+ t.9 = t.8
+ t.2 = call t.7(t.5 t.9)
+ t.10 = t.2
+ t.11 = t.10
+ PrintIntS(t.11)
ret
const functable_QS
@@ -17,284 +20,448 @@ const functable_QS
:QS_Init
func QS_Start(this t.0 )
- t.3 = [this]
- t.4 = t.0
- t.3 = [t.3+12]
- t.2 = call t.3(this t.4)
- t.1 = t.2
- t.6 = [this]
- t.6 = [t.6+8]
- t.5 = call t.6(this )
- t.1 = t.5
- t.7 = 9999
- PrintIntS(t.7)
- t.9 = [this+20]
- t.10 = 1
- t.8 = Sub(t.9 t.10)
- t.1 = t.8
- t.12 = [this]
- t.13 = 0
- t.14 = t.1
- t.12 = [t.12+4]
- t.11 = call t.12(this t.13 t.14)
+ t.3 = this
+ t.4 = [this]
+ t.5 = t.0
+ t.6 = t.5
+ t.4 = [t.4+12]
+ t.2 = call t.4(this t.6)
+ t.7 = t.2
+ t.1 = t.7
+ t.9 = this
+ t.10 = [this]
+ t.10 = [t.10+8]
+ t.8 = call t.10(this)
+ t.11 = t.8
t.1 = t.11
- t.16 = [this]
- t.16 = [t.16+8]
- t.15 = call t.16(this )
- t.1 = t.15
- t.17 = 0
- ret t.17
+ t.12 = 9999
+ t.13 = t.12
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.16 = [this+20]
+ t.17 = 1
+ t.15 = Sub(t.16 t.17)
+ t.18 = t.15
+ t.1 = t.18
+ t.20 = this
+ t.21 = [this]
+ t.22 = 0
+ t.23 = t.22
+ t.24 = t.1
+ t.25 = t.24
+ t.21 = [t.21+4]
+ t.19 = call t.21(this t.23 t.25)
+ t.26 = t.19
+ t.1 = t.26
+ t.28 = this
+ t.29 = [this]
+ t.29 = [t.29+8]
+ t.27 = call t.29(this)
+ t.30 = t.27
+ t.1 = t.30
+ t.31 = 0
+ t.32 = t.31
+ t.33 = t.32
+ ret t.33
func QS_Sort(this t.0 t.1 )
- t.2 = 0
- t.4 = t.0
- t.5 = t.1
- t.3 = LtS(t.4 t.5)
- t.6 = t.3
- if0 t.6 goto :if22_else
-if22_body:
- t.9 = [this+16]
- t.10 = MulS(t.1 4)
- t.10 = Add(t.10 4)
- t.10 = Add(t.9 t.10)
- t.8 = [t.10]
- t.7 = t.8
- t.13 = t.0
- t.14 = 1
- t.12 = Sub(t.13 t.14)
- t.11 = t.12
+ t.3 = 0
+ t.4 = t.3
+ t.2 = t.4
+ t.6 = t.0
+ t.7 = t.1
+ t.5 = LtS(t.6 t.7)
+ t.8 = t.5
+ t.9 = t.8
+ if0 t.9 goto :if43_else
+if43_body:
+ t.13 = [this+16]
+ t.12 = t.13
t.15 = t.1
- t.16 = 1
-while32_test:
- t.17 = t.16
- if0 t.17 goto :while32_end
-while32_body:
- t.18 = 1
-while34_test:
- t.19 = t.18
- if0 t.19 goto :while34_end
-while34_body:
- t.21 = t.11
- t.22 = 1
- t.20 = Add(t.21 t.22)
- t.11 = t.20
- t.25 = [this+16]
- t.26 = MulS(t.11 4)
- t.26 = Add(t.26 4)
- t.26 = Add(t.25 t.26)
- t.24 = [t.26]
- t.23 = t.24
- t.29 = t.23
- t.30 = t.7
- t.28 = LtS(t.29 t.30)
- t.27 = Eq(t.28 0)
- t.31 = t.27
- if0 t.31 goto :if42_else
-if42_body:
- t.18 = 0
- goto :if42_end
-if42_else:
- t.18 = 1
-if42_end:
- goto :while34_test
-while34_end:
- t.18 = 1
-while47_test:
- t.32 = t.18
- if0 t.32 goto :while47_end
-while47_body:
- t.34 = t.15
- t.35 = 1
- t.33 = Sub(t.34 t.35)
- t.15 = t.33
- t.37 = [this+16]
- t.38 = MulS(t.15 4)
- t.38 = Add(t.38 4)
- t.38 = Add(t.37 t.38)
- t.36 = [t.38]
- t.23 = t.36
- t.41 = t.7
- t.42 = t.23
- t.40 = LtS(t.41 t.42)
- t.39 = Eq(t.40 0)
- t.43 = t.39
- if0 t.43 goto :if55_else
-if55_body:
- t.18 = 0
- goto :if55_end
-if55_else:
- t.18 = 1
-if55_end:
- goto :while47_test
-while47_end:
- t.45 = [this+16]
- t.46 = MulS(t.11 4)
- t.46 = Add(t.46 4)
- t.46 = Add(t.45 t.46)
- t.44 = [t.46]
- t.2 = t.44
- t.47 = [this+16]
- t.48 = MulS(t.11 4)
- t.48 = Add(t.48 4)
- t.48 = Add(t.47 t.48)
- t.50 = [this+16]
- t.51 = MulS(t.15 4)
- t.51 = Add(t.51 4)
- t.51 = Add(t.50 t.51)
- t.49 = [t.51]
- [t.48] = t.49
- t.52 = [this+16]
- t.53 = MulS(t.15 4)
- t.53 = Add(t.53 4)
- t.53 = Add(t.52 t.53)
- [t.53] = t.2
- t.55 = t.15
- t.57 = t.11
- t.58 = 1
- t.56 = Add(t.57 t.58)
- t.59 = t.56
- t.54 = LtS(t.55 t.59)
- t.60 = t.54
- if0 t.60 goto :if70_else
-if70_body:
- t.16 = 0
- goto :if70_end
-if70_else:
- t.16 = 1
-if70_end:
- goto :while32_test
-while32_end:
- t.61 = [this+16]
- t.62 = MulS(t.15 4)
- t.62 = Add(t.62 4)
- t.62 = Add(t.61 t.62)
- t.64 = [this+16]
- t.65 = MulS(t.11 4)
- t.65 = Add(t.65 4)
- t.65 = Add(t.64 t.65)
- t.63 = [t.65]
- [t.62] = t.63
- t.66 = [this+16]
- t.67 = MulS(t.11 4)
- t.67 = Add(t.67 4)
- t.67 = Add(t.66 t.67)
- t.69 = [this+16]
- t.70 = MulS(t.1 4)
- t.70 = Add(t.70 4)
- t.70 = Add(t.69 t.70)
- t.68 = [t.70]
- [t.67] = t.68
- t.71 = [this+16]
- t.72 = MulS(t.1 4)
- t.72 = Add(t.72 4)
- t.72 = Add(t.71 t.72)
- [t.72] = t.2
- t.75 = [this]
- t.78 = t.11
- t.79 = 1
- t.77 = Sub(t.78 t.79)
- t.76 = t.0
- t.80 = t.77
- t.75 = [t.75+4]
- t.74 = call t.75(this t.79 t.80)
- t.73 = t.74
- t.82 = [this]
- t.84 = t.11
- t.85 = 1
- t.83 = Add(t.84 t.85)
- t.86 = t.83
- t.87 = t.1
- t.82 = [t.82+4]
- t.81 = call t.82(this t.86 t.87)
- t.73 = t.81
- goto :if22_end
-if22_else:
- t.73 = 0
-if22_end:
- t.88 = 0
- ret t.88
+ t.14 = MulS(t.15 4)
+ t.14 = Add(t.14 4)
+ t.14 = Add(t.12 t.14)
+ t.11 = [t.14]
+ t.16 = t.11
+ t.10 = t.16
+ t.19 = t.0
+ t.20 = 1
+ t.18 = Sub(t.19 t.20)
+ t.21 = t.18
+ t.17 = t.21
+ t.23 = t.1
+ t.24 = t.23
+ t.22 = t.24
+ t.26 = 1
+ t.27 = t.26
+ t.25 = t.27
+while62_test:
+ t.28 = t.25
+ t.29 = t.28
+ t.30 = t.29
+ if0 t.30 goto :while62_end
+while62_body:
+ t.32 = 1
+ t.33 = t.32
+ t.31 = t.33
+while68_test:
+ t.34 = t.31
+ t.35 = t.34
+ t.36 = t.35
+ if0 t.36 goto :while68_end
+while68_body:
+ t.38 = t.17
+ t.39 = 1
+ t.37 = Add(t.38 t.39)
+ t.40 = t.37
+ t.17 = t.40
+ t.44 = [this+16]
+ t.43 = t.44
+ t.46 = t.17
+ t.45 = MulS(t.46 4)
+ t.45 = Add(t.45 4)
+ t.45 = Add(t.43 t.45)
+ t.42 = [t.45]
+ t.47 = t.42
+ t.41 = t.47
+ t.50 = t.41
+ t.51 = t.10
+ t.49 = LtS(t.50 t.51)
+ t.52 = t.49
+ t.53 = t.52
+ t.54 = t.53
+ t.48 = Eq(t.54 0)
+ t.55 = t.48
+ t.56 = t.55
+ t.57 = t.56
+ if0 t.57 goto :if82_else
+if82_body:
+ t.58 = 0
+ t.59 = t.58
+ t.31 = t.59
+ goto :if82_end
+if82_else:
+ t.60 = 1
+ t.61 = t.60
+ t.31 = t.61
+if82_end:
+ goto :while68_test
+while68_end:
+ t.62 = 1
+ t.63 = t.62
+ t.31 = t.63
+while98_test:
+ t.64 = t.31
+ t.65 = t.64
+ t.66 = t.65
+ if0 t.66 goto :while98_end
+while98_body:
+ t.68 = t.22
+ t.69 = 1
+ t.67 = Sub(t.68 t.69)
+ t.70 = t.67
+ t.22 = t.70
+ t.73 = [this+16]
+ t.72 = t.73
+ t.75 = t.22
+ t.74 = MulS(t.75 4)
+ t.74 = Add(t.74 4)
+ t.74 = Add(t.72 t.74)
+ t.71 = [t.74]
+ t.76 = t.71
+ t.41 = t.76
+ t.79 = t.10
+ t.80 = t.41
+ t.78 = LtS(t.79 t.80)
+ t.81 = t.78
+ t.82 = t.81
+ t.83 = t.82
+ t.77 = Eq(t.83 0)
+ t.84 = t.77
+ t.85 = t.84
+ t.86 = t.85
+ if0 t.86 goto :if112_else
+if112_body:
+ t.87 = 0
+ t.88 = t.87
+ t.31 = t.88
+ goto :if112_end
+if112_else:
+ t.89 = 1
+ t.90 = t.89
+ t.31 = t.90
+if112_end:
+ goto :while98_test
+while98_end:
+ t.93 = [this+16]
+ t.92 = t.93
+ t.95 = t.17
+ t.94 = MulS(t.95 4)
+ t.94 = Add(t.94 4)
+ t.94 = Add(t.92 t.94)
+ t.91 = [t.94]
+ t.96 = t.91
+ t.2 = t.96
+ t.97 = [this+16]
+ t.99 = t.17
+ t.100 = t.99
+ t.98 = MulS(t.100 4)
+ t.98 = Add(t.98 4)
+ t.98 = Add(t.97 t.98)
+ t.103 = [this+16]
+ t.102 = t.103
+ t.105 = t.22
+ t.104 = MulS(t.105 4)
+ t.104 = Add(t.104 4)
+ t.104 = Add(t.102 t.104)
+ t.101 = [t.104]
+ t.106 = t.101
+ [t.98] = t.106
+ t.107 = [this+16]
+ t.109 = t.22
+ t.110 = t.109
+ t.108 = MulS(t.110 4)
+ t.108 = Add(t.108 4)
+ t.108 = Add(t.107 t.108)
+ t.111 = t.2
+ t.112 = t.111
+ [t.108] = t.112
+ t.114 = t.22
+ t.116 = t.17
+ t.117 = 1
+ t.115 = Add(t.116 t.117)
+ t.118 = t.115
+ t.119 = t.118
+ t.113 = LtS(t.114 t.119)
+ t.120 = t.113
+ t.121 = t.120
+ if0 t.121 goto :if148_else
+if148_body:
+ t.122 = 0
+ t.123 = t.122
+ t.25 = t.123
+ goto :if148_end
+if148_else:
+ t.124 = 1
+ t.125 = t.124
+ t.25 = t.125
+if148_end:
+ goto :while62_test
+while62_end:
+ t.126 = [this+16]
+ t.128 = t.22
+ t.129 = t.128
+ t.127 = MulS(t.129 4)
+ t.127 = Add(t.127 4)
+ t.127 = Add(t.126 t.127)
+ t.132 = [this+16]
+ t.131 = t.132
+ t.134 = t.17
+ t.133 = MulS(t.134 4)
+ t.133 = Add(t.133 4)
+ t.133 = Add(t.131 t.133)
+ t.130 = [t.133]
+ t.135 = t.130
+ [t.127] = t.135
+ t.136 = [this+16]
+ t.138 = t.17
+ t.139 = t.138
+ t.137 = MulS(t.139 4)
+ t.137 = Add(t.137 4)
+ t.137 = Add(t.136 t.137)
+ t.142 = [this+16]
+ t.141 = t.142
+ t.144 = t.1
+ t.143 = MulS(t.144 4)
+ t.143 = Add(t.143 4)
+ t.143 = Add(t.141 t.143)
+ t.140 = [t.143]
+ t.145 = t.140
+ [t.137] = t.145
+ t.146 = [this+16]
+ t.148 = t.1
+ t.149 = t.148
+ t.147 = MulS(t.149 4)
+ t.147 = Add(t.147 4)
+ t.147 = Add(t.146 t.147)
+ t.150 = t.2
+ t.151 = t.150
+ [t.147] = t.151
+ t.154 = this
+ t.155 = [this]
+ t.156 = t.0
+ t.157 = t.156
+ t.159 = t.17
+ t.160 = 1
+ t.158 = Sub(t.159 t.160)
+ t.161 = t.158
+ t.155 = [t.155+4]
+ t.153 = call t.155(this t.157 t.161)
+ t.162 = t.153
+ t.152 = t.162
+ t.164 = this
+ t.165 = [this]
+ t.167 = t.17
+ t.168 = 1
+ t.166 = Add(t.167 t.168)
+ t.169 = t.166
+ t.170 = t.1
+ t.171 = t.170
+ t.165 = [t.165+4]
+ t.163 = call t.165(this t.169 t.171)
+ t.172 = t.163
+ t.152 = t.172
+ goto :if43_end
+if43_else:
+ t.173 = 0
+ t.174 = t.173
+ t.152 = t.174
+if43_end:
+ t.175 = 0
+ t.176 = t.175
+ t.177 = t.176
+ ret t.177
func QS_Print(this )
- t.0 = 0
-while104_test:
- t.2 = t.0
- t.3 = [this+20]
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :while104_end
-while104_body:
- t.6 = [this+16]
- t.7 = MulS(t.0 4)
- t.7 = Add(t.7 4)
- t.7 = Add(t.6 t.7)
- t.5 = [t.7]
- t.8 = t.5
- PrintIntS(t.8)
- t.10 = t.0
- t.11 = 1
- t.9 = Add(t.10 t.11)
- t.0 = t.9
- goto :while104_test
-while104_end:
- t.12 = 0
- ret t.12
+ t.1 = 0
+ t.2 = t.1
+ t.0 = t.2
+while214_test:
+ t.4 = t.0
+ t.5 = [this+20]
+ t.6 = t.5
+ t.7 = t.6
+ t.3 = LtS(t.4 t.7)
+ t.8 = t.3
+ t.9 = t.8
+ if0 t.9 goto :while214_end
+while214_body:
+ t.12 = [this+16]
+ t.11 = t.12
+ t.14 = t.0
+ t.13 = MulS(t.14 4)
+ t.13 = Add(t.13 4)
+ t.13 = Add(t.11 t.13)
+ t.10 = [t.13]
+ t.15 = t.10
+ t.16 = t.15
+ PrintIntS(t.16)
+ t.18 = t.0
+ t.19 = 1
+ t.17 = Add(t.18 t.19)
+ t.20 = t.17
+ t.0 = t.20
+ goto :while214_test
+while214_end:
+ t.21 = 0
+ t.22 = t.21
+ t.23 = t.22
+ ret t.23
func QS_Init(this t.0 )
- [this+20] = t.0
- t.1 = call :AllocArray(t.0)
- [this+16] = t.1
- t.2 = [this+16]
- t.3 = MulS(0 4)
- t.3 = Add(t.3 4)
- t.3 = Add(t.2 t.3)
- [t.3] = 20
- t.4 = [this+16]
- t.5 = MulS(1 4)
- t.5 = Add(t.5 4)
- t.5 = Add(t.4 t.5)
- [t.5] = 7
- t.6 = [this+16]
- t.7 = MulS(2 4)
- t.7 = Add(t.7 4)
- t.7 = Add(t.6 t.7)
- [t.7] = 12
+ t.1 = t.0
+ t.2 = t.1
+ [this+20] = t.2
+ t.3 = t.0
+ t.4 = t.3
+ t.5 = call :AllocArray(t.4)
+ t.6 = t.5
+ t.7 = t.6
+ [this+16] = t.7
t.8 = [this+16]
- t.9 = MulS(3 4)
+ t.10 = 0
+ t.11 = t.10
+ t.9 = MulS(t.11 4)
t.9 = Add(t.9 4)
t.9 = Add(t.8 t.9)
- [t.9] = 18
- t.10 = [this+16]
- t.11 = MulS(4 4)
- t.11 = Add(t.11 4)
- t.11 = Add(t.10 t.11)
- [t.11] = 2
- t.12 = [this+16]
- t.13 = MulS(5 4)
- t.13 = Add(t.13 4)
- t.13 = Add(t.12 t.13)
- [t.13] = 11
+ t.12 = 20
+ t.13 = t.12
+ [t.9] = t.13
t.14 = [this+16]
- t.15 = MulS(6 4)
+ t.16 = 1
+ t.17 = t.16
+ t.15 = MulS(t.17 4)
t.15 = Add(t.15 4)
t.15 = Add(t.14 t.15)
- [t.15] = 6
- t.16 = [this+16]
- t.17 = MulS(7 4)
- t.17 = Add(t.17 4)
- t.17 = Add(t.16 t.17)
- [t.17] = 9
- t.18 = [this+16]
- t.19 = MulS(8 4)
- t.19 = Add(t.19 4)
- t.19 = Add(t.18 t.19)
- [t.19] = 19
+ t.18 = 7
+ t.19 = t.18
+ [t.15] = t.19
t.20 = [this+16]
- t.21 = MulS(9 4)
+ t.22 = 2
+ t.23 = t.22
+ t.21 = MulS(t.23 4)
t.21 = Add(t.21 4)
t.21 = Add(t.20 t.21)
- [t.21] = 5
- t.22 = 0
- ret t.22
+ t.24 = 12
+ t.25 = t.24
+ [t.21] = t.25
+ t.26 = [this+16]
+ t.28 = 3
+ t.29 = t.28
+ t.27 = MulS(t.29 4)
+ t.27 = Add(t.27 4)
+ t.27 = Add(t.26 t.27)
+ t.30 = 18
+ t.31 = t.30
+ [t.27] = t.31
+ t.32 = [this+16]
+ t.34 = 4
+ t.35 = t.34
+ t.33 = MulS(t.35 4)
+ t.33 = Add(t.33 4)
+ t.33 = Add(t.32 t.33)
+ t.36 = 2
+ t.37 = t.36
+ [t.33] = t.37
+ t.38 = [this+16]
+ t.40 = 5
+ t.41 = t.40
+ t.39 = MulS(t.41 4)
+ t.39 = Add(t.39 4)
+ t.39 = Add(t.38 t.39)
+ t.42 = 11
+ t.43 = t.42
+ [t.39] = t.43
+ t.44 = [this+16]
+ t.46 = 6
+ t.47 = t.46
+ t.45 = MulS(t.47 4)
+ t.45 = Add(t.45 4)
+ t.45 = Add(t.44 t.45)
+ t.48 = 6
+ t.49 = t.48
+ [t.45] = t.49
+ t.50 = [this+16]
+ t.52 = 7
+ t.53 = t.52
+ t.51 = MulS(t.53 4)
+ t.51 = Add(t.51 4)
+ t.51 = Add(t.50 t.51)
+ t.54 = 9
+ t.55 = t.54
+ [t.51] = t.55
+ t.56 = [this+16]
+ t.58 = 8
+ t.59 = t.58
+ t.57 = MulS(t.59 4)
+ t.57 = Add(t.57 4)
+ t.57 = Add(t.56 t.57)
+ t.60 = 19
+ t.61 = t.60
+ [t.57] = t.61
+ t.62 = [this+16]
+ t.64 = 9
+ t.65 = t.64
+ t.63 = MulS(t.65 4)
+ t.63 = Add(t.63 4)
+ t.63 = Add(t.62 t.63)
+ t.66 = 5
+ t.67 = t.66
+ [t.63] = t.67
+ t.68 = 0
+ t.69 = t.68
+ t.70 = t.69
+ ret t.70
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/TreeVisitor.vapor b/output/TreeVisitor.vapor
index 8cbc9cc..8df4b85 100644
--- a/output/TreeVisitor.vapor
+++ b/output/TreeVisitor.vapor
@@ -2,11 +2,13 @@ func Main()
t.3 = HeapAllocZ(4)
[t.3+0] = :functable_TV
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.2 = call t.6(t.4 )
- t.7 = t.2
- PrintIntS(t.7)
+ t.7 = [t.6+0]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
ret
const functable_TV
@@ -15,137 +17,205 @@ const functable_TV
func TV_Start(this )
t.3 = HeapAllocZ(108)
[t.3+0] = :functable_Tree
- t.2 = t.3
- t.2 = t.2
- t.6 = [t.2+0]
- t.7 = [t.6+0]
- t.8 = 16
- t.5 = call t.7(t.2 t.8)
- t.4 = t.5
- t.2 = t.2
- t.10 = [t.2+0]
- t.11 = [t.10+72]
- t.9 = call t.11(t.2 )
- t.4 = t.9
- t.12 = 100000000
- PrintIntS(t.12)
- t.2 = t.2
- t.14 = [t.2+0]
- t.15 = [t.14+48]
- t.16 = 8
- t.13 = call t.15(t.2 t.16)
- t.4 = t.13
- t.2 = t.2
- t.18 = [t.2+0]
- t.19 = [t.18+48]
- t.20 = 24
- t.17 = call t.19(t.2 t.20)
- t.4 = t.17
- t.2 = t.2
- t.22 = [t.2+0]
- t.23 = [t.22+48]
- t.24 = 4
- t.21 = call t.23(t.2 t.24)
- t.4 = t.21
- t.2 = t.2
- t.26 = [t.2+0]
- t.27 = [t.26+48]
- t.28 = 12
- t.25 = call t.27(t.2 t.28)
- t.4 = t.25
- t.2 = t.2
- t.30 = [t.2+0]
- t.31 = [t.30+48]
- t.32 = 20
- t.29 = call t.31(t.2 t.32)
- t.4 = t.29
- t.2 = t.2
- t.34 = [t.2+0]
- t.35 = [t.34+48]
- t.36 = 28
- t.33 = call t.35(t.2 t.36)
- t.4 = t.33
- t.2 = t.2
+ t.4 = t.3
+ t.5 = t.4
+ t.2 = t.5
+ t.8 = t.2
+ t.2 = t.8
+ t.9 = [t.2+0]
+ t.10 = [t.9+0]
+ t.11 = 16
+ t.12 = t.11
+ t.7 = call t.10(t.2 t.12)
+ t.13 = t.7
+ t.6 = t.13
+ t.15 = t.2
+ t.2 = t.15
+ t.16 = [t.2+0]
+ t.17 = [t.16+72]
+ t.14 = call t.17(t.2)
+ t.18 = t.14
+ t.6 = t.18
+ t.19 = 100000000
+ t.20 = t.19
+ t.21 = t.20
+ PrintIntS(t.21)
+ t.23 = t.2
+ t.2 = t.23
+ t.24 = [t.2+0]
+ t.25 = [t.24+48]
+ t.26 = 8
+ t.27 = t.26
+ t.22 = call t.25(t.2 t.27)
+ t.28 = t.22
+ t.6 = t.28
+ t.30 = t.2
+ t.2 = t.30
+ t.31 = [t.2+0]
+ t.32 = [t.31+48]
+ t.33 = 24
+ t.34 = t.33
+ t.29 = call t.32(t.2 t.34)
+ t.35 = t.29
+ t.6 = t.35
+ t.37 = t.2
+ t.2 = t.37
t.38 = [t.2+0]
t.39 = [t.38+48]
- t.40 = 14
- t.37 = call t.39(t.2 t.40)
- t.4 = t.37
- t.2 = t.2
- t.42 = [t.2+0]
- t.43 = [t.42+72]
- t.41 = call t.43(t.2 )
- t.4 = t.41
- t.44 = 100000000
- PrintIntS(t.44)
- t.46 = HeapAllocZ(16)
- [t.46+0] = :functable_MyVisitor
- t.45 = t.46
- t.47 = 50000000
- PrintIntS(t.47)
- t.2 = t.2
- t.50 = [t.2+0]
- t.51 = [t.50+80]
- t.52 = t.45
- t.49 = call t.51(t.2 t.52)
- t.48 = t.49
- t.53 = 100000000
- PrintIntS(t.53)
- t.2 = t.2
- t.55 = [t.2+0]
- t.56 = [t.55+68]
- t.57 = 24
- t.54 = call t.56(t.2 t.57)
- t.58 = t.54
- PrintIntS(t.58)
- t.2 = t.2
- t.60 = [t.2+0]
- t.61 = [t.60+68]
- t.62 = 12
- t.59 = call t.61(t.2 t.62)
- t.63 = t.59
- PrintIntS(t.63)
- t.2 = t.2
- t.65 = [t.2+0]
- t.66 = [t.65+68]
- t.67 = 16
- t.64 = call t.66(t.2 t.67)
- t.68 = t.64
- PrintIntS(t.68)
- t.2 = t.2
- t.70 = [t.2+0]
- t.71 = [t.70+68]
- t.72 = 50
- t.69 = call t.71(t.2 t.72)
- t.73 = t.69
- PrintIntS(t.73)
- t.2 = t.2
- t.75 = [t.2+0]
- t.76 = [t.75+68]
- t.77 = 12
- t.74 = call t.76(t.2 t.77)
- t.78 = t.74
+ t.40 = 4
+ t.41 = t.40
+ t.36 = call t.39(t.2 t.41)
+ t.42 = t.36
+ t.6 = t.42
+ t.44 = t.2
+ t.2 = t.44
+ t.45 = [t.2+0]
+ t.46 = [t.45+48]
+ t.47 = 12
+ t.48 = t.47
+ t.43 = call t.46(t.2 t.48)
+ t.49 = t.43
+ t.6 = t.49
+ t.51 = t.2
+ t.2 = t.51
+ t.52 = [t.2+0]
+ t.53 = [t.52+48]
+ t.54 = 20
+ t.55 = t.54
+ t.50 = call t.53(t.2 t.55)
+ t.56 = t.50
+ t.6 = t.56
+ t.58 = t.2
+ t.2 = t.58
+ t.59 = [t.2+0]
+ t.60 = [t.59+48]
+ t.61 = 28
+ t.62 = t.61
+ t.57 = call t.60(t.2 t.62)
+ t.63 = t.57
+ t.6 = t.63
+ t.65 = t.2
+ t.2 = t.65
+ t.66 = [t.2+0]
+ t.67 = [t.66+48]
+ t.68 = 14
+ t.69 = t.68
+ t.64 = call t.67(t.2 t.69)
+ t.70 = t.64
+ t.6 = t.70
+ t.72 = t.2
+ t.2 = t.72
+ t.73 = [t.2+0]
+ t.74 = [t.73+72]
+ t.71 = call t.74(t.2)
+ t.75 = t.71
+ t.6 = t.75
+ t.76 = 100000000
+ t.77 = t.76
+ t.78 = t.77
PrintIntS(t.78)
- t.2 = t.2
- t.80 = [t.2+0]
- t.81 = [t.80+52]
- t.82 = 12
- t.79 = call t.81(t.2 t.82)
- t.4 = t.79
- t.2 = t.2
- t.84 = [t.2+0]
- t.85 = [t.84+72]
- t.83 = call t.85(t.2 )
- t.4 = t.83
- t.2 = t.2
- t.87 = [t.2+0]
- t.88 = [t.87+68]
- t.89 = 12
- t.86 = call t.88(t.2 t.89)
- t.90 = t.86
- PrintIntS(t.90)
- t.91 = 0
- ret t.91
+ t.80 = HeapAllocZ(16)
+ [t.80+0] = :functable_MyVisitor
+ t.81 = t.80
+ t.82 = t.81
+ t.79 = t.82
+ t.83 = 50000000
+ t.84 = t.83
+ t.85 = t.84
+ PrintIntS(t.85)
+ t.88 = t.2
+ t.2 = t.88
+ t.89 = [t.2+0]
+ t.90 = [t.89+80]
+ t.91 = t.79
+ t.92 = t.91
+ t.87 = call t.90(t.2 t.92)
+ t.93 = t.87
+ t.86 = t.93
+ t.94 = 100000000
+ t.95 = t.94
+ t.96 = t.95
+ PrintIntS(t.96)
+ t.98 = t.2
+ t.2 = t.98
+ t.99 = [t.2+0]
+ t.100 = [t.99+68]
+ t.101 = 24
+ t.102 = t.101
+ t.97 = call t.100(t.2 t.102)
+ t.103 = t.97
+ t.104 = t.103
+ PrintIntS(t.104)
+ t.106 = t.2
+ t.2 = t.106
+ t.107 = [t.2+0]
+ t.108 = [t.107+68]
+ t.109 = 12
+ t.110 = t.109
+ t.105 = call t.108(t.2 t.110)
+ t.111 = t.105
+ t.112 = t.111
+ PrintIntS(t.112)
+ t.114 = t.2
+ t.2 = t.114
+ t.115 = [t.2+0]
+ t.116 = [t.115+68]
+ t.117 = 16
+ t.118 = t.117
+ t.113 = call t.116(t.2 t.118)
+ t.119 = t.113
+ t.120 = t.119
+ PrintIntS(t.120)
+ t.122 = t.2
+ t.2 = t.122
+ t.123 = [t.2+0]
+ t.124 = [t.123+68]
+ t.125 = 50
+ t.126 = t.125
+ t.121 = call t.124(t.2 t.126)
+ t.127 = t.121
+ t.128 = t.127
+ PrintIntS(t.128)
+ t.130 = t.2
+ t.2 = t.130
+ t.131 = [t.2+0]
+ t.132 = [t.131+68]
+ t.133 = 12
+ t.134 = t.133
+ t.129 = call t.132(t.2 t.134)
+ t.135 = t.129
+ t.136 = t.135
+ PrintIntS(t.136)
+ t.138 = t.2
+ t.2 = t.138
+ t.139 = [t.2+0]
+ t.140 = [t.139+52]
+ t.141 = 12
+ t.142 = t.141
+ t.137 = call t.140(t.2 t.142)
+ t.143 = t.137
+ t.6 = t.143
+ t.145 = t.2
+ t.2 = t.145
+ t.146 = [t.2+0]
+ t.147 = [t.146+72]
+ t.144 = call t.147(t.2)
+ t.148 = t.144
+ t.6 = t.148
+ t.150 = t.2
+ t.2 = t.150
+ t.151 = [t.2+0]
+ t.152 = [t.151+68]
+ t.153 = 12
+ t.154 = t.153
+ t.149 = call t.152(t.2 t.154)
+ t.155 = t.149
+ t.156 = t.155
+ PrintIntS(t.156)
+ t.157 = 0
+ t.158 = t.157
+ t.159 = t.158
+ ret t.159
const functable_Tree
:Tree_Init
@@ -171,721 +241,1051 @@ const functable_Tree
:Tree_accept
func Tree_Init(this t.0 )
- [this+92] = t.0
- [this+96] = 0
- [this+100] = 0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+92] = t.2
+ t.3 = 0
+ t.4 = t.3
+ [this+96] = t.4
+ t.5 = 0
+ t.6 = t.5
+ [this+100] = t.6
+ t.7 = 1
+ t.8 = t.7
+ t.9 = t.8
+ ret t.9
func Tree_SetRight(this t.0 )
- [this+88] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+88] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_SetLeft(this t.0 )
- [this+84] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+84] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_GetRight(this )
t.0 = [this+88]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetLeft(this )
t.0 = [this+84]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetKey(this )
t.0 = [this+92]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_SetKey(this t.0 )
- [this+92] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+92] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_GetHas_Right(this )
t.0 = [this+100]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_GetHas_Left(this )
t.0 = [this+96]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func Tree_SetHas_Left(this t.0 )
- [this+96] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+96] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_SetHas_Right(this t.0 )
- [this+100] = t.0
- t.1 = 1
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+100] = t.2
+ t.3 = 1
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func Tree_Compare(this t.0 t.1 )
- t.2 = 0
- t.5 = t.1
- t.6 = 1
- t.4 = Add(t.5 t.6)
- t.3 = t.4
- t.8 = t.0
- t.9 = t.1
- t.7 = LtS(t.8 t.9)
- t.10 = t.7
- if0 t.10 goto :if105_else
-if105_body:
- t.2 = 0
- goto :if105_end
-if105_else:
- t.13 = t.0
- t.14 = t.3
- t.12 = LtS(t.13 t.14)
- t.11 = Eq(t.12 0)
- t.15 = t.11
- if0 t.15 goto :if109_else
-if109_body:
- t.2 = 0
- goto :if109_end
-if109_else:
- t.2 = 1
-if109_end:
-if105_end:
- t.16 = t.2
- ret t.16
+ t.3 = 0
+ t.4 = t.3
+ t.2 = t.4
+ t.7 = t.1
+ t.8 = 1
+ t.6 = Add(t.7 t.8)
+ t.9 = t.6
+ t.5 = t.9
+ t.11 = t.0
+ t.12 = t.1
+ t.10 = LtS(t.11 t.12)
+ t.13 = t.10
+ t.14 = t.13
+ if0 t.14 goto :if216_else
+if216_body:
+ t.15 = 0
+ t.16 = t.15
+ t.2 = t.16
+ goto :if216_end
+if216_else:
+ t.19 = t.0
+ t.20 = t.5
+ t.18 = LtS(t.19 t.20)
+ t.21 = t.18
+ t.22 = t.21
+ t.23 = t.22
+ t.17 = Eq(t.23 0)
+ t.24 = t.17
+ t.25 = t.24
+ t.26 = t.25
+ if0 t.26 goto :if223_else
+if223_body:
+ t.27 = 0
+ t.28 = t.27
+ t.2 = t.28
+ goto :if223_end
+if223_else:
+ t.29 = 1
+ t.30 = t.29
+ t.2 = t.30
+if223_end:
+if216_end:
+ t.31 = t.2
+ t.32 = t.31
+ t.33 = t.32
+ ret t.33
func Tree_Insert(this t.0 )
t.3 = HeapAllocZ(108)
[t.3+0] = :functable_Tree
- t.2 = t.3
- t.2 = t.2
- t.6 = [t.2+0]
- t.7 = [t.6+0]
- t.8 = t.0
- t.5 = call t.7(t.2 t.8)
- t.4 = t.5
- t.9 = this
- t.10 = 1
-while120_test:
- t.11 = t.10
- if0 t.11 goto :while120_end
-while120_body:
- t.9 = t.9
- t.14 = [t.9+0]
- t.15 = [t.14+20]
- t.13 = call t.15(t.9 )
- t.12 = t.13
- t.17 = t.0
- t.18 = t.12
- t.16 = LtS(t.17 t.18)
- t.19 = t.16
- if0 t.19 goto :if125_else
-if125_body:
- t.9 = t.9
- t.21 = [t.9+0]
- t.22 = [t.21+32]
- t.20 = call t.22(t.9 )
- t.23 = t.20
- if0 t.23 goto :if129_else
-if129_body:
- t.9 = t.9
- t.25 = [t.9+0]
- t.26 = [t.25+16]
- t.24 = call t.26(t.9 )
- t.9 = t.24
- goto :if129_end
-if129_else:
- t.10 = 0
- t.9 = t.9
- t.28 = [t.9+0]
- t.29 = [t.28+36]
- t.30 = 1
- t.27 = call t.29(t.9 t.30)
- t.4 = t.27
- t.9 = t.9
- t.32 = [t.9+0]
- t.33 = [t.32+8]
- t.34 = t.2
- t.31 = call t.33(t.9 t.34)
- t.4 = t.31
-if129_end:
- goto :if125_end
-if125_else:
- t.9 = t.9
- t.36 = [t.9+0]
- t.37 = [t.36+28]
- t.35 = call t.37(t.9 )
- t.38 = t.35
- if0 t.38 goto :if144_else
-if144_body:
- t.9 = t.9
- t.40 = [t.9+0]
- t.41 = [t.40+12]
- t.39 = call t.41(t.9 )
- t.9 = t.39
- goto :if144_end
-if144_else:
- t.10 = 0
- t.9 = t.9
- t.43 = [t.9+0]
- t.44 = [t.43+40]
- t.45 = 1
- t.42 = call t.44(t.9 t.45)
- t.4 = t.42
- t.9 = t.9
- t.47 = [t.9+0]
- t.48 = [t.47+4]
- t.49 = t.2
- t.46 = call t.48(t.9 t.49)
- t.4 = t.46
-if144_end:
-if125_end:
- goto :while120_test
-while120_end:
- t.50 = 1
- ret t.50
+ t.4 = t.3
+ t.5 = t.4
+ t.2 = t.5
+ t.8 = t.2
+ t.2 = t.8
+ t.9 = [t.2+0]
+ t.10 = [t.9+0]
+ t.11 = t.0
+ t.12 = t.11
+ t.7 = call t.10(t.2 t.12)
+ t.13 = t.7
+ t.6 = t.13
+ t.15 = this
+ t.16 = t.15
+ t.14 = t.16
+ t.18 = 1
+ t.19 = t.18
+ t.17 = t.19
+while254_test:
+ t.20 = t.17
+ t.21 = t.20
+ t.22 = t.21
+ if0 t.22 goto :while254_end
+while254_body:
+ t.25 = t.14
+ t.14 = t.25
+ t.26 = [t.14+0]
+ t.27 = [t.26+20]
+ t.24 = call t.27(t.14)
+ t.28 = t.24
+ t.23 = t.28
+ t.30 = t.0
+ t.31 = t.23
+ t.29 = LtS(t.30 t.31)
+ t.32 = t.29
+ t.33 = t.32
+ if0 t.33 goto :if263_else
+if263_body:
+ t.35 = t.14
+ t.14 = t.35
+ t.36 = [t.14+0]
+ t.37 = [t.36+32]
+ t.34 = call t.37(t.14)
+ t.38 = t.34
+ t.39 = t.38
+ if0 t.39 goto :if268_else
+if268_body:
+ t.41 = t.14
+ t.14 = t.41
+ t.42 = [t.14+0]
+ t.43 = [t.42+16]
+ t.40 = call t.43(t.14)
+ t.44 = t.40
+ t.14 = t.44
+ goto :if268_end
+if268_else:
+ t.45 = 0
+ t.46 = t.45
+ t.17 = t.46
+ t.48 = t.14
+ t.14 = t.48
+ t.49 = [t.14+0]
+ t.50 = [t.49+36]
+ t.51 = 1
+ t.52 = t.51
+ t.47 = call t.50(t.14 t.52)
+ t.53 = t.47
+ t.6 = t.53
+ t.55 = t.14
+ t.14 = t.55
+ t.56 = [t.14+0]
+ t.57 = [t.56+8]
+ t.58 = t.2
+ t.59 = t.58
+ t.54 = call t.57(t.14 t.59)
+ t.60 = t.54
+ t.6 = t.60
+if268_end:
+ goto :if263_end
+if263_else:
+ t.62 = t.14
+ t.14 = t.62
+ t.63 = [t.14+0]
+ t.64 = [t.63+28]
+ t.61 = call t.64(t.14)
+ t.65 = t.61
+ t.66 = t.65
+ if0 t.66 goto :if295_else
+if295_body:
+ t.68 = t.14
+ t.14 = t.68
+ t.69 = [t.14+0]
+ t.70 = [t.69+12]
+ t.67 = call t.70(t.14)
+ t.71 = t.67
+ t.14 = t.71
+ goto :if295_end
+if295_else:
+ t.72 = 0
+ t.73 = t.72
+ t.17 = t.73
+ t.75 = t.14
+ t.14 = t.75
+ t.76 = [t.14+0]
+ t.77 = [t.76+40]
+ t.78 = 1
+ t.79 = t.78
+ t.74 = call t.77(t.14 t.79)
+ t.80 = t.74
+ t.6 = t.80
+ t.82 = t.14
+ t.14 = t.82
+ t.83 = [t.14+0]
+ t.84 = [t.83+4]
+ t.85 = t.2
+ t.86 = t.85
+ t.81 = call t.84(t.14 t.86)
+ t.87 = t.81
+ t.6 = t.87
+if295_end:
+if263_end:
+ goto :while254_test
+while254_end:
+ t.88 = 1
+ t.89 = t.88
+ t.90 = t.89
+ ret t.90
func Tree_Delete(this t.0 )
- t.2 = this
t.3 = this
- t.4 = 1
- t.5 = 0
- t.6 = 1
-while160_test:
- t.7 = t.4
- if0 t.7 goto :while160_end
-while160_body:
- t.2 = t.2
- t.10 = [t.2+0]
- t.11 = [t.10+20]
- t.9 = call t.11(t.2 )
- t.8 = t.9
- t.13 = t.0
- t.14 = t.8
- t.12 = LtS(t.13 t.14)
- t.15 = t.12
- if0 t.15 goto :if165_else
-if165_body:
- t.2 = t.2
- t.17 = [t.2+0]
- t.18 = [t.17+32]
- t.16 = call t.18(t.2 )
- t.19 = t.16
- if0 t.19 goto :if169_else
-if169_body:
- t.3 = t.2
- t.2 = t.2
- t.21 = [t.2+0]
- t.22 = [t.21+16]
- t.20 = call t.22(t.2 )
- t.2 = t.20
- goto :if169_end
-if169_else:
- t.4 = 0
-if169_end:
- goto :if165_end
-if165_else:
- t.24 = t.8
- t.25 = t.0
- t.23 = LtS(t.24 t.25)
- t.26 = t.23
- if0 t.26 goto :if176_else
-if176_body:
- t.2 = t.2
- t.28 = [t.2+0]
- t.29 = [t.28+28]
- t.27 = call t.29(t.2 )
- t.30 = t.27
- if0 t.30 goto :if180_else
-if180_body:
- t.3 = t.2
- t.2 = t.2
- t.32 = [t.2+0]
- t.33 = [t.32+12]
- t.31 = call t.33(t.2 )
- t.2 = t.31
- goto :if180_end
-if180_else:
- t.4 = 0
-if180_end:
- goto :if176_end
-if176_else:
- t.34 = t.6
- if0 t.34 goto :if187_else
-if187_body:
- t.2 = t.2
- t.38 = [t.2+0]
- t.39 = [t.38+28]
- t.37 = call t.39(t.2 )
- t.36 = Eq(t.37 0)
- t.40 = t.36
- t.2 = t.2
- t.43 = [t.2+0]
- t.44 = [t.43+32]
- t.42 = call t.44(t.2 )
- t.41 = Eq(t.42 0)
- t.45 = t.41
- t.46 = Eq(1 t.40)
- t.47 = Eq(1 t.45)
- t.35 = Eq(t.46 t.47)
- t.48 = t.35
- if0 t.48 goto :if188_else
-if188_body:
- t.49 = 1
- goto :if188_end
-if188_else:
- t.51 = [this]
- t.52 = t.3
- t.53 = t.2
- t.51 = [t.51+56]
- t.50 = call t.51(this t.52 t.53)
- t.49 = t.50
-if188_end:
- goto :if187_end
-if187_else:
- t.55 = [this]
- t.56 = t.3
+ t.4 = t.3
+ t.2 = t.4
+ t.6 = this
+ t.7 = t.6
+ t.5 = t.7
+ t.9 = 1
+ t.10 = t.9
+ t.8 = t.10
+ t.12 = 0
+ t.13 = t.12
+ t.11 = t.13
+ t.15 = 1
+ t.16 = t.15
+ t.14 = t.16
+while335_test:
+ t.17 = t.8
+ t.18 = t.17
+ t.19 = t.18
+ if0 t.19 goto :while335_end
+while335_body:
+ t.22 = t.2
+ t.2 = t.22
+ t.23 = [t.2+0]
+ t.24 = [t.23+20]
+ t.21 = call t.24(t.2)
+ t.25 = t.21
+ t.20 = t.25
+ t.27 = t.0
+ t.28 = t.20
+ t.26 = LtS(t.27 t.28)
+ t.29 = t.26
+ t.30 = t.29
+ if0 t.30 goto :if344_else
+if344_body:
+ t.32 = t.2
+ t.2 = t.32
+ t.33 = [t.2+0]
+ t.34 = [t.33+32]
+ t.31 = call t.34(t.2)
+ t.35 = t.31
+ t.36 = t.35
+ if0 t.36 goto :if349_else
+if349_body:
+ t.37 = t.2
+ t.38 = t.37
+ t.5 = t.38
+ t.40 = t.2
+ t.2 = t.40
+ t.41 = [t.2+0]
+ t.42 = [t.41+16]
+ t.39 = call t.42(t.2)
+ t.43 = t.39
+ t.2 = t.43
+ goto :if349_end
+if349_else:
+ t.44 = 0
+ t.45 = t.44
+ t.8 = t.45
+if349_end:
+ goto :if344_end
+if344_else:
+ t.47 = t.20
+ t.48 = t.0
+ t.46 = LtS(t.47 t.48)
+ t.49 = t.46
+ t.50 = t.49
+ if0 t.50 goto :if364_else
+if364_body:
+ t.52 = t.2
+ t.2 = t.52
+ t.53 = [t.2+0]
+ t.54 = [t.53+28]
+ t.51 = call t.54(t.2)
+ t.55 = t.51
+ t.56 = t.55
+ if0 t.56 goto :if369_else
+if369_body:
t.57 = t.2
- t.55 = [t.55+56]
- t.54 = call t.55(this t.56 t.57)
- t.49 = t.54
-if187_end:
- t.5 = 1
- t.4 = 0
-if176_end:
-if165_end:
- t.6 = 0
- goto :while160_test
-while160_end:
- t.58 = t.5
- ret t.58
+ t.58 = t.57
+ t.5 = t.58
+ t.60 = t.2
+ t.2 = t.60
+ t.61 = [t.2+0]
+ t.62 = [t.61+12]
+ t.59 = call t.62(t.2)
+ t.63 = t.59
+ t.2 = t.63
+ goto :if369_end
+if369_else:
+ t.64 = 0
+ t.65 = t.64
+ t.8 = t.65
+if369_end:
+ goto :if364_end
+if364_else:
+ t.66 = t.14
+ t.67 = t.66
+ t.68 = t.67
+ if0 t.68 goto :if384_else
+if384_body:
+ t.72 = t.2
+ t.2 = t.72
+ t.73 = [t.2+0]
+ t.74 = [t.73+28]
+ t.71 = call t.74(t.2)
+ t.75 = t.71
+ t.70 = Eq(t.75 0)
+ t.76 = t.70
+ t.79 = t.2
+ t.2 = t.79
+ t.80 = [t.2+0]
+ t.81 = [t.80+32]
+ t.78 = call t.81(t.2)
+ t.82 = t.78
+ t.77 = Eq(t.82 0)
+ t.83 = t.77
+ t.84 = Eq(1 t.76)
+ t.85 = Eq(1 t.83)
+ t.69 = Eq(t.84 t.85)
+ t.86 = t.69
+ t.87 = t.86
+ if0 t.87 goto :if387_else
+if387_body:
+ t.89 = 1
+ t.90 = t.89
+ t.88 = t.90
+ goto :if387_end
+if387_else:
+ t.92 = this
+ t.93 = [this]
+ t.94 = t.5
+ t.95 = t.94
+ t.96 = t.2
+ t.97 = t.96
+ t.93 = [t.93+56]
+ t.91 = call t.93(this t.95 t.97)
+ t.98 = t.91
+ t.88 = t.98
+if387_end:
+ goto :if384_end
+if384_else:
+ t.100 = this
+ t.101 = [this]
+ t.102 = t.5
+ t.103 = t.102
+ t.104 = t.2
+ t.105 = t.104
+ t.101 = [t.101+56]
+ t.99 = call t.101(this t.103 t.105)
+ t.106 = t.99
+ t.88 = t.106
+if384_end:
+ t.107 = 1
+ t.108 = t.107
+ t.11 = t.108
+ t.109 = 0
+ t.110 = t.109
+ t.8 = t.110
+if364_end:
+if344_end:
+ t.111 = 0
+ t.112 = t.111
+ t.14 = t.112
+ goto :while335_test
+while335_end:
+ t.113 = t.11
+ t.114 = t.113
+ t.115 = t.114
+ ret t.115
func Tree_Remove(this t.0 t.1 )
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+32]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :if211_else
-if211_body:
- t.8 = [this]
- t.9 = t.0
- t.10 = t.1
- t.8 = [t.8+64]
- t.7 = call t.8(this t.9 t.10)
- t.6 = t.7
- goto :if211_end
-if211_else:
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+28]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- if0 t.14 goto :if219_else
-if219_body:
- t.16 = [this]
- t.17 = t.0
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+32]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :if433_else
+if433_body:
+ t.10 = this
+ t.11 = [this]
+ t.12 = t.0
+ t.13 = t.12
+ t.14 = t.1
+ t.15 = t.14
+ t.11 = [t.11+64]
+ t.9 = call t.11(this t.13 t.15)
+ t.16 = t.9
+ t.8 = t.16
+ goto :if433_end
+if433_else:
t.18 = t.1
- t.16 = [t.16+60]
- t.15 = call t.16(this t.17 t.18)
- t.6 = t.15
- goto :if219_end
-if219_else:
- t.1 = t.1
- t.21 = [t.1+0]
- t.22 = [t.21+20]
- t.20 = call t.22(t.1 )
- t.19 = t.20
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+16]
- t.25 = call t.27(t.0 )
- t.28 = t.25
- t.29 = [t.28+0]
- t.30 = [t.29+20]
- t.24 = call t.30(t.28 )
- t.23 = t.24
- t.32 = [this]
- t.33 = t.19
- t.34 = t.23
- t.32 = [t.32+44]
- t.31 = call t.32(this t.33 t.34)
- t.35 = t.31
- if0 t.35 goto :if237_else
-if237_body:
- t.0 = t.0
- t.37 = [t.0+0]
- t.38 = [t.37+8]
- t.39 = [this+104]
- t.36 = call t.38(t.0 t.39)
- t.6 = t.36
- t.0 = t.0
+ t.1 = t.18
+ t.19 = [t.1+0]
+ t.20 = [t.19+28]
+ t.17 = call t.20(t.1)
+ t.21 = t.17
+ t.22 = t.21
+ if0 t.22 goto :if447_else
+if447_body:
+ t.24 = this
+ t.25 = [this]
+ t.26 = t.0
+ t.27 = t.26
+ t.28 = t.1
+ t.29 = t.28
+ t.25 = [t.25+60]
+ t.23 = call t.25(this t.27 t.29)
+ t.30 = t.23
+ t.8 = t.30
+ goto :if447_end
+if447_else:
+ t.33 = t.1
+ t.1 = t.33
+ t.34 = [t.1+0]
+ t.35 = [t.34+20]
+ t.32 = call t.35(t.1)
+ t.36 = t.32
+ t.31 = t.36
+ t.40 = t.0
+ t.0 = t.40
t.41 = [t.0+0]
- t.42 = [t.41+36]
- t.43 = 0
- t.40 = call t.42(t.0 t.43)
- t.6 = t.40
- goto :if237_end
-if237_else:
- t.0 = t.0
- t.45 = [t.0+0]
- t.46 = [t.45+4]
- t.47 = [this+104]
- t.44 = call t.46(t.0 t.47)
- t.6 = t.44
- t.0 = t.0
- t.49 = [t.0+0]
- t.50 = [t.49+40]
- t.51 = 0
- t.48 = call t.50(t.0 t.51)
- t.6 = t.48
-if237_end:
-if219_end:
-if211_end:
- t.52 = 1
- ret t.52
+ t.42 = [t.41+16]
+ t.39 = call t.42(t.0)
+ t.43 = t.39
+ t.44 = t.43
+ t.45 = t.44
+ t.46 = [t.45+0]
+ t.47 = [t.46+20]
+ t.38 = call t.47(t.45)
+ t.48 = t.38
+ t.37 = t.48
+ t.50 = this
+ t.51 = [this]
+ t.52 = t.31
+ t.53 = t.52
+ t.54 = t.37
+ t.55 = t.54
+ t.51 = [t.51+44]
+ t.49 = call t.51(this t.53 t.55)
+ t.56 = t.49
+ t.57 = t.56
+ if0 t.57 goto :if477_else
+if477_body:
+ t.59 = t.0
+ t.0 = t.59
+ t.60 = [t.0+0]
+ t.61 = [t.60+8]
+ t.62 = [this+104]
+ t.63 = t.62
+ t.58 = call t.61(t.0 t.63)
+ t.64 = t.58
+ t.8 = t.64
+ t.66 = t.0
+ t.0 = t.66
+ t.67 = [t.0+0]
+ t.68 = [t.67+36]
+ t.69 = 0
+ t.70 = t.69
+ t.65 = call t.68(t.0 t.70)
+ t.71 = t.65
+ t.8 = t.71
+ goto :if477_end
+if477_else:
+ t.73 = t.0
+ t.0 = t.73
+ t.74 = [t.0+0]
+ t.75 = [t.74+4]
+ t.76 = [this+104]
+ t.77 = t.76
+ t.72 = call t.75(t.0 t.77)
+ t.78 = t.72
+ t.8 = t.78
+ t.80 = t.0
+ t.0 = t.80
+ t.81 = [t.0+0]
+ t.82 = [t.81+40]
+ t.83 = 0
+ t.84 = t.83
+ t.79 = call t.82(t.0 t.84)
+ t.85 = t.79
+ t.8 = t.85
+if477_end:
+if447_end:
+if433_end:
+ t.86 = 1
+ t.87 = t.86
+ t.88 = t.87
+ ret t.88
func Tree_RemoveRight(this t.0 t.1 )
-while259_test:
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+28]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :while259_end
-while259_body:
- t.1 = t.1
- t.8 = [t.1+0]
- t.9 = [t.8+24]
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+12]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- t.15 = [t.14+0]
- t.16 = [t.15+20]
- t.10 = call t.16(t.14 )
- t.17 = t.10
- t.7 = call t.9(t.1 t.17)
- t.6 = t.7
- t.0 = t.1
- t.1 = t.1
- t.19 = [t.1+0]
- t.20 = [t.19+12]
- t.18 = call t.20(t.1 )
- t.1 = t.18
- goto :while259_test
-while259_end:
- t.0 = t.0
- t.22 = [t.0+0]
- t.23 = [t.22+4]
- t.24 = [this+104]
- t.21 = call t.23(t.0 t.24)
- t.6 = t.21
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+40]
- t.28 = 0
- t.25 = call t.27(t.0 t.28)
- t.6 = t.25
- t.29 = 1
- ret t.29
+while517_test:
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+28]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :while517_end
+while517_body:
+ t.10 = t.1
+ t.1 = t.10
+ t.11 = [t.1+0]
+ t.12 = [t.11+24]
+ t.15 = t.1
+ t.1 = t.15
+ t.16 = [t.1+0]
+ t.17 = [t.16+12]
+ t.14 = call t.17(t.1)
+ t.18 = t.14
+ t.19 = t.18
+ t.20 = t.19
+ t.21 = [t.20+0]
+ t.22 = [t.21+20]
+ t.13 = call t.22(t.20)
+ t.23 = t.13
+ t.9 = call t.12(t.1 t.23)
+ t.24 = t.9
+ t.8 = t.24
+ t.25 = t.1
+ t.26 = t.25
+ t.0 = t.26
+ t.28 = t.1
+ t.1 = t.28
+ t.29 = [t.1+0]
+ t.30 = [t.29+12]
+ t.27 = call t.30(t.1)
+ t.31 = t.27
+ t.1 = t.31
+ goto :while517_test
+while517_end:
+ t.33 = t.0
+ t.0 = t.33
+ t.34 = [t.0+0]
+ t.35 = [t.34+4]
+ t.36 = [this+104]
+ t.37 = t.36
+ t.32 = call t.35(t.0 t.37)
+ t.38 = t.32
+ t.8 = t.38
+ t.40 = t.0
+ t.0 = t.40
+ t.41 = [t.0+0]
+ t.42 = [t.41+40]
+ t.43 = 0
+ t.44 = t.43
+ t.39 = call t.42(t.0 t.44)
+ t.45 = t.39
+ t.8 = t.45
+ t.46 = 1
+ t.47 = t.46
+ t.48 = t.47
+ ret t.48
func Tree_RemoveLeft(this t.0 t.1 )
-while287_test:
- t.1 = t.1
- t.3 = [t.1+0]
- t.4 = [t.3+32]
- t.2 = call t.4(t.1 )
- t.5 = t.2
- if0 t.5 goto :while287_end
-while287_body:
- t.1 = t.1
- t.8 = [t.1+0]
- t.9 = [t.8+24]
- t.1 = t.1
- t.12 = [t.1+0]
- t.13 = [t.12+16]
- t.11 = call t.13(t.1 )
- t.14 = t.11
- t.15 = [t.14+0]
- t.16 = [t.15+20]
- t.10 = call t.16(t.14 )
- t.17 = t.10
- t.7 = call t.9(t.1 t.17)
- t.6 = t.7
- t.0 = t.1
- t.1 = t.1
- t.19 = [t.1+0]
- t.20 = [t.19+16]
- t.18 = call t.20(t.1 )
- t.1 = t.18
- goto :while287_test
-while287_end:
- t.0 = t.0
- t.22 = [t.0+0]
- t.23 = [t.22+8]
- t.24 = [this+104]
- t.21 = call t.23(t.0 t.24)
- t.6 = t.21
- t.0 = t.0
- t.26 = [t.0+0]
- t.27 = [t.26+36]
- t.28 = 0
- t.25 = call t.27(t.0 t.28)
- t.6 = t.25
- t.29 = 1
- ret t.29
+while564_test:
+ t.3 = t.1
+ t.1 = t.3
+ t.4 = [t.1+0]
+ t.5 = [t.4+32]
+ t.2 = call t.5(t.1)
+ t.6 = t.2
+ t.7 = t.6
+ if0 t.7 goto :while564_end
+while564_body:
+ t.10 = t.1
+ t.1 = t.10
+ t.11 = [t.1+0]
+ t.12 = [t.11+24]
+ t.15 = t.1
+ t.1 = t.15
+ t.16 = [t.1+0]
+ t.17 = [t.16+16]
+ t.14 = call t.17(t.1)
+ t.18 = t.14
+ t.19 = t.18
+ t.20 = t.19
+ t.21 = [t.20+0]
+ t.22 = [t.21+20]
+ t.13 = call t.22(t.20)
+ t.23 = t.13
+ t.9 = call t.12(t.1 t.23)
+ t.24 = t.9
+ t.8 = t.24
+ t.25 = t.1
+ t.26 = t.25
+ t.0 = t.26
+ t.28 = t.1
+ t.1 = t.28
+ t.29 = [t.1+0]
+ t.30 = [t.29+16]
+ t.27 = call t.30(t.1)
+ t.31 = t.27
+ t.1 = t.31
+ goto :while564_test
+while564_end:
+ t.33 = t.0
+ t.0 = t.33
+ t.34 = [t.0+0]
+ t.35 = [t.34+8]
+ t.36 = [this+104]
+ t.37 = t.36
+ t.32 = call t.35(t.0 t.37)
+ t.38 = t.32
+ t.8 = t.38
+ t.40 = t.0
+ t.0 = t.40
+ t.41 = [t.0+0]
+ t.42 = [t.41+36]
+ t.43 = 0
+ t.44 = t.43
+ t.39 = call t.42(t.0 t.44)
+ t.45 = t.39
+ t.8 = t.45
+ t.46 = 1
+ t.47 = t.46
+ t.48 = t.47
+ ret t.48
func Tree_Search(this t.0 )
- t.2 = this
- t.3 = 1
- t.4 = 0
-while315_test:
- t.5 = t.3
- if0 t.5 goto :while315_end
-while315_body:
- t.2 = t.2
- t.8 = [t.2+0]
- t.9 = [t.8+20]
- t.7 = call t.9(t.2 )
- t.6 = t.7
- t.11 = t.0
- t.12 = t.6
- t.10 = LtS(t.11 t.12)
- t.13 = t.10
- if0 t.13 goto :if320_else
-if320_body:
- t.2 = t.2
- t.15 = [t.2+0]
- t.16 = [t.15+32]
- t.14 = call t.16(t.2 )
- t.17 = t.14
- if0 t.17 goto :if324_else
-if324_body:
- t.2 = t.2
- t.19 = [t.2+0]
- t.20 = [t.19+16]
- t.18 = call t.20(t.2 )
- t.2 = t.18
- goto :if324_end
-if324_else:
- t.3 = 0
-if324_end:
- goto :if320_end
-if320_else:
- t.22 = t.6
- t.23 = t.0
- t.21 = LtS(t.22 t.23)
- t.24 = t.21
- if0 t.24 goto :if331_else
-if331_body:
- t.2 = t.2
- t.26 = [t.2+0]
- t.27 = [t.26+28]
- t.25 = call t.27(t.2 )
- t.28 = t.25
- if0 t.28 goto :if335_else
-if335_body:
- t.2 = t.2
- t.30 = [t.2+0]
- t.31 = [t.30+12]
- t.29 = call t.31(t.2 )
- t.2 = t.29
- goto :if335_end
-if335_else:
- t.3 = 0
-if335_end:
- goto :if331_end
-if331_else:
- t.4 = 1
- t.3 = 0
-if331_end:
-if320_end:
- goto :while315_test
-while315_end:
- t.32 = t.4
- ret t.32
-
-func Tree_Print(this )
- t.1 = this
- t.4 = [this]
- t.5 = t.1
- t.4 = [t.4+76]
- t.3 = call t.4(this t.5)
- t.2 = t.3
+ t.3 = this
+ t.4 = t.3
+ t.2 = t.4
t.6 = 1
- ret t.6
+ t.7 = t.6
+ t.5 = t.7
+ t.9 = 0
+ t.10 = t.9
+ t.8 = t.10
+while617_test:
+ t.11 = t.5
+ t.12 = t.11
+ t.13 = t.12
+ if0 t.13 goto :while617_end
+while617_body:
+ t.16 = t.2
+ t.2 = t.16
+ t.17 = [t.2+0]
+ t.18 = [t.17+20]
+ t.15 = call t.18(t.2)
+ t.19 = t.15
+ t.14 = t.19
+ t.21 = t.0
+ t.22 = t.14
+ t.20 = LtS(t.21 t.22)
+ t.23 = t.20
+ t.24 = t.23
+ if0 t.24 goto :if626_else
+if626_body:
+ t.26 = t.2
+ t.2 = t.26
+ t.27 = [t.2+0]
+ t.28 = [t.27+32]
+ t.25 = call t.28(t.2)
+ t.29 = t.25
+ t.30 = t.29
+ if0 t.30 goto :if631_else
+if631_body:
+ t.32 = t.2
+ t.2 = t.32
+ t.33 = [t.2+0]
+ t.34 = [t.33+16]
+ t.31 = call t.34(t.2)
+ t.35 = t.31
+ t.2 = t.35
+ goto :if631_end
+if631_else:
+ t.36 = 0
+ t.37 = t.36
+ t.5 = t.37
+if631_end:
+ goto :if626_end
+if626_else:
+ t.39 = t.14
+ t.40 = t.0
+ t.38 = LtS(t.39 t.40)
+ t.41 = t.38
+ t.42 = t.41
+ if0 t.42 goto :if644_else
+if644_body:
+ t.44 = t.2
+ t.2 = t.44
+ t.45 = [t.2+0]
+ t.46 = [t.45+28]
+ t.43 = call t.46(t.2)
+ t.47 = t.43
+ t.48 = t.47
+ if0 t.48 goto :if649_else
+if649_body:
+ t.50 = t.2
+ t.2 = t.50
+ t.51 = [t.2+0]
+ t.52 = [t.51+12]
+ t.49 = call t.52(t.2)
+ t.53 = t.49
+ t.2 = t.53
+ goto :if649_end
+if649_else:
+ t.54 = 0
+ t.55 = t.54
+ t.5 = t.55
+if649_end:
+ goto :if644_end
+if644_else:
+ t.56 = 1
+ t.57 = t.56
+ t.8 = t.57
+ t.58 = 0
+ t.59 = t.58
+ t.5 = t.59
+if644_end:
+if626_end:
+ goto :while617_test
+while617_end:
+ t.60 = t.8
+ t.61 = t.60
+ t.62 = t.61
+ ret t.62
-func Tree_RecPrint(this t.0 )
- t.0 = t.0
- t.2 = [t.0+0]
- t.3 = [t.2+32]
- t.1 = call t.3(t.0 )
- t.4 = t.1
- if0 t.4 goto :if347_else
-if347_body:
+func Tree_Print(this )
+ t.2 = this
+ t.3 = t.2
+ t.1 = t.3
+ t.6 = this
t.7 = [this]
- t.0 = t.0
- t.9 = [t.0+0]
- t.10 = [t.9+16]
- t.8 = call t.10(t.0 )
- t.11 = t.8
+ t.8 = t.1
+ t.9 = t.8
t.7 = [t.7+76]
- t.6 = call t.7(this t.11)
- t.5 = t.6
- goto :if347_end
-if347_else:
- t.5 = 1
-if347_end:
- t.0 = t.0
+ t.5 = call t.7(this t.9)
+ t.10 = t.5
+ t.4 = t.10
+ t.11 = 1
+ t.12 = t.11
+ t.13 = t.12
+ ret t.13
+
+func Tree_RecPrint(this t.0 )
+ t.2 = t.0
+ t.0 = t.2
+ t.3 = [t.0+0]
+ t.4 = [t.3+32]
+ t.1 = call t.4(t.0)
+ t.5 = t.1
+ t.6 = t.5
+ if0 t.6 goto :if680_else
+if680_body:
+ t.9 = this
+ t.10 = [this]
+ t.12 = t.0
+ t.0 = t.12
t.13 = [t.0+0]
- t.14 = [t.13+20]
- t.12 = call t.14(t.0 )
- t.15 = t.12
- PrintIntS(t.15)
- t.0 = t.0
- t.17 = [t.0+0]
- t.18 = [t.17+28]
- t.16 = call t.18(t.0 )
- t.19 = t.16
- if0 t.19 goto :if361_else
-if361_body:
- t.21 = [this]
- t.0 = t.0
- t.23 = [t.0+0]
- t.24 = [t.23+12]
- t.22 = call t.24(t.0 )
- t.25 = t.22
- t.21 = [t.21+76]
- t.20 = call t.21(this t.25)
- t.5 = t.20
- goto :if361_end
-if361_else:
- t.5 = 1
-if361_end:
- t.26 = 1
- ret t.26
+ t.14 = [t.13+16]
+ t.11 = call t.14(t.0)
+ t.15 = t.11
+ t.10 = [t.10+76]
+ t.8 = call t.10(this t.15)
+ t.16 = t.8
+ t.7 = t.16
+ goto :if680_end
+if680_else:
+ t.17 = 1
+ t.18 = t.17
+ t.7 = t.18
+if680_end:
+ t.20 = t.0
+ t.0 = t.20
+ t.21 = [t.0+0]
+ t.22 = [t.21+20]
+ t.19 = call t.22(t.0)
+ t.23 = t.19
+ t.24 = t.23
+ PrintIntS(t.24)
+ t.26 = t.0
+ t.0 = t.26
+ t.27 = [t.0+0]
+ t.28 = [t.27+28]
+ t.25 = call t.28(t.0)
+ t.29 = t.25
+ t.30 = t.29
+ if0 t.30 goto :if703_else
+if703_body:
+ t.32 = this
+ t.33 = [this]
+ t.35 = t.0
+ t.0 = t.35
+ t.36 = [t.0+0]
+ t.37 = [t.36+12]
+ t.34 = call t.37(t.0)
+ t.38 = t.34
+ t.33 = [t.33+76]
+ t.31 = call t.33(this t.38)
+ t.39 = t.31
+ t.7 = t.39
+ goto :if703_end
+if703_else:
+ t.40 = 1
+ t.41 = t.40
+ t.7 = t.41
+if703_end:
+ t.42 = 1
+ t.43 = t.42
+ t.44 = t.43
+ ret t.44
func Tree_accept(this t.0 )
t.1 = 333
- PrintIntS(t.1)
- t.0 = t.0
- t.4 = [t.0+0]
- t.5 = [t.4+0]
- t.6 = this
- t.3 = call t.5(t.0 t.6)
- t.2 = t.3
- t.7 = 0
- ret t.7
+ t.2 = t.1
+ t.3 = t.2
+ PrintIntS(t.3)
+ t.6 = t.0
+ t.0 = t.6
+ t.7 = [t.0+0]
+ t.8 = [t.7+0]
+ t.9 = this
+ t.10 = t.9
+ t.5 = call t.8(t.0 t.10)
+ t.11 = t.5
+ t.4 = t.11
+ t.12 = 0
+ t.13 = t.12
+ t.14 = t.13
+ ret t.14
const functable_Visitor
:Visitor_visit
func Visitor_visit(this t.0 )
- t.0 = t.0
- t.2 = [t.0+0]
- t.3 = [t.2+28]
- t.1 = call t.3(t.0 )
- t.4 = t.1
- if0 t.4 goto :if378_else
-if378_body:
- t.0 = t.0
- t.6 = [t.0+0]
- t.7 = [t.6+12]
- t.5 = call t.7(t.0 )
- [this+8] = t.5
- t.10 = [this+8]
- t.11 = [t.10+0]
- t.12 = [t.11+80]
- t.13 = this
- t.9 = call t.12(t.10 t.13)
- t.8 = t.9
- goto :if378_end
-if378_else:
- t.8 = 0
-if378_end:
- t.0 = t.0
- t.15 = [t.0+0]
- t.16 = [t.15+32]
- t.14 = call t.16(t.0 )
- t.17 = t.14
- if0 t.17 goto :if389_else
-if389_body:
- t.0 = t.0
- t.19 = [t.0+0]
- t.20 = [t.19+16]
- t.18 = call t.20(t.0 )
- [this+4] = t.18
- t.22 = [this+4]
- t.23 = [t.22+0]
- t.24 = [t.23+80]
- t.25 = this
- t.21 = call t.24(t.22 t.25)
- t.8 = t.21
- goto :if389_end
-if389_else:
- t.8 = 0
-if389_end:
- t.26 = 0
- ret t.26
+ t.2 = t.0
+ t.0 = t.2
+ t.3 = [t.0+0]
+ t.4 = [t.3+28]
+ t.1 = call t.4(t.0)
+ t.5 = t.1
+ t.6 = t.5
+ if0 t.6 goto :if736_else
+if736_body:
+ t.8 = t.0
+ t.0 = t.8
+ t.9 = [t.0+0]
+ t.10 = [t.9+12]
+ t.7 = call t.10(t.0)
+ t.11 = t.7
+ [this+8] = t.11
+ t.14 = [this+8]
+ t.15 = t.14
+ t.16 = [t.15+0]
+ t.17 = [t.16+80]
+ t.18 = this
+ t.19 = t.18
+ t.13 = call t.17(t.15 t.19)
+ t.20 = t.13
+ t.12 = t.20
+ goto :if736_end
+if736_else:
+ t.21 = 0
+ t.22 = t.21
+ t.12 = t.22
+if736_end:
+ t.24 = t.0
+ t.0 = t.24
+ t.25 = [t.0+0]
+ t.26 = [t.25+32]
+ t.23 = call t.26(t.0)
+ t.27 = t.23
+ t.28 = t.27
+ if0 t.28 goto :if756_else
+if756_body:
+ t.30 = t.0
+ t.0 = t.30
+ t.31 = [t.0+0]
+ t.32 = [t.31+16]
+ t.29 = call t.32(t.0)
+ t.33 = t.29
+ [this+4] = t.33
+ t.35 = [this+4]
+ t.36 = t.35
+ t.37 = [t.36+0]
+ t.38 = [t.37+80]
+ t.39 = this
+ t.40 = t.39
+ t.34 = call t.38(t.36 t.40)
+ t.41 = t.34
+ t.12 = t.41
+ goto :if756_end
+if756_else:
+ t.42 = 0
+ t.43 = t.42
+ t.12 = t.43
+if756_end:
+ t.44 = 0
+ t.45 = t.44
+ t.46 = t.45
+ ret t.46
const functable_MyVisitor
:MyVisitor_visit
:Visitor_visit
func MyVisitor_visit(this t.0 )
- t.0 = t.0
- t.2 = [t.0+0]
- t.3 = [t.2+28]
- t.1 = call t.3(t.0 )
- t.4 = t.1
- if0 t.4 goto :if401_else
-if401_body:
- t.0 = t.0
- t.6 = [t.0+0]
- t.7 = [t.6+12]
- t.5 = call t.7(t.0 )
- [this+12] = t.5
- t.10 = [this+12]
- t.11 = [t.10+0]
- t.12 = [t.11+80]
- t.13 = this
- t.9 = call t.12(t.10 t.13)
- t.8 = t.9
- goto :if401_end
-if401_else:
- t.8 = 0
-if401_end:
- t.0 = t.0
- t.15 = [t.0+0]
- t.16 = [t.15+20]
- t.14 = call t.16(t.0 )
- t.17 = t.14
- PrintIntS(t.17)
- t.0 = t.0
- t.19 = [t.0+0]
- t.20 = [t.19+32]
- t.18 = call t.20(t.0 )
- t.21 = t.18
- if0 t.21 goto :if416_else
-if416_body:
- t.0 = t.0
- t.23 = [t.0+0]
- t.24 = [t.23+16]
- t.22 = call t.24(t.0 )
- [this+8] = t.22
- t.26 = [this+8]
- t.27 = [t.26+0]
- t.28 = [t.27+80]
- t.29 = this
- t.25 = call t.28(t.26 t.29)
- t.8 = t.25
- goto :if416_end
-if416_else:
- t.8 = 0
-if416_end:
- t.30 = 0
- ret t.30
+ t.2 = t.0
+ t.0 = t.2
+ t.3 = [t.0+0]
+ t.4 = [t.3+28]
+ t.1 = call t.4(t.0)
+ t.5 = t.1
+ t.6 = t.5
+ if0 t.6 goto :if779_else
+if779_body:
+ t.8 = t.0
+ t.0 = t.8
+ t.9 = [t.0+0]
+ t.10 = [t.9+12]
+ t.7 = call t.10(t.0)
+ t.11 = t.7
+ [this+12] = t.11
+ t.14 = [this+12]
+ t.15 = t.14
+ t.16 = [t.15+0]
+ t.17 = [t.16+80]
+ t.18 = this
+ t.19 = t.18
+ t.13 = call t.17(t.15 t.19)
+ t.20 = t.13
+ t.12 = t.20
+ goto :if779_end
+if779_else:
+ t.21 = 0
+ t.22 = t.21
+ t.12 = t.22
+if779_end:
+ t.24 = t.0
+ t.0 = t.24
+ t.25 = [t.0+0]
+ t.26 = [t.25+20]
+ t.23 = call t.26(t.0)
+ t.27 = t.23
+ t.28 = t.27
+ PrintIntS(t.28)
+ t.30 = t.0
+ t.0 = t.30
+ t.31 = [t.0+0]
+ t.32 = [t.31+32]
+ t.29 = call t.32(t.0)
+ t.33 = t.29
+ t.34 = t.33
+ if0 t.34 goto :if805_else
+if805_body:
+ t.36 = t.0
+ t.0 = t.36
+ t.37 = [t.0+0]
+ t.38 = [t.37+16]
+ t.35 = call t.38(t.0)
+ t.39 = t.35
+ [this+8] = t.39
+ t.41 = [this+8]
+ t.42 = t.41
+ t.43 = [t.42+0]
+ t.44 = [t.43+80]
+ t.45 = this
+ t.46 = t.45
+ t.40 = call t.44(t.42 t.46)
+ t.47 = t.40
+ t.12 = t.47
+ goto :if805_end
+if805_else:
+ t.48 = 0
+ t.49 = t.48
+ t.12 = t.49
+if805_end:
+ t.50 = 0
+ t.51 = t.50
+ t.52 = t.51
+ ret t.52
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex30.vapor b/output/ex30.vapor
index 03c3830..9d03cd3 100644
--- a/output/ex30.vapor
+++ b/output/ex30.vapor
@@ -6,7 +6,9 @@ const functable_A
func A_foo(this )
t.0 = 22
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex31.vapor b/output/ex31.vapor
index 127792e..40b024b 100644
--- a/output/ex31.vapor
+++ b/output/ex31.vapor
@@ -1,7 +1,9 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
ret
const functable_A
@@ -10,11 +12,15 @@ const functable_A
func A_foo(this )
t.0 = 22
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func A_bar(this )
t.0 = 42
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex32.vapor b/output/ex32.vapor
index 4149aba..8816a0a 100644
--- a/output/ex32.vapor
+++ b/output/ex32.vapor
@@ -1,16 +1,23 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.8 = 12
- t.9 = 14
- t.10 = 15
- t.5 = call t.7(t.3 t.8 t.9 t.10)
- t.11 = t.5
- PrintIntS(t.11)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.11 = 12
+ t.12 = t.11
+ t.13 = 14
+ t.14 = t.13
+ t.15 = 15
+ t.16 = t.15
+ t.7 = call t.10(t.3 t.12 t.14 t.16)
+ t.17 = t.7
+ t.18 = t.17
+ PrintIntS(t.18)
ret
const functable_A
@@ -18,7 +25,9 @@ const functable_A
func A_foo(this t.0 t.1 t.2 )
t.3 = 22
- ret t.3
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex33.vapor b/output/ex33.vapor
index 4260958..8557073 100644
--- a/output/ex33.vapor
+++ b/output/ex33.vapor
@@ -1,33 +1,41 @@
func Main()
t.4 = HeapAllocZ(16)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+4]
- t.9 = 0
- t.10 = 1
- t.8 = Sub(t.9 t.10)
- t.14 = 6
- t.15 = 7
- t.13 = MulS(t.14 t.15)
- t.11 = t.8
- t.12 = 400
- t.16 = t.13
- t.5 = call t.7(t.3 t.14 t.15 t.16)
- t.17 = t.5
- PrintIntS(t.17)
- t.3 = t.3
- t.19 = [t.3+0]
- t.20 = [t.19+0]
- t.22 = 0
- t.23 = 1
- t.21 = Add(t.22 t.23)
- t.24 = t.21
- t.25 = 400
- t.18 = call t.20(t.3 t.24 t.25)
- t.26 = t.18
- PrintIntS(t.26)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+4]
+ t.12 = 0
+ t.13 = 1
+ t.11 = Sub(t.12 t.13)
+ t.14 = t.11
+ t.15 = 400
+ t.16 = t.15
+ t.18 = 6
+ t.19 = 7
+ t.17 = MulS(t.18 t.19)
+ t.20 = t.17
+ t.7 = call t.10(t.3 t.14 t.16 t.20)
+ t.21 = t.7
+ t.22 = t.21
+ PrintIntS(t.22)
+ t.24 = t.3
+ t.3 = t.24
+ t.25 = [t.3+0]
+ t.26 = [t.25+0]
+ t.28 = 0
+ t.29 = 1
+ t.27 = Add(t.28 t.29)
+ t.30 = t.27
+ t.31 = 400
+ t.32 = t.31
+ t.23 = call t.26(t.3 t.30 t.32)
+ t.33 = t.23
+ t.34 = t.33
+ PrintIntS(t.34)
ret
const functable_A
@@ -35,13 +43,19 @@ const functable_A
:A_bar
func A_foo(this t.0 t.1 )
- [this+8] = 3
- t.2 = 22
- ret t.2
+ t.2 = 3
+ t.3 = t.2
+ [this+8] = t.3
+ t.4 = 22
+ t.5 = t.4
+ t.6 = t.5
+ ret t.6
func A_bar(this t.0 t.1 t.2 )
t.3 = 6
- ret t.3
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex34.vapor b/output/ex34.vapor
index 1b1cdc8..a4baf4f 100644
--- a/output/ex34.vapor
+++ b/output/ex34.vapor
@@ -1,25 +1,36 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.5 = 1
- PrintIntS(t.5)
- t.3 = t.3
- t.7 = [t.3+0]
- t.8 = [t.7+0]
- t.9 = 2
- t.6 = call t.8(t.3 t.9)
- t.10 = t.6
- PrintIntS(t.10)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.7 = 1
+ t.8 = t.7
+ t.9 = t.8
+ PrintIntS(t.9)
+ t.11 = t.3
+ t.3 = t.11
+ t.12 = [t.3+0]
+ t.13 = [t.12+0]
+ t.14 = 2
+ t.15 = t.14
+ t.10 = call t.13(t.3 t.15)
+ t.16 = t.10
+ t.17 = t.16
+ PrintIntS(t.17)
ret
const functable_A
:A_foo
func A_foo(this t.0 )
- [this+4] = 42
- t.1 = [this+4]
- ret t.1
+ t.1 = 42
+ t.2 = t.1
+ [this+4] = t.2
+ t.3 = [this+4]
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex35.vapor b/output/ex35.vapor
index 47ee28a..c5ac984 100644
--- a/output/ex35.vapor
+++ b/output/ex35.vapor
@@ -2,12 +2,15 @@ func Main()
t.3 = HeapAllocZ(4)
[t.3+0] = :functable_Fac
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.7 = 10
- t.2 = call t.6(t.4 t.7)
- t.8 = t.2
- PrintIntS(t.8)
+ t.7 = [t.6+0]
+ t.8 = 10
+ t.9 = t.8
+ t.2 = call t.7(t.5 t.9)
+ t.10 = t.2
+ t.11 = t.10
+ PrintIntS(t.11)
ret
const functable_Fac
@@ -15,7 +18,9 @@ const functable_Fac
func Fac_ComputeFac(this t.0 )
t.1 = 4
- ret t.1
+ t.2 = t.1
+ t.3 = t.2
+ ret t.3
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex36.vapor b/output/ex36.vapor
index ef01f49..5886722 100644
--- a/output/ex36.vapor
+++ b/output/ex36.vapor
@@ -1,23 +1,32 @@
func Main()
t.4 = HeapAllocZ(4)
[t.4+0] = :functable_Fac
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.8 = 10
- t.5 = call t.7(t.3 t.8)
- t.9 = t.5
- PrintIntS(t.9)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.11 = 10
+ t.12 = t.11
+ t.7 = call t.10(t.3 t.12)
+ t.13 = t.7
+ t.14 = t.13
+ PrintIntS(t.14)
ret
const functable_Fac
:Fac_ComputeFac
func Fac_ComputeFac(this t.0 )
- t.1 = 4
- t.2 = t.1
- ret t.2
+ t.2 = 4
+ t.3 = t.2
+ t.1 = t.3
+ t.4 = t.1
+ t.5 = t.4
+ t.6 = t.5
+ ret t.6
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex37.vapor b/output/ex37.vapor
index 616bf27..4a73c41 100644
--- a/output/ex37.vapor
+++ b/output/ex37.vapor
@@ -1,35 +1,45 @@
func Main()
t.4 = HeapAllocZ(4)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
:A_foo
func A_foo(this )
- t.0 = 0
-while5_test:
- t.2 = t.0
- t.3 = 10
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :while5_end
-while5_body:
- t.6 = t.0
- t.7 = 1
- t.5 = Add(t.6 t.7)
- t.0 = t.5
- goto :while5_test
-while5_end:
- t.8 = t.0
- ret t.8
+ t.1 = 0
+ t.2 = t.1
+ t.0 = t.2
+while11_test:
+ t.4 = t.0
+ t.5 = 10
+ t.3 = LtS(t.4 t.5)
+ t.6 = t.3
+ t.7 = t.6
+ if0 t.7 goto :while11_end
+while11_body:
+ t.9 = t.0
+ t.10 = 1
+ t.8 = Add(t.9 t.10)
+ t.11 = t.8
+ t.0 = t.11
+ goto :while11_test
+while11_end:
+ t.12 = t.0
+ t.13 = t.12
+ t.14 = t.13
+ ret t.14
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex38.vapor b/output/ex38.vapor
index 616bf27..4a73c41 100644
--- a/output/ex38.vapor
+++ b/output/ex38.vapor
@@ -1,35 +1,45 @@
func Main()
t.4 = HeapAllocZ(4)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
:A_foo
func A_foo(this )
- t.0 = 0
-while5_test:
- t.2 = t.0
- t.3 = 10
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :while5_end
-while5_body:
- t.6 = t.0
- t.7 = 1
- t.5 = Add(t.6 t.7)
- t.0 = t.5
- goto :while5_test
-while5_end:
- t.8 = t.0
- ret t.8
+ t.1 = 0
+ t.2 = t.1
+ t.0 = t.2
+while11_test:
+ t.4 = t.0
+ t.5 = 10
+ t.3 = LtS(t.4 t.5)
+ t.6 = t.3
+ t.7 = t.6
+ if0 t.7 goto :while11_end
+while11_body:
+ t.9 = t.0
+ t.10 = 1
+ t.8 = Add(t.9 t.10)
+ t.11 = t.8
+ t.0 = t.11
+ goto :while11_test
+while11_end:
+ t.12 = t.0
+ t.13 = t.12
+ t.14 = t.13
+ ret t.14
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex39.vapor b/output/ex39.vapor
index 3ee23ea..6f2dec2 100644
--- a/output/ex39.vapor
+++ b/output/ex39.vapor
@@ -1,21 +1,30 @@
func Main()
- t.2 = 0
- t.5 = 2
- t.6 = t.2
- t.4 = MulS(t.5 t.6)
- t.3 = t.4
- t.8 = t.3
- t.9 = t.2
- t.7 = Add(t.8 t.9)
- t.3 = t.7
- t.11 = t.3
- t.12 = 1
- t.10 = Sub(t.11 t.12)
- t.3 = t.10
- t.13 = t.2
- PrintIntS(t.13)
- t.14 = t.3
- PrintIntS(t.14)
+ t.3 = 0
+ t.4 = t.3
+ t.2 = t.4
+ t.7 = 2
+ t.8 = t.2
+ t.6 = MulS(t.7 t.8)
+ t.9 = t.6
+ t.5 = t.9
+ t.11 = t.5
+ t.12 = t.2
+ t.10 = Add(t.11 t.12)
+ t.13 = t.10
+ t.5 = t.13
+ t.15 = t.5
+ t.16 = 1
+ t.14 = Sub(t.15 t.16)
+ t.17 = t.14
+ t.5 = t.17
+ t.18 = t.2
+ t.19 = t.18
+ t.20 = t.19
+ PrintIntS(t.20)
+ t.21 = t.5
+ t.22 = t.21
+ t.23 = t.22
+ PrintIntS(t.23)
ret
func AllocArray(size)
diff --git a/output/ex40.vapor b/output/ex40.vapor
index 4aa976f..20ebe32 100644
--- a/output/ex40.vapor
+++ b/output/ex40.vapor
@@ -1,27 +1,37 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.8 = 12
- t.5 = call t.7(t.3 t.8)
- t.9 = t.5
- PrintIntS(t.9)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.11 = 12
+ t.12 = t.11
+ t.7 = call t.10(t.3 t.12)
+ t.13 = t.7
+ t.14 = t.13
+ PrintIntS(t.14)
ret
const functable_A
:A_add_two
func A_add_two(this t.0 )
- [this+4] = 2
- t.2 = t.0
- t.3 = [this+4]
- t.1 = Add(t.2 t.3)
- t.0 = t.1
+ t.1 = 2
+ t.2 = t.1
+ [this+4] = t.2
t.4 = t.0
- ret t.4
+ t.5 = [this+4]
+ t.3 = Add(t.4 t.5)
+ t.6 = t.3
+ t.0 = t.6
+ t.7 = t.0
+ t.8 = t.7
+ t.9 = t.8
+ ret t.9
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex41.vapor b/output/ex41.vapor
index e1ce5bd..4d2fce9 100644
--- a/output/ex41.vapor
+++ b/output/ex41.vapor
@@ -1,49 +1,63 @@
func Main()
t.4 = HeapAllocZ(4)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
:A_foo
func A_foo(this )
- t.0 = 0
t.1 = 0
-while5_test:
- t.3 = t.0
- t.4 = 10
- t.2 = LtS(t.3 t.4)
- t.5 = t.2
- if0 t.5 goto :while5_end
-while5_body:
-while10_test:
- t.7 = t.1
- t.8 = 100
+ t.2 = t.1
+ t.0 = t.2
+ t.4 = 0
+ t.5 = t.4
+ t.3 = t.5
+while13_test:
+ t.7 = t.0
+ t.8 = 10
t.6 = LtS(t.7 t.8)
t.9 = t.6
- if0 t.9 goto :while10_end
-while10_body:
- t.11 = t.1
- t.12 = 1
- t.10 = Add(t.11 t.12)
- t.1 = t.10
- goto :while10_test
-while10_end:
- t.14 = t.0
- t.15 = 1
- t.13 = Add(t.14 t.15)
- t.0 = t.13
- goto :while5_test
-while5_end:
- t.16 = t.1
- ret t.16
+ t.10 = t.9
+ if0 t.10 goto :while13_end
+while13_body:
+while19_test:
+ t.12 = t.3
+ t.13 = 100
+ t.11 = LtS(t.12 t.13)
+ t.14 = t.11
+ t.15 = t.14
+ if0 t.15 goto :while19_end
+while19_body:
+ t.17 = t.3
+ t.18 = 1
+ t.16 = Add(t.17 t.18)
+ t.19 = t.16
+ t.3 = t.19
+ goto :while19_test
+while19_end:
+ t.21 = t.0
+ t.22 = 1
+ t.20 = Add(t.21 t.22)
+ t.23 = t.20
+ t.0 = t.23
+ goto :while13_test
+while13_end:
+ t.24 = t.3
+ t.25 = t.24
+ t.26 = t.25
+ ret t.26
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex43.vapor b/output/ex43.vapor
index 08eb00d..4c06826 100644
--- a/output/ex43.vapor
+++ b/output/ex43.vapor
@@ -1,35 +1,48 @@
func Main()
t.4 = HeapAllocZ(4)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
:A_foo
func A_foo(this )
- t.0 = 1
- t.2 = 5
- t.3 = t.0
- t.1 = LtS(t.2 t.3)
- t.4 = t.1
- if0 t.4 goto :if5_else
-if5_body:
- t.5 = 1
- PrintIntS(t.5)
- goto :if5_end
-if5_else:
- t.6 = 0
- PrintIntS(t.6)
-if5_end:
- t.7 = t.0
- ret t.7
+ t.1 = 1
+ t.2 = t.1
+ t.0 = t.2
+ t.4 = 5
+ t.5 = t.0
+ t.3 = LtS(t.4 t.5)
+ t.6 = t.3
+ t.7 = t.6
+ if0 t.7 goto :if11_else
+if11_body:
+ t.8 = 1
+ t.9 = t.8
+ t.10 = t.9
+ PrintIntS(t.10)
+ goto :if11_end
+if11_else:
+ t.11 = 0
+ t.12 = t.11
+ t.13 = t.12
+ PrintIntS(t.13)
+if11_end:
+ t.14 = t.0
+ t.15 = t.14
+ t.16 = t.15
+ ret t.16
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex44.vapor b/output/ex44.vapor
index 6ad8e68..b921ff3 100644
--- a/output/ex44.vapor
+++ b/output/ex44.vapor
@@ -2,11 +2,13 @@ func Main()
t.3 = HeapAllocZ(8)
[t.3+0] = :functable_Operator
t.4 = t.3
- t.5 = [t.4+0]
+ t.5 = t.4
t.6 = [t.5+0]
- t.2 = call t.6(t.4 )
- t.7 = t.2
- PrintIntS(t.7)
+ t.7 = [t.6+0]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
ret
const functable_Operator
@@ -18,9 +20,12 @@ func Operator_compute(this )
t.3 = Eq(1 t.1)
t.4 = Eq(1 t.2)
t.0 = Eq(t.3 t.4)
- [this+4] = t.0
- t.5 = 0
- ret t.5
+ t.5 = t.0
+ [this+4] = t.5
+ t.6 = 0
+ t.7 = t.6
+ t.8 = t.7
+ ret t.8
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex45.vapor b/output/ex45.vapor
index 7adf817..53d5ab4 100644
--- a/output/ex45.vapor
+++ b/output/ex45.vapor
@@ -1,26 +1,38 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.7 = [t.3+0]
- t.8 = [t.7+0]
- t.6 = call t.8(t.3 )
- t.5 = t.6
- t.9 = t.5
- PrintIntS(t.9)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.9 = t.3
+ t.3 = t.9
+ t.10 = [t.3+0]
+ t.11 = [t.10+0]
+ t.8 = call t.11(t.3)
+ t.12 = t.8
+ t.7 = t.12
+ t.13 = t.7
+ t.14 = t.13
+ t.15 = t.14
+ PrintIntS(t.15)
ret
const functable_A
:A_run
func A_run(this )
- t.0 = call :AllocArray(10)
- [this+4] = t.0
- t.2 = [this+4]
- t.1 = [t.2+0]
- t.3 = t.1
- ret t.3
+ t.0 = 10
+ t.1 = t.0
+ t.2 = call :AllocArray(t.1)
+ t.3 = t.2
+ t.4 = t.3
+ [this+4] = t.4
+ t.7 = [this+4]
+ t.6 = t.7
+ t.5 = [t.6+0]
+ t.8 = t.5
+ t.9 = t.8
+ ret t.9
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex46.vapor b/output/ex46.vapor
index 282da13..3b141bc 100644
--- a/output/ex46.vapor
+++ b/output/ex46.vapor
@@ -1,28 +1,40 @@
func Main()
t.4 = HeapAllocZ(16)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
- t.3 = t.3
- t.10 = [t.3+0]
- t.11 = [t.10+0]
- t.9 = call t.11(t.3 )
- t.12 = t.9
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
PrintIntS(t.12)
- t.3 = t.3
+ t.14 = t.3
+ t.3 = t.14
t.15 = [t.3+0]
- t.16 = [t.15+4]
- t.17 = 10
- t.18 = 20
- t.14 = call t.16(t.3 t.17 t.18)
- t.13 = t.14
- t.19 = t.13
- PrintIntS(t.19)
+ t.16 = [t.15+0]
+ t.13 = call t.16(t.3)
+ t.17 = t.13
+ t.18 = t.17
+ PrintIntS(t.18)
+ t.21 = t.3
+ t.3 = t.21
+ t.22 = [t.3+0]
+ t.23 = [t.22+4]
+ t.24 = 10
+ t.25 = t.24
+ t.26 = 20
+ t.27 = t.26
+ t.20 = call t.23(t.3 t.25 t.27)
+ t.28 = t.20
+ t.19 = t.28
+ t.29 = t.19
+ t.30 = t.29
+ t.31 = t.30
+ PrintIntS(t.31)
ret
const functable_A
@@ -30,27 +42,40 @@ const functable_A
:A_bar
func A_foo(this )
- [this+12] = 0
- t.1 = 1
- t.2 = 2
- t.0 = Add(t.1 t.2)
- [this+8] = t.0
- t.4 = [this+8]
- t.5 = [this+12]
- t.3 = Add(t.4 t.5)
- [this+12] = t.3
- t.6 = [this+12]
- ret t.6
+ t.0 = 0
+ t.1 = t.0
+ [this+12] = t.1
+ t.3 = 1
+ t.4 = 2
+ t.2 = Add(t.3 t.4)
+ t.5 = t.2
+ [this+8] = t.5
+ t.7 = [this+8]
+ t.8 = [this+12]
+ t.6 = Add(t.7 t.8)
+ t.9 = t.6
+ [this+12] = t.9
+ t.10 = [this+12]
+ t.11 = t.10
+ t.12 = t.11
+ ret t.12
func A_bar(this t.0 t.1 )
- [this+8] = t.0
- [this+12] = t.1
- t.4 = [this+8]
- t.5 = [this+12]
- t.3 = MulS(t.4 t.5)
- t.2 = t.3
- t.6 = t.2
- ret t.6
+ t.2 = t.0
+ t.3 = t.2
+ [this+8] = t.3
+ t.4 = t.1
+ t.5 = t.4
+ [this+12] = t.5
+ t.8 = [this+8]
+ t.9 = [this+12]
+ t.7 = MulS(t.8 t.9)
+ t.10 = t.7
+ t.6 = t.10
+ t.11 = t.6
+ t.12 = t.11
+ t.13 = t.12
+ ret t.13
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex47.vapor b/output/ex47.vapor
index e035a56..ebe2f0a 100644
--- a/output/ex47.vapor
+++ b/output/ex47.vapor
@@ -1,20 +1,27 @@
func Main()
t.4 = HeapAllocZ(12)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.8 = 42
- t.5 = call t.7(t.3 t.8)
- t.9 = t.5
- PrintIntS(t.9)
- t.3 = t.3
- t.11 = [t.3+0]
- t.12 = [t.11+4]
- t.10 = call t.12(t.3 )
- t.13 = t.10
- PrintIntS(t.13)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.11 = 42
+ t.12 = t.11
+ t.7 = call t.10(t.3 t.12)
+ t.13 = t.7
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.16 = t.3
+ t.3 = t.16
+ t.17 = [t.3+0]
+ t.18 = [t.17+4]
+ t.15 = call t.18(t.3)
+ t.19 = t.15
+ t.20 = t.19
+ PrintIntS(t.20)
ret
const functable_A
@@ -22,27 +29,40 @@ const functable_A
:A_get
func A_set(this t.0 )
- t.1 = call :AllocArray(12)
- [this+8] = t.1
+ t.1 = 12
+ t.2 = t.1
+ t.3 = call :AllocArray(t.2)
+ t.4 = t.3
+ t.5 = t.4
+ [this+8] = t.5
+ t.6 = [this+8]
+ t.8 = 5
+ t.9 = t.8
+ t.7 = MulS(t.9 4)
+ t.7 = Add(t.7 4)
+ t.7 = Add(t.6 t.7)
+ t.10 = t.0
+ t.11 = t.10
+ [t.7] = t.11
+ t.14 = [this+8]
+ t.13 = t.14
+ t.12 = [t.13+0]
+ t.15 = t.12
+ t.16 = t.15
+ ret t.16
+
+func A_get(this )
t.2 = [this+8]
- t.3 = MulS(5 4)
+ t.1 = t.2
+ t.4 = 5
+ t.3 = MulS(t.4 4)
t.3 = Add(t.3 4)
- t.3 = Add(t.2 t.3)
- [t.3] = t.0
- t.5 = [this+8]
- t.4 = [t.5+0]
- t.6 = t.4
+ t.3 = Add(t.1 t.3)
+ t.0 = [t.3]
+ t.5 = t.0
+ t.6 = t.5
ret t.6
-func A_get(this )
- t.1 = [this+8]
- t.2 = MulS(5 4)
- t.2 = Add(t.2 4)
- t.2 = Add(t.1 t.2)
- t.0 = [t.2]
- t.3 = t.0
- ret t.3
-
func AllocArray(size)
bytes = MulS(size 4)
bytes = Add(bytes 4)
diff --git a/output/ex48.vapor b/output/ex48.vapor
index 3a30098..7269ba4 100644
--- a/output/ex48.vapor
+++ b/output/ex48.vapor
@@ -1,20 +1,27 @@
func Main()
t.4 = HeapAllocZ(12)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.8 = 42
- t.5 = call t.7(t.3 t.8)
- t.9 = t.5
- PrintIntS(t.9)
- t.3 = t.3
- t.11 = [t.3+0]
- t.12 = [t.11+4]
- t.10 = call t.12(t.3 )
- t.13 = t.10
- PrintIntS(t.13)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.11 = 42
+ t.12 = t.11
+ t.7 = call t.10(t.3 t.12)
+ t.13 = t.7
+ t.14 = t.13
+ PrintIntS(t.14)
+ t.16 = t.3
+ t.3 = t.16
+ t.17 = [t.3+0]
+ t.18 = [t.17+4]
+ t.15 = call t.18(t.3)
+ t.19 = t.15
+ t.20 = t.19
+ PrintIntS(t.20)
ret
const functable_A
@@ -22,13 +29,19 @@ const functable_A
:A_get
func A_set(this t.0 )
- [this+8] = t.0
- t.1 = [this+8]
- ret t.1
+ t.1 = t.0
+ t.2 = t.1
+ [this+8] = t.2
+ t.3 = [this+8]
+ t.4 = t.3
+ t.5 = t.4
+ ret t.5
func A_get(this )
t.0 = [this+8]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex49.vapor b/output/ex49.vapor
index ad216d4..57e0093 100644
--- a/output/ex49.vapor
+++ b/output/ex49.vapor
@@ -1,31 +1,43 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
:A_set
func A_set(this )
- [this+4] = 3
- t.0 = 1
- ret t.0
+ t.0 = 3
+ t.1 = t.0
+ [this+4] = t.1
+ t.2 = 1
+ t.3 = t.2
+ t.4 = t.3
+ ret t.4
const functable_B
:B_get
:A_set
func B_get(this )
- [this+8] = 12
- t.0 = [this+8]
- ret t.0
+ t.0 = 12
+ t.1 = t.0
+ [this+8] = t.1
+ t.2 = [this+8]
+ t.3 = t.2
+ t.4 = t.3
+ ret t.4
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex50.vapor b/output/ex50.vapor
index 8c2f4ef..434dc66 100644
--- a/output/ex50.vapor
+++ b/output/ex50.vapor
@@ -1,13 +1,17 @@
func Main()
t.4 = HeapAllocZ(8)
[t.4+0] = :functable_A
- t.3 = t.4
- t.3 = t.3
- t.6 = [t.3+0]
- t.7 = [t.6+0]
- t.5 = call t.7(t.3 )
- t.8 = t.5
- PrintIntS(t.8)
+ t.5 = t.4
+ t.6 = t.5
+ t.3 = t.6
+ t.8 = t.3
+ t.3 = t.8
+ t.9 = [t.3+0]
+ t.10 = [t.9+0]
+ t.7 = call t.10(t.3)
+ t.11 = t.7
+ t.12 = t.11
+ PrintIntS(t.12)
ret
const functable_A
@@ -16,19 +20,27 @@ const functable_A
func A_set_get(this )
t.0 = HeapAllocZ(12)
[t.0+0] = :functable_B
- [this+4] = t.0
- t.3 = [this+4]
- t.4 = [t.3+0]
- t.5 = [t.4+4]
- t.2 = call t.5(t.3 )
- t.1 = t.2
- t.3 = [this+4]
- t.7 = [t.3+0]
- t.8 = [t.7+0]
- t.6 = call t.8(t.3 )
- t.1 = t.6
- t.9 = t.1
- ret t.9
+ t.1 = t.0
+ t.2 = t.1
+ [this+4] = t.2
+ t.5 = [this+4]
+ t.6 = t.5
+ t.7 = [t.6+0]
+ t.8 = [t.7+4]
+ t.4 = call t.8(t.6)
+ t.9 = t.4
+ t.3 = t.9
+ t.11 = [this+4]
+ t.6 = t.11
+ t.12 = [t.6+0]
+ t.13 = [t.12+0]
+ t.10 = call t.13(t.6)
+ t.14 = t.10
+ t.3 = t.14
+ t.15 = t.3
+ t.16 = t.15
+ t.17 = t.16
+ ret t.17
const functable_B
:B_get
@@ -36,12 +48,18 @@ const functable_B
func B_get(this )
t.0 = [this+8]
- ret t.0
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
func B_set(this )
- [this+8] = 12
- t.0 = 1
- ret t.0
+ t.0 = 12
+ t.1 = t.0
+ [this+8] = t.1
+ t.2 = 1
+ t.3 = t.2
+ t.4 = t.3
+ ret t.4
func AllocArray(size)
bytes = MulS(size 4)
diff --git a/output/ex51.java b/output/ex51.java
new file mode 100644
index 0000000..96a5d5a
--- /dev/null
+++ b/output/ex51.java
@@ -0,0 +1,31 @@
+class ex51{
+ public static void main(String[] a){
+ System.out.println(new Test().start());
+ }
+}
+
+class Test {
+
+ Test test;
+ int[] i;
+
+ public int setval(int pos, int val) { i[pos] = val; return 0; }
+ public int getval(int pos) { int val; val = i[pos]; return val; }
+
+ public int start(){
+ Test foo;
+ int val;
+ foo = this;
+ i = new int[10];
+
+ test = (new Test()).next();
+ val = foo.setval(2, 42);
+ test = this;
+ val = test.getval(2);
+ return val;
+ }
+
+ public Test next() {
+ return test;
+ }
+}
diff --git a/output/ex51.vapor b/output/ex51.vapor
new file mode 100644
index 0000000..6046fae
--- /dev/null
+++ b/output/ex51.vapor
@@ -0,0 +1,111 @@
+func Main()
+ t.3 = HeapAllocZ(24)
+ [t.3+0] = :functable_Test
+ t.4 = t.3
+ t.5 = t.4
+ t.6 = [t.5+0]
+ t.7 = [t.6+8]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
+ ret
+
+const functable_Test
+ :Test_setval
+ :Test_getval
+ :Test_start
+ :Test_next
+
+func Test_setval(this t.0 t.1 )
+ t.2 = [this+20]
+ t.4 = t.0
+ t.5 = t.4
+ t.3 = MulS(t.5 4)
+ t.3 = Add(t.3 4)
+ t.3 = Add(t.2 t.3)
+ t.6 = t.1
+ t.7 = t.6
+ [t.3] = t.7
+ t.8 = 0
+ t.9 = t.8
+ t.10 = t.9
+ ret t.10
+
+func Test_getval(this t.0 )
+ t.4 = [this+20]
+ t.3 = t.4
+ t.6 = t.0
+ t.5 = MulS(t.6 4)
+ t.5 = Add(t.5 4)
+ t.5 = Add(t.3 t.5)
+ t.2 = [t.5]
+ t.7 = t.2
+ t.1 = t.7
+ t.8 = t.1
+ t.9 = t.8
+ t.10 = t.9
+ ret t.10
+
+func Test_start(this )
+ t.2 = this
+ t.3 = t.2
+ t.1 = t.3
+ t.4 = 10
+ t.5 = t.4
+ t.6 = call :AllocArray(t.5)
+ t.7 = t.6
+ t.8 = t.7
+ [this+20] = t.8
+ t.10 = HeapAllocZ(24)
+ [t.10+0] = :functable_Test
+ t.11 = t.10
+ t.12 = t.11
+ t.13 = t.12
+ t.14 = t.13
+ t.15 = [t.14+0]
+ t.16 = [t.15+12]
+ t.9 = call t.16(t.14)
+ t.17 = t.9
+ [this+16] = t.17
+ t.20 = t.1
+ t.1 = t.20
+ t.21 = [t.1+0]
+ t.22 = [t.21+0]
+ t.23 = 2
+ t.24 = t.23
+ t.25 = 42
+ t.26 = t.25
+ t.19 = call t.22(t.1 t.24 t.26)
+ t.27 = t.19
+ t.18 = t.27
+ t.28 = this
+ t.29 = t.28
+ [this+16] = t.29
+ t.31 = [this+16]
+ t.32 = t.31
+ t.33 = [t.32+0]
+ t.34 = [t.33+4]
+ t.35 = 2
+ t.36 = t.35
+ t.30 = call t.34(t.32 t.36)
+ t.37 = t.30
+ t.18 = t.37
+ t.38 = t.18
+ t.39 = t.38
+ t.40 = t.39
+ ret t.40
+
+func Test_next(this )
+ t.0 = [this+16]
+ t.1 = t.0
+ t.2 = t.1
+ ret t.2
+
+func AllocArray(size)
+ bytes = MulS(size 4)
+ bytes = Add(bytes 4)
+ v = HeapAllocZ(bytes)
+ [v] = size
+ ret v
+
diff --git a/output/ex52.java b/output/ex52.java
new file mode 100644
index 0000000..6febcd5
--- /dev/null
+++ b/output/ex52.java
@@ -0,0 +1,28 @@
+class ex52{
+ public static void main(String[] a){
+ System.out.println(new Test().start());
+ }
+}
+
+class Test {
+
+ Test test;
+ boolean b;
+
+ public int start(){
+ int val;
+ test = new Test();
+ b = true;
+ b = test.next();
+ if (!b)
+ val = 1;
+ else
+ val = 3;
+ return val;
+ }
+
+ public boolean next(){
+ return ((true && (7<8)) && b);
+ }
+
+}
diff --git a/output/ex52.vapor b/output/ex52.vapor
new file mode 100644
index 0000000..20de523
--- /dev/null
+++ b/output/ex52.vapor
@@ -0,0 +1,84 @@
+func Main()
+ t.3 = HeapAllocZ(16)
+ [t.3+0] = :functable_Test
+ t.4 = t.3
+ t.5 = t.4
+ t.6 = [t.5+0]
+ t.7 = [t.6+0]
+ t.2 = call t.7(t.5)
+ t.8 = t.2
+ t.9 = t.8
+ PrintIntS(t.9)
+ ret
+
+const functable_Test
+ :Test_start
+ :Test_next
+
+func Test_start(this )
+ t.0 = HeapAllocZ(16)
+ [t.0+0] = :functable_Test
+ t.1 = t.0
+ t.2 = t.1
+ [this+8] = t.2
+ t.3 = 1
+ t.4 = t.3
+ [this+12] = t.4
+ t.6 = [this+8]
+ t.7 = t.6
+ t.8 = [t.7+0]
+ t.9 = [t.8+4]
+ t.5 = call t.9(t.7)
+ t.10 = t.5
+ [this+12] = t.10
+ t.12 = [this+12]
+ t.13 = t.12
+ t.11 = Eq(t.13 0)
+ t.14 = t.11
+ t.15 = t.14
+ t.16 = t.15
+ if0 t.16 goto :if17_else
+if17_body:
+ t.18 = 1
+ t.19 = t.18
+ t.17 = t.19
+ goto :if17_end
+if17_else:
+ t.20 = 3
+ t.21 = t.20
+ t.17 = t.21
+if17_end:
+ t.22 = t.17
+ t.23 = t.22
+ t.24 = t.23
+ ret t.24
+
+func Test_next(this )
+ t.2 = 1
+ t.4 = 7
+ t.5 = 8
+ t.3 = LtS(t.4 t.5)
+ t.6 = t.3
+ t.7 = t.6
+ t.8 = Eq(1 t.2)
+ t.9 = Eq(1 t.7)
+ t.1 = Eq(t.8 t.9)
+ t.10 = t.1
+ t.11 = t.10
+ t.12 = [this+12]
+ t.13 = Eq(1 t.11)
+ t.14 = Eq(1 t.12)
+ t.0 = Eq(t.13 t.14)
+ t.15 = t.0
+ t.16 = t.15
+ t.17 = t.16
+ t.18 = t.17
+ ret t.18
+
+func AllocArray(size)
+ bytes = MulS(size 4)
+ bytes = Add(bytes 4)
+ v = HeapAllocZ(bytes)
+ [v] = size
+ ret v
+