summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--VM2M.java11
-rw-r--r--base/BinaryTree.opt.s1064
-rw-r--r--base/BinaryTree.s1272
-rw-r--r--base/BubbleSort.opt.s437
-rw-r--r--base/BubbleSort.s453
-rw-r--r--base/Factorial.opt.s64
-rw-r--r--base/Factorial.s90
-rw-r--r--base/LinearSearch.opt.s254
-rw-r--r--base/LinearSearch.s276
-rw-r--r--base/LinkedList.opt.s791
-rw-r--r--base/LinkedList.s944
-rw-r--r--base/MoreThan4.opt.s113
-rw-r--r--base/MoreThan4.s140
-rw-r--r--base/QuickSort.opt.s566
-rw-r--r--base/QuickSort.s590
-rw-r--r--base/TreeVisitor.opt.s1258
-rw-r--r--base/TreeVisitor.s1493
-rw-r--r--condense/CondenseVisitor.java30
-rw-r--r--output/BinaryTree.s3806
-rw-r--r--output/BinaryTree.vaporm2682
-rw-r--r--output/BubbleSort.s1102
-rw-r--r--output/BubbleSort.vaporm897
-rw-r--r--output/Factorial.s199
-rw-r--r--output/Factorial.vaporm47
-rw-r--r--output/LinearSearch.s931
-rw-r--r--output/LinearSearch.vaporm722
-rw-r--r--output/LinkedList.s2617
-rw-r--r--output/LinkedList.vaporm1887
-rw-r--r--output/MoreThan4.s306
-rw-r--r--output/MoreThan4.vaporm108
-rw-r--r--output/QuickSort.s1420
-rw-r--r--output/QuickSort.vaporm1159
-rw-r--r--output/TreeVisitor.s4253
-rw-r--r--output/TreeVisitor.vaporm2942
-rw-r--r--output/ex29.s87
-rw-r--r--output/ex29.vaporm45
-rw-r--r--output/ex30.s119
-rw-r--r--output/ex30.vaporm67
-rw-r--r--output/ex31.s158
-rw-r--r--output/ex31.vaporm96
-rw-r--r--output/ex32.s162
-rw-r--r--output/ex32.vaporm106
-rw-r--r--output/ex33.s239
-rw-r--r--output/ex33.vaporm44
-rw-r--r--output/ex34.s162
-rw-r--r--output/ex34.vaporm27
-rw-r--r--output/ex35.s151
-rw-r--r--output/ex35.vaporm21
-rw-r--r--output/ex36.s157
-rw-r--r--output/ex36.vaporm25
-rw-r--r--output/ex37.s172
-rw-r--r--output/ex37.vaporm42
-rw-r--r--output/ex38.s172
-rw-r--r--output/ex38.vaporm42
-rw-r--r--output/ex39.s121
-rw-r--r--output/ex39.vaporm27
-rw-r--r--output/ex40.s164
-rw-r--r--output/ex40.vaporm30
-rw-r--r--output/ex41.s228
-rw-r--r--output/ex41.vaporm98
-rw-r--r--output/ex42.s164
-rw-r--r--output/ex43.s175
-rw-r--r--output/ex43.vaporm39
-rw-r--r--output/ex44.s160
-rw-r--r--output/ex44.vaporm23
-rw-r--r--output/ex45.s175
-rw-r--r--output/ex45.vaporm20
-rw-r--r--output/ex46.s268
-rw-r--r--output/ex46.vaporm79
-rw-r--r--output/ex47.s257
-rw-r--r--output/ex47.vaporm58
-rw-r--r--output/ex48.s211
-rw-r--r--output/ex48.vaporm33
-rw-r--r--output/ex49.s189
-rw-r--r--output/ex49.vaporm32
-rw-r--r--output/ex50.s266
-rw-r--r--output/ex50.vaporm54
-rw-r--r--output/ex51.s378
-rw-r--r--output/ex51.vaporm286
-rw-r--r--output/ex52.s259
-rw-r--r--output/ex52.vaporm177
-rw-r--r--output/ex53.s157
-rw-r--r--output/ex53.vaporm101
-rw-r--r--output/ex99.s71
-rw-r--r--output/ex99.vaporm26
-rw-r--r--output/test.s37
86 files changed, 37792 insertions, 3589 deletions
diff --git a/VM2M.java b/VM2M.java
index d38e5c5..3a1d15b 100644
--- a/VM2M.java
+++ b/VM2M.java
@@ -27,16 +27,7 @@ public class VM2M {
VaporProgram prog = parseVapor(is2, System.out);
- MinimalLogger.info("Removing extraneous lines from the program representation...");
- for (String line : new ArrayList<String>(strProg)) {
- // delete all lines not a function table!
- if (!line.trim().startsWith("const") && !line.trim().startsWith(":"))
- strProg.remove(line);
- }
- MinimalLogger.info(String.format("New program: %s",
- strProg.toString()));
-
- CondenseVisitor cv = new CondenseVisitor(prog, strProg);
+ CondenseVisitor cv = new CondenseVisitor(prog);
System.out.println(String.join("\n", cv.getMIPS()));
diff --git a/base/BinaryTree.opt.s b/base/BinaryTree.opt.s
new file mode 100644
index 0000000..3cea30c
--- /dev/null
+++ b/base/BinaryTree.opt.s
@@ -0,0 +1,1064 @@
+.data
+
+empty_BT:
+
+empty_Tree:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ la $a0 empty_BT
+ jal BT.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BT.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ li $a0 24
+ jal _heapAlloc
+ move $s0 $v0
+ bnez $s0 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $s0
+ li $a1 16
+ jal Tree.Init
+ bnez $s0 null2
+ la $a0 _str0
+ j _error
+null2:
+ move $a0 $s0
+ jal Tree.Print
+ li $a0 100000000
+ jal _print
+ bnez $s0 null3
+ la $a0 _str0
+ j _error
+null3:
+ move $a0 $s0
+ li $a1 8
+ jal Tree.Insert
+ bnez $s0 null4
+ la $a0 _str0
+ j _error
+null4:
+ move $a0 $s0
+ jal Tree.Print
+ bnez $s0 null5
+ la $a0 _str0
+ j _error
+null5:
+ move $a0 $s0
+ li $a1 24
+ jal Tree.Insert
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ move $a0 $s0
+ li $a1 4
+ jal Tree.Insert
+ bnez $s0 null7
+ la $a0 _str0
+ j _error
+null7:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Insert
+ bnez $s0 null8
+ la $a0 _str0
+ j _error
+null8:
+ move $a0 $s0
+ li $a1 20
+ jal Tree.Insert
+ bnez $s0 null9
+ la $a0 _str0
+ j _error
+null9:
+ move $a0 $s0
+ li $a1 28
+ jal Tree.Insert
+ bnez $s0 null10
+ la $a0 _str0
+ j _error
+null10:
+ move $a0 $s0
+ li $a1 14
+ jal Tree.Insert
+ bnez $s0 null11
+ la $a0 _str0
+ j _error
+null11:
+ move $a0 $s0
+ jal Tree.Print
+ bnez $s0 null12
+ la $a0 _str0
+ j _error
+null12:
+ move $a0 $s0
+ li $a1 24
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null13
+ la $a0 _str0
+ j _error
+null13:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null14
+ la $a0 _str0
+ j _error
+null14:
+ move $a0 $s0
+ li $a1 16
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null15
+ la $a0 _str0
+ j _error
+null15:
+ move $a0 $s0
+ li $a1 50
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null16
+ la $a0 _str0
+ j _error
+null16:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null17
+ la $a0 _str0
+ j _error
+null17:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Delete
+ bnez $s0 null18
+ la $a0 _str0
+ j _error
+null18:
+ move $a0 $s0
+ jal Tree.Print
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+Tree.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ sw $0 12($t0)
+ sw $0 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 0($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 0($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 16($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if1_else
+ li $t1 0
+ j if1_end
+if1_else:
+ slt $t2 $t0 $t2
+ bnez $t2 if2_else
+ li $t1 0
+ j if2_end
+if2_else:
+ li $t1 1
+if2_end:
+if1_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $a0 24
+ jal _heapAlloc
+ move $s2 $v0
+ bnez $s2 null20
+ la $a0 _str0
+ j _error
+null20:
+ move $a0 $s2
+ move $a1 $s1
+ jal Tree.Init
+ move $s0 $s0
+ li $s3 1
+while1_top:
+ beqz $s3 while1_end
+ bnez $s0 null21
+ la $a0 _str0
+ j _error
+null21:
+ move $a0 $s0
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t0 $s1 $t0
+ beqz $t0 if3_else
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ move $a0 $s0
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if4_else
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ move $a0 $s0
+ jal Tree.GetLeft
+ move $s0 $v0
+ j if4_end
+if4_else:
+ li $s3 0
+ bnez $s0 null24
+ la $a0 _str0
+ j _error
+null24:
+ move $a0 $s0
+ li $a1 1
+ jal Tree.SetHas_Left
+ bnez $s0 null25
+ la $a0 _str0
+ j _error
+null25:
+ move $a0 $s0
+ move $a1 $s2
+ jal Tree.SetLeft
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ move $a0 $s0
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if5_else
+ bnez $s0 null27
+ la $a0 _str0
+ j _error
+null27:
+ move $a0 $s0
+ jal Tree.GetRight
+ move $s0 $v0
+ j if5_end
+if5_else:
+ li $s3 0
+ bnez $s0 null28
+ la $a0 _str0
+ j _error
+null28:
+ move $a0 $s0
+ li $a1 1
+ jal Tree.SetHas_Right
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ move $a0 $s0
+ move $a1 $s2
+ jal Tree.SetRight
+if5_end:
+if3_end:
+ j while1_top
+while1_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 36
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ sw $s4 16($sp)
+ sw $s5 20($sp)
+ sw $s6 24($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $s0
+ move $s3 $s0
+ li $s4 1
+ li $s5 0
+ li $s6 1
+while2_top:
+ beqz $s4 while2_end
+ bnez $s2 null30
+ la $a0 _str0
+ j _error
+null30:
+ move $a0 $s2
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t1 $s1 $t0
+ beqz $t1 if6_else
+ bnez $s2 null31
+ la $a0 _str0
+ j _error
+null31:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t1 $v0
+ beqz $t1 if7_else
+ move $s3 $s2
+ bnez $s2 null32
+ la $a0 _str0
+ j _error
+null32:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $s2 $v0
+ j if7_end
+if7_else:
+ li $s4 0
+if7_end:
+ j if6_end
+if6_else:
+ slt $t0 $t0 $s1
+ beqz $t0 if8_else
+ bnez $s2 null33
+ la $a0 _str0
+ j _error
+null33:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if9_else
+ move $s3 $s2
+ bnez $s2 null34
+ la $a0 _str0
+ j _error
+null34:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $s2 $v0
+ j if9_end
+if9_else:
+ li $s4 0
+if9_end:
+ j if8_end
+if8_else:
+ beqz $s6 if10_else
+ bnez $s2 null35
+ la $a0 _str0
+ j _error
+null35:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ bnez $t0 if11_else
+ bnez $s2 null36
+ la $a0 _str0
+ j _error
+null36:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ bnez $t0 if11_else
+ j if11_end
+if11_else:
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jal Tree.Remove
+if11_end:
+ j if10_end
+if10_else:
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jal Tree.Remove
+if10_end:
+ li $s5 1
+ li $s4 0
+if8_end:
+if6_end:
+ li $s6 0
+ j while2_top
+while2_end:
+ move $v0 $s5
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $s4 16($sp)
+ lw $s5 20($sp)
+ lw $s6 24($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 36
+ jr $ra
+
+Tree.Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+ bnez $s2 null37
+ la $a0 _str0
+ j _error
+null37:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if12_else
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jal Tree.RemoveLeft
+ j if12_end
+if12_else:
+ bnez $s2 null38
+ la $a0 _str0
+ j _error
+null38:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if13_else
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jal Tree.RemoveRight
+ j if13_end
+if13_else:
+ bnez $s2 null39
+ la $a0 _str0
+ j _error
+null39:
+ move $a0 $s2
+ jal Tree.GetKey
+ move $s2 $v0
+ bnez $s1 null40
+ la $a0 _str0
+ j _error
+null40:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ bnez $t0 null41
+ la $a0 _str0
+ j _error
+null41:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $s2
+ move $a2 $t0
+ jal Tree.Compare
+ move $t0 $v0
+ beqz $t0 if14_else
+ bnez $s1 null42
+ la $a0 _str0
+ j _error
+null42:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetLeft
+ bnez $s1 null43
+ la $a0 _str0
+ j _error
+null43:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Left
+ j if14_end
+if14_else:
+ bnez $s1 null44
+ la $a0 _str0
+ j _error
+null44:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetRight
+ bnez $s1 null45
+ la $a0 _str0
+ j _error
+null45:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Right
+if14_end:
+if13_end:
+if12_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while3_top:
+ bnez $s2 null46
+ la $a0 _str0
+ j _error
+null46:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 while3_end
+ bnez $s2 null47
+ la $a0 _str0
+ j _error
+null47:
+ bnez $s2 null48
+ la $a0 _str0
+ j _error
+null48:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $t0 $v0
+ bnez $t0 null49
+ la $a0 _str0
+ j _error
+null49:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s2
+ move $a1 $t0
+ jal Tree.SetKey
+ move $s1 $s2
+ bnez $s2 null50
+ la $a0 _str0
+ j _error
+null50:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $s2 $v0
+ j while3_top
+while3_end:
+ bnez $s1 null51
+ la $a0 _str0
+ j _error
+null51:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetRight
+ bnez $s1 null52
+ la $a0 _str0
+ j _error
+null52:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Right
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while4_top:
+ bnez $s2 null53
+ la $a0 _str0
+ j _error
+null53:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 while4_end
+ bnez $s2 null54
+ la $a0 _str0
+ j _error
+null54:
+ bnez $s2 null55
+ la $a0 _str0
+ j _error
+null55:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $t0 $v0
+ bnez $t0 null56
+ la $a0 _str0
+ j _error
+null56:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s2
+ move $a1 $t0
+ jal Tree.SetKey
+ move $s1 $s2
+ bnez $s2 null57
+ la $a0 _str0
+ j _error
+null57:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $s2 $v0
+ j while4_top
+while4_end:
+ bnez $s1 null58
+ la $a0 _str0
+ j _error
+null58:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetLeft
+ bnez $s1 null59
+ la $a0 _str0
+ j _error
+null59:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Left
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 1
+ li $s3 0
+while5_top:
+ beqz $s2 while5_end
+ bnez $s1 null60
+ la $a0 _str0
+ j _error
+null60:
+ move $a0 $s1
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t1 $s0 $t0
+ beqz $t1 if15_else
+ bnez $s1 null61
+ la $a0 _str0
+ j _error
+null61:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t1 $v0
+ beqz $t1 if16_else
+ bnez $s1 null62
+ la $a0 _str0
+ j _error
+null62:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $s1 $v0
+ j if16_end
+if16_else:
+ li $s2 0
+if16_end:
+ j if15_end
+if15_else:
+ slt $t0 $t0 $s0
+ beqz $t0 if17_else
+ bnez $s1 null63
+ la $a0 _str0
+ j _error
+null63:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if18_else
+ bnez $s1 null64
+ la $a0 _str0
+ j _error
+null64:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $s1 $v0
+ j if18_end
+if18_else:
+ li $s2 0
+if18_end:
+ j if17_end
+if17_else:
+ li $s3 1
+ li $s2 0
+if17_end:
+if15_end:
+ j while5_top
+while5_end:
+ move $v0 $s3
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $t0
+ move $a0 $t0
+ move $a1 $t1
+ jal Tree.RecPrint
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null65
+ la $a0 _str0
+ j _error
+null65:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if19_else
+ bnez $s1 null66
+ la $a0 _str0
+ j _error
+null66:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jal Tree.RecPrint
+ j if19_end
+if19_else:
+if19_end:
+ bnez $s1 null67
+ la $a0 _str0
+ j _error
+null67:
+ move $a0 $s1
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s1 null68
+ la $a0 _str0
+ j _error
+null68:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if20_else
+ bnez $s1 null69
+ la $a0 _str0
+ j _error
+null69:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jal Tree.RecPrint
+ j if20_end
+if20_else:
+if20_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/BinaryTree.s b/base/BinaryTree.s
new file mode 100644
index 0000000..bf3f2ba
--- /dev/null
+++ b/base/BinaryTree.s
@@ -0,0 +1,1272 @@
+.data
+
+vmt_BT:
+ BT.Start
+
+vmt_Tree:
+ Tree.Init
+ Tree.SetRight
+ Tree.SetLeft
+ Tree.GetRight
+ Tree.GetLeft
+ Tree.GetKey
+ Tree.SetKey
+ Tree.GetHas_Right
+ Tree.GetHas_Left
+ Tree.SetHas_Left
+ Tree.SetHas_Right
+ Tree.Compare
+ Tree.Insert
+ Tree.Delete
+ Tree.Remove
+ Tree.RemoveRight
+ Tree.RemoveLeft
+ Tree.Search
+ Tree.Print
+ Tree.RecPrint
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_BT
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BT.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ li $a0 28
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Tree
+ sw $t9 0($t0)
+ move $s0 $t0
+ bnez $s0 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t0 0($s0)
+ lw $t0 0($t0)
+ move $a0 $s0
+ li $a1 16
+ jalr $t0
+ bnez $s0 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 100000000
+ jal _print
+ bnez $s0 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 8
+ jalr $t0
+ bnez $s0 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 24
+ jalr $t0
+ bnez $s0 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 4
+ jalr $t0
+ bnez $s0 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ bnez $s0 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 20
+ jalr $t0
+ bnez $s0 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 28
+ jalr $t0
+ bnez $s0 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 14
+ jalr $t0
+ bnez $s0 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ bnez $s0 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 24
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 16
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 50
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t0 0($s0)
+ lw $t0 52($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ bnez $s0 null20
+ la $a0 _str0
+ j _error
+null20:
+ lw $t0 0($s0)
+ lw $t0 68($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+Tree.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ sw $0 16($t0)
+ sw $0 20($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 20($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 16($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 20($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if1_else
+ li $t1 0
+ j if1_end
+if1_else:
+ slt $t2 $t0 $t2
+ li $t9 1
+ subu $t2 $t9 $t2
+ beqz $t2 if2_else
+ li $t1 0
+ j if2_end
+if2_else:
+ li $t1 1
+if2_end:
+if1_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $a0 28
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Tree
+ sw $t9 0($t0)
+ move $s2 $t0
+ bnez $s2 null21
+ la $a0 _str0
+ j _error
+null21:
+ lw $t0 0($s2)
+ lw $t0 0($t0)
+ move $a0 $s2
+ move $a1 $s1
+ jalr $t0
+ move $s0 $s0
+ li $s3 1
+while1_top:
+ beqz $s3 while1_end
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ lw $t0 0($s0)
+ lw $t0 20($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ slt $t0 $s1 $t0
+ beqz $t0 if3_else
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ lw $t0 0($s0)
+ lw $t0 32($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if4_else
+ bnez $s0 null24
+ la $a0 _str0
+ j _error
+null24:
+ lw $t0 0($s0)
+ lw $t0 16($t0)
+ move $a0 $s0
+ jalr $t0
+ move $s0 $v0
+ j if4_end
+if4_else:
+ li $s3 0
+ bnez $s0 null25
+ la $a0 _str0
+ j _error
+null25:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ li $a1 1
+ jalr $t0
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s0 null27
+ la $a0 _str0
+ j _error
+null27:
+ lw $t0 0($s0)
+ lw $t0 28($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if5_else
+ bnez $s0 null28
+ la $a0 _str0
+ j _error
+null28:
+ lw $t0 0($s0)
+ lw $t0 12($t0)
+ move $a0 $s0
+ jalr $t0
+ move $s0 $v0
+ j if5_end
+if5_else:
+ li $s3 0
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ lw $t0 0($s0)
+ lw $t0 40($t0)
+ move $a0 $s0
+ li $a1 1
+ jalr $t0
+ bnez $s0 null30
+ la $a0 _str0
+ j _error
+null30:
+ lw $t0 0($s0)
+ lw $t0 4($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+if5_end:
+if3_end:
+ j while1_top
+while1_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 36
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ sw $s4 16($sp)
+ sw $s5 20($sp)
+ sw $s6 24($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $s0
+ move $s3 $s0
+ li $s4 1
+ li $s5 0
+ li $s6 1
+while2_top:
+ beqz $s4 while2_end
+ bnez $s2 null31
+ la $a0 _str0
+ j _error
+null31:
+ lw $t0 0($s2)
+ lw $t0 20($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ slt $t1 $s1 $t0
+ beqz $t1 if6_else
+ bnez $s2 null32
+ la $a0 _str0
+ j _error
+null32:
+ lw $t1 0($s2)
+ lw $t1 32($t1)
+ move $a0 $s2
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if7_else
+ move $s3 $s2
+ bnez $s2 null33
+ la $a0 _str0
+ j _error
+null33:
+ lw $t1 0($s2)
+ lw $t1 16($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j if7_end
+if7_else:
+ li $s4 0
+if7_end:
+ j if6_end
+if6_else:
+ slt $t0 $t0 $s1
+ beqz $t0 if8_else
+ bnez $s2 null34
+ la $a0 _str0
+ j _error
+null34:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if9_else
+ move $s3 $s2
+ bnez $s2 null35
+ la $a0 _str0
+ j _error
+null35:
+ lw $t0 0($s2)
+ lw $t0 12($t0)
+ move $a0 $s2
+ jalr $t0
+ move $s2 $v0
+ j if9_end
+if9_else:
+ li $s4 0
+if9_end:
+ j if8_end
+if8_else:
+ beqz $s6 if10_else
+ bnez $s2 null36
+ la $a0 _str0
+ j _error
+null36:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ beqz $t0 ss1_else
+ bnez $s2 null37
+ la $a0 _str0
+ j _error
+null37:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ j ss1_end
+ss1_else:
+ li $t0 0
+ss1_end:
+ beqz $t0 if11_else
+ j if11_end
+if11_else:
+ lw $t0 0($s0)
+ lw $t0 56($t0)
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jalr $t0
+if11_end:
+ j if10_end
+if10_else:
+ lw $t0 0($s0)
+ lw $t0 56($t0)
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jalr $t0
+if10_end:
+ li $s5 1
+ li $s4 0
+if8_end:
+if6_end:
+ li $s6 0
+ j while2_top
+while2_end:
+ move $v0 $s5
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $s4 16($sp)
+ lw $s5 20($sp)
+ lw $s6 24($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 36
+ jr $ra
+
+Tree.Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+ bnez $s2 null38
+ la $a0 _str0
+ j _error
+null38:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if12_else
+ lw $t0 0($s0)
+ lw $t0 64($t0)
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jalr $t0
+ j if12_end
+if12_else:
+ bnez $s2 null39
+ la $a0 _str0
+ j _error
+null39:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if13_else
+ lw $t0 0($s0)
+ lw $t0 60($t0)
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jalr $t0
+ j if13_end
+if13_else:
+ bnez $s2 null40
+ la $a0 _str0
+ j _error
+null40:
+ lw $t0 0($s2)
+ lw $t0 20($t0)
+ move $a0 $s2
+ jalr $t0
+ move $s2 $v0
+ bnez $s1 null41
+ la $a0 _str0
+ j _error
+null41:
+ lw $t0 0($s1)
+ lw $t0 16($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null42
+ la $a0 _str0
+ j _error
+null42:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ lw $t0 0($s0)
+ lw $t0 44($t0)
+ move $a0 $s0
+ move $a1 $s2
+ move $a2 $t1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if14_else
+ bnez $s1 null43
+ la $a0 _str0
+ j _error
+null43:
+ lw $t0 0($s1)
+ lw $t0 8($t0)
+ lw $t1 24($s0)
+ move $a0 $s1
+ move $a1 $t1
+ jalr $t0
+ bnez $s1 null44
+ la $a0 _str0
+ j _error
+null44:
+ lw $t1 0($s1)
+ lw $t1 36($t1)
+ move $a0 $s1
+ li $a1 0
+ jalr $t1
+ j if14_end
+if14_else:
+ bnez $s1 null45
+ la $a0 _str0
+ j _error
+null45:
+ lw $t1 0($s1)
+ lw $t1 4($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null46
+ la $a0 _str0
+ j _error
+null46:
+ lw $t0 0($s1)
+ lw $t0 40($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+if14_end:
+if13_end:
+if12_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while3_top:
+ bnez $s2 null47
+ la $a0 _str0
+ j _error
+null47:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 while3_end
+ bnez $s2 null48
+ la $a0 _str0
+ j _error
+null48:
+ lw $s3 0($s2)
+ lw $s3 24($s3)
+ bnez $s2 null49
+ la $a0 _str0
+ j _error
+null49:
+ lw $t0 0($s2)
+ lw $t0 12($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null50
+ la $a0 _str0
+ j _error
+null50:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $s2
+ move $a1 $t1
+ jalr $s3
+ move $s1 $s2
+ bnez $s2 null51
+ la $a0 _str0
+ j _error
+null51:
+ lw $t1 0($s2)
+ lw $t1 12($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j while3_top
+while3_end:
+ bnez $s1 null52
+ la $a0 _str0
+ j _error
+null52:
+ lw $t1 0($s1)
+ lw $t1 4($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null53
+ la $a0 _str0
+ j _error
+null53:
+ lw $t0 0($s1)
+ lw $t0 40($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while4_top:
+ bnez $s2 null54
+ la $a0 _str0
+ j _error
+null54:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 while4_end
+ bnez $s2 null55
+ la $a0 _str0
+ j _error
+null55:
+ lw $s3 0($s2)
+ lw $s3 24($s3)
+ bnez $s2 null56
+ la $a0 _str0
+ j _error
+null56:
+ lw $t0 0($s2)
+ lw $t0 16($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null57
+ la $a0 _str0
+ j _error
+null57:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $s2
+ move $a1 $t1
+ jalr $s3
+ move $s1 $s2
+ bnez $s2 null58
+ la $a0 _str0
+ j _error
+null58:
+ lw $t1 0($s2)
+ lw $t1 16($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j while4_top
+while4_end:
+ bnez $s1 null59
+ la $a0 _str0
+ j _error
+null59:
+ lw $t1 0($s1)
+ lw $t1 8($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null60
+ la $a0 _str0
+ j _error
+null60:
+ lw $t0 0($s1)
+ lw $t0 36($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 1
+ li $s3 0
+while5_top:
+ beqz $s2 while5_end
+ bnez $s1 null61
+ la $a0 _str0
+ j _error
+null61:
+ lw $t0 0($s1)
+ lw $t0 20($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ slt $t1 $s0 $t0
+ beqz $t1 if15_else
+ bnez $s1 null62
+ la $a0 _str0
+ j _error
+null62:
+ lw $t1 0($s1)
+ lw $t1 32($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if16_else
+ bnez $s1 null63
+ la $a0 _str0
+ j _error
+null63:
+ lw $t1 0($s1)
+ lw $t1 16($t1)
+ move $a0 $s1
+ jalr $t1
+ move $s1 $v0
+ j if16_end
+if16_else:
+ li $s2 0
+if16_end:
+ j if15_end
+if15_else:
+ slt $t0 $t0 $s0
+ beqz $t0 if17_else
+ bnez $s1 null64
+ la $a0 _str0
+ j _error
+null64:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if18_else
+ bnez $s1 null65
+ la $a0 _str0
+ j _error
+null65:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $s1 $v0
+ j if18_end
+if18_else:
+ li $s2 0
+if18_end:
+ j if17_end
+if17_else:
+ li $s3 1
+ li $s2 0
+if17_end:
+if15_end:
+ j while5_top
+while5_end:
+ move $v0 $s3
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $t0
+ lw $t2 0($t0)
+ lw $t2 76($t2)
+ move $a0 $t0
+ move $a1 $t1
+ jalr $t2
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null66
+ la $a0 _str0
+ j _error
+null66:
+ lw $t0 0($s1)
+ lw $t0 32($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if19_else
+ lw $s2 0($s0)
+ lw $s2 76($s2)
+ bnez $s1 null67
+ la $a0 _str0
+ j _error
+null67:
+ lw $t0 0($s1)
+ lw $t0 16($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jalr $s2
+ j if19_end
+if19_else:
+if19_end:
+ bnez $s1 null68
+ la $a0 _str0
+ j _error
+null68:
+ lw $t0 0($s1)
+ lw $t0 20($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s1 null69
+ la $a0 _str0
+ j _error
+null69:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if20_else
+ lw $s2 0($s0)
+ lw $s2 76($s2)
+ bnez $s1 null70
+ la $a0 _str0
+ j _error
+null70:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jalr $s2
+ j if20_end
+if20_else:
+if20_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/BubbleSort.opt.s b/base/BubbleSort.opt.s
new file mode 100644
index 0000000..b1e5946
--- /dev/null
+++ b/base/BubbleSort.opt.s
@@ -0,0 +1,437 @@
+.data
+
+empty_BBS:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $t0 $v0
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $t0
+ li $a1 10
+ jal BBS.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ move $a0 $s0
+ move $a1 $t0
+ jal BBS.Init
+ move $a0 $s0
+ jal BBS.Print
+ li $a0 99999
+ jal _print
+ move $a0 $s0
+ jal BBS.Sort
+ move $a0 $s0
+ jal BBS.Print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+BBS.Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t1 4($t0)
+ subu $t1 $t1 1
+ li $t2 -1
+while1_top:
+ slt $t3 $t2 $t1
+ beqz $t3 while1_end
+ li $t3 1
+while2_top:
+ addu $t4 $t1 1
+ slt $t4 $t3 $t4
+ beqz $t4 while2_end
+ subu $t4 $t3 1
+ lw $t5 0($t0)
+ bnez $t5 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t6 0($t5)
+ sltu $t6 $t4 $t6
+ bnez $t6 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t6 $t4 4
+ addu $t6 $t6 $t5
+ lw $t6 4($t6)
+ lw $t5 0($t0)
+ bnez $t5 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t4 0($t5)
+ sltu $t4 $t3 $t4
+ bnez $t4 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t4 $t3 4
+ addu $t4 $t4 $t5
+ lw $t4 4($t4)
+ slt $t4 $t4 $t6
+ beqz $t4 if1_else
+ subu $t4 $t3 1
+ lw $t6 0($t0)
+ bnez $t6 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t5 0($t6)
+ sltu $t5 $t4 $t5
+ bnez $t5 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t5 $t4 4
+ addu $t5 $t5 $t6
+ lw $t5 4($t5)
+ lw $t6 0($t0)
+ bnez $t6 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t7 0($t6)
+ sltu $t7 $t4 $t7
+ bnez $t7 bounds4
+ la $a0 _str1
+ j _error
+bounds4:
+ mul $t7 $t4 4
+ addu $t7 $t7 $t6
+ lw $t6 0($t0)
+ bnez $t6 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t4 0($t6)
+ sltu $t4 $t3 $t4
+ bnez $t4 bounds5
+ la $a0 _str1
+ j _error
+bounds5:
+ mul $t4 $t3 4
+ addu $t4 $t4 $t6
+ lw $t4 4($t4)
+ sw $t4 4($t7)
+ lw $t4 0($t0)
+ bnez $t4 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t7 0($t4)
+ sltu $t7 $t3 $t7
+ bnez $t7 bounds6
+ la $a0 _str1
+ j _error
+bounds6:
+ mul $t7 $t3 4
+ addu $t7 $t7 $t4
+ sw $t5 4($t7)
+ j if1_end
+if1_else:
+if1_end:
+ addu $t3 $t3 1
+ j while2_top
+while2_end:
+ subu $t1 $t1 1
+ j while1_top
+while1_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 0
+while3_top:
+ lw $t2 4($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while3_end
+ lw $t2 0($t0)
+ bnez $t2 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds7
+ la $a0 _str1
+ j _error
+bounds7:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while3_top
+while3_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 4($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 0($s0)
+ lw $t0 0($s0)
+ bnez $t0 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t1 0($t0)
+ li $t9 0
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds8
+ la $a0 _str1
+ j _error
+bounds8:
+ li $t1 0
+ addu $t1 $t1 $t0
+ li $t9 20
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t0 0($t1)
+ li $t9 1
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds9
+ la $a0 _str1
+ j _error
+bounds9:
+ li $t0 4
+ addu $t0 $t0 $t1
+ li $t9 7
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t1 0($t0)
+ li $t9 2
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds10
+ la $a0 _str1
+ j _error
+bounds10:
+ li $t1 8
+ addu $t1 $t1 $t0
+ li $t9 12
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t0 0($t1)
+ li $t9 3
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds11
+ la $a0 _str1
+ j _error
+bounds11:
+ li $t0 12
+ addu $t0 $t0 $t1
+ li $t9 18
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t1 0($t0)
+ li $t9 4
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds12
+ la $a0 _str1
+ j _error
+bounds12:
+ li $t1 16
+ addu $t1 $t1 $t0
+ li $t9 2
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t0 0($t1)
+ li $t9 5
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds13
+ la $a0 _str1
+ j _error
+bounds13:
+ li $t0 20
+ addu $t0 $t0 $t1
+ li $t9 11
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($t0)
+ li $t9 6
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds14
+ la $a0 _str1
+ j _error
+bounds14:
+ li $t1 24
+ addu $t1 $t1 $t0
+ li $t9 6
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t0 0($t1)
+ li $t9 7
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds15
+ la $a0 _str1
+ j _error
+bounds15:
+ li $t0 28
+ addu $t0 $t0 $t1
+ li $t9 9
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($t0)
+ li $t9 8
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds16
+ la $a0 _str1
+ j _error
+bounds16:
+ li $t1 32
+ addu $t1 $t1 $t0
+ li $t9 19
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t0 0($t1)
+ li $t9 9
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds17
+ la $a0 _str1
+ j _error
+bounds17:
+ li $t0 36
+ addu $t0 $t0 $t1
+ li $t9 5
+ sw $t9 4($t0)
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/BubbleSort.s b/base/BubbleSort.s
new file mode 100644
index 0000000..8d4676e
--- /dev/null
+++ b/base/BubbleSort.s
@@ -0,0 +1,453 @@
+.data
+
+vmt_BBS:
+ BBS.Start
+ BBS.Sort
+ BBS.Print
+ BBS.Init
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_BBS
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ li $a1 10
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ lw $t1 0($s0)
+ lw $t1 12($t1)
+ move $a0 $s0
+ move $a1 $t0
+ jalr $t1
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ jalr $t1
+ li $a0 99999
+ jal _print
+ lw $t1 0($s0)
+ lw $t1 4($t1)
+ move $a0 $s0
+ jalr $t1
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ jalr $t1
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+BBS.Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t1 8($t0)
+ subu $t1 $t1 1
+ li $t2 -1
+while1_top:
+ slt $t3 $t2 $t1
+ beqz $t3 while1_end
+ li $t3 1
+while2_top:
+ addu $t4 $t1 1
+ slt $t4 $t3 $t4
+ beqz $t4 while2_end
+ subu $t4 $t3 1
+ lw $t5 4($t0)
+ bnez $t5 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t6 0($t5)
+ sltu $t6 $t4 $t6
+ bnez $t6 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t6 $t4 4
+ addu $t6 $t6 $t5
+ lw $t6 4($t6)
+ lw $t5 4($t0)
+ bnez $t5 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t4 0($t5)
+ sltu $t4 $t3 $t4
+ bnez $t4 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t4 $t3 4
+ addu $t4 $t4 $t5
+ lw $t4 4($t4)
+ slt $t4 $t4 $t6
+ beqz $t4 if1_else
+ subu $t4 $t3 1
+ lw $t6 4($t0)
+ bnez $t6 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t5 0($t6)
+ sltu $t5 $t4 $t5
+ bnez $t5 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t5 $t4 4
+ addu $t5 $t5 $t6
+ lw $t5 4($t5)
+ lw $t6 4($t0)
+ bnez $t6 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t7 0($t6)
+ sltu $t7 $t4 $t7
+ bnez $t7 bounds4
+ la $a0 _str1
+ j _error
+bounds4:
+ mul $t7 $t4 4
+ addu $t7 $t7 $t6
+ lw $t6 4($t0)
+ bnez $t6 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t4 0($t6)
+ sltu $t4 $t3 $t4
+ bnez $t4 bounds5
+ la $a0 _str1
+ j _error
+bounds5:
+ mul $t4 $t3 4
+ addu $t4 $t4 $t6
+ lw $t4 4($t4)
+ sw $t4 4($t7)
+ lw $t4 4($t0)
+ bnez $t4 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t7 0($t4)
+ sltu $t7 $t3 $t7
+ bnez $t7 bounds6
+ la $a0 _str1
+ j _error
+bounds6:
+ mul $t7 $t3 4
+ addu $t7 $t7 $t4
+ sw $t5 4($t7)
+ j if1_end
+if1_else:
+if1_end:
+ addu $t3 $t3 1
+ j while2_top
+while2_end:
+ subu $t1 $t1 1
+ j while1_top
+while1_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 0
+while3_top:
+ lw $t2 8($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while3_end
+ lw $t2 4($t0)
+ bnez $t2 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds7
+ la $a0 _str1
+ j _error
+bounds7:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while3_top
+while3_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+BBS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 8($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 4($s0)
+ lw $t0 4($s0)
+ bnez $t0 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t1 0($t0)
+ li $t9 0
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds8
+ la $a0 _str1
+ j _error
+bounds8:
+ li $t1 0
+ addu $t1 $t1 $t0
+ li $t9 20
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t0 0($t1)
+ li $t9 1
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds9
+ la $a0 _str1
+ j _error
+bounds9:
+ li $t0 4
+ addu $t0 $t0 $t1
+ li $t9 7
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t1 0($t0)
+ li $t9 2
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds10
+ la $a0 _str1
+ j _error
+bounds10:
+ li $t1 8
+ addu $t1 $t1 $t0
+ li $t9 12
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t0 0($t1)
+ li $t9 3
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds11
+ la $a0 _str1
+ j _error
+bounds11:
+ li $t0 12
+ addu $t0 $t0 $t1
+ li $t9 18
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t1 0($t0)
+ li $t9 4
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds12
+ la $a0 _str1
+ j _error
+bounds12:
+ li $t1 16
+ addu $t1 $t1 $t0
+ li $t9 2
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t0 0($t1)
+ li $t9 5
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds13
+ la $a0 _str1
+ j _error
+bounds13:
+ li $t0 20
+ addu $t0 $t0 $t1
+ li $t9 11
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($t0)
+ li $t9 6
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds14
+ la $a0 _str1
+ j _error
+bounds14:
+ li $t1 24
+ addu $t1 $t1 $t0
+ li $t9 6
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t0 0($t1)
+ li $t9 7
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds15
+ la $a0 _str1
+ j _error
+bounds15:
+ li $t0 28
+ addu $t0 $t0 $t1
+ li $t9 9
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($t0)
+ li $t9 8
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds16
+ la $a0 _str1
+ j _error
+bounds16:
+ li $t1 32
+ addu $t1 $t1 $t0
+ li $t9 19
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t0 0($t1)
+ li $t9 9
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds17
+ la $a0 _str1
+ j _error
+bounds17:
+ li $t0 36
+ addu $t0 $t0 $t1
+ li $t9 5
+ sw $t9 4($t0)
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/Factorial.opt.s b/base/Factorial.opt.s
new file mode 100644
index 0000000..b743942
--- /dev/null
+++ b/base/Factorial.opt.s
@@ -0,0 +1,64 @@
+.data
+
+empty_Fac:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ la $a0 empty_Fac
+ li $a1 10
+ jal Fac.ComputeFac
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Fac.ComputeFac:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $t0 $a0
+ move $s0 $a1
+ slti $t1 $s0 1
+ beqz $t1 if1_else
+ li $t1 1
+ j if1_end
+if1_else:
+ subu $t2 $s0 1
+ move $a0 $t0
+ move $a1 $t2
+ jal Fac.ComputeFac
+ move $t2 $v0
+ mul $t1 $s0 $t2
+if1_end:
+ move $v0 $t1
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
diff --git a/base/Factorial.s b/base/Factorial.s
new file mode 100644
index 0000000..ee0830b
--- /dev/null
+++ b/base/Factorial.s
@@ -0,0 +1,90 @@
+.data
+
+vmt_Fac:
+ Fac.ComputeFac
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Fac
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ li $a1 10
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Fac.ComputeFac:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $t0 $a0
+ move $s0 $a1
+ slti $t1 $s0 1
+ beqz $t1 if1_else
+ li $t1 1
+ j if1_end
+if1_else:
+ lw $t2 0($t0)
+ lw $t2 0($t2)
+ subu $t3 $s0 1
+ move $a0 $t0
+ move $a1 $t3
+ jalr $t2
+ move $t3 $v0
+ mul $t1 $s0 $t3
+if1_end:
+ move $v0 $t1
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/LinearSearch.opt.s b/base/LinearSearch.opt.s
new file mode 100644
index 0000000..92b272e
--- /dev/null
+++ b/base/LinearSearch.opt.s
@@ -0,0 +1,254 @@
+.data
+
+empty_LS:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $t0 $v0
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $t0
+ li $a1 10
+ jal LS.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ move $a0 $s0
+ move $a1 $t0
+ jal LS.Init
+ move $a0 $s0
+ jal LS.Print
+ li $a0 9999
+ jal _print
+ move $a0 $s0
+ li $a1 8
+ jal LS.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ move $a0 $s0
+ li $a1 12
+ jal LS.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ move $a0 $s0
+ li $a1 17
+ jal LS.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ move $a0 $s0
+ li $a1 50
+ jal LS.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $v0 55
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+LS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 1
+while1_top:
+ lw $t2 4($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while1_end
+ lw $t2 0($t0)
+ bnez $t2 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while1_top
+while1_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ li $t2 1
+ li $t3 0
+while2_top:
+ lw $t4 4($t0)
+ slt $t4 $t2 $t4
+ beqz $t4 while2_end
+ lw $t4 0($t0)
+ bnez $t4 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t5 0($t4)
+ sltu $t5 $t2 $t5
+ bnez $t5 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t5 $t2 4
+ addu $t5 $t5 $t4
+ lw $t5 4($t5)
+ addu $t4 $t1 1
+ slt $t6 $t5 $t1
+ beqz $t6 if1_else
+ j if1_end
+if1_else:
+ slt $t4 $t5 $t4
+ bnez $t4 if2_else
+ j if2_end
+if2_else:
+ li $t3 1
+ lw $t2 4($t0)
+if2_end:
+if1_end:
+ addu $t2 $t2 1
+ j while2_top
+while2_end:
+ move $v0 $t3
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 4($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 0($s0)
+ li $t0 1
+ lw $t1 4($s0)
+ addu $t1 $t1 1
+while3_top:
+ lw $t2 4($s0)
+ slt $t2 $t0 $t2
+ beqz $t2 while3_end
+ mul $t2 $t0 2
+ subu $t3 $t1 3
+ lw $t4 0($s0)
+ bnez $t4 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t5 0($t4)
+ sltu $t5 $t0 $t5
+ bnez $t5 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t5 $t0 4
+ addu $t5 $t5 $t4
+ addu $t3 $t2 $t3
+ sw $t3 4($t5)
+ addu $t0 $t0 1
+ subu $t1 $t1 1
+ j while3_top
+while3_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/LinearSearch.s b/base/LinearSearch.s
new file mode 100644
index 0000000..711126b
--- /dev/null
+++ b/base/LinearSearch.s
@@ -0,0 +1,276 @@
+.data
+
+vmt_LS:
+ LS.Start
+ LS.Print
+ LS.Search
+ LS.Init
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_LS
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ li $a1 10
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ lw $t1 0($s0)
+ lw $t1 12($t1)
+ move $a0 $s0
+ move $a1 $t0
+ jalr $t1
+ lw $t1 0($s0)
+ lw $t1 4($t1)
+ move $a0 $s0
+ jalr $t1
+ li $a0 9999
+ jal _print
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ li $a1 8
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ li $a1 12
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ li $a1 17
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ li $a1 50
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ li $v0 55
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+LS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 1
+while1_top:
+ lw $t2 8($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while1_end
+ lw $t2 4($t0)
+ bnez $t2 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while1_top
+while1_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ li $t2 1
+ li $t3 0
+while2_top:
+ lw $t4 8($t0)
+ slt $t4 $t2 $t4
+ beqz $t4 while2_end
+ lw $t4 4($t0)
+ bnez $t4 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t5 0($t4)
+ sltu $t5 $t2 $t5
+ bnez $t5 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t5 $t2 4
+ addu $t5 $t5 $t4
+ lw $t5 4($t5)
+ addu $t4 $t1 1
+ slt $t6 $t5 $t1
+ beqz $t6 if1_else
+ j if1_end
+if1_else:
+ slt $t4 $t5 $t4
+ li $t9 1
+ subu $t4 $t9 $t4
+ beqz $t4 if2_else
+ j if2_end
+if2_else:
+ li $t3 1
+ lw $t2 8($t0)
+if2_end:
+if1_end:
+ addu $t2 $t2 1
+ j while2_top
+while2_end:
+ move $v0 $t3
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+LS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 8($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 4($s0)
+ li $t0 1
+ lw $t1 8($s0)
+ addu $t1 $t1 1
+while3_top:
+ lw $t2 8($s0)
+ slt $t2 $t0 $t2
+ beqz $t2 while3_end
+ mul $t2 $t0 2
+ subu $t3 $t1 3
+ lw $t4 4($s0)
+ bnez $t4 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t5 0($t4)
+ sltu $t5 $t0 $t5
+ bnez $t5 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t5 $t0 4
+ addu $t5 $t5 $t4
+ addu $t3 $t2 $t3
+ sw $t3 4($t5)
+ addu $t0 $t0 1
+ subu $t1 $t1 1
+ j while3_top
+while3_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/LinkedList.opt.s b/base/LinkedList.opt.s
new file mode 100644
index 0000000..c02b2cd
--- /dev/null
+++ b/base/LinkedList.opt.s
@@ -0,0 +1,791 @@
+.data
+
+empty_Element:
+
+empty_List:
+
+empty_LL:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ la $a0 empty_LL
+ jal LL.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ sw $t1 0($t0)
+ sw $t2 4($t0)
+ sw $t3 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetAge:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 0($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetSalary:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetMarried:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.Equal:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $s2 1
+ bnez $s1 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $s1
+ jal Element.GetAge
+ move $t0 $v0
+ lw $t1 0($s0)
+ move $a0 $s0
+ move $a1 $t0
+ move $a2 $t1
+ jal Element.Compare
+ move $t1 $v0
+ bnez $t1 if1_else
+ li $s2 0
+ j if1_end
+if1_else:
+ bnez $s1 null2
+ la $a0 _str0
+ j _error
+null2:
+ move $a0 $s1
+ jal Element.GetSalary
+ move $t1 $v0
+ lw $t0 4($s0)
+ move $a0 $s0
+ move $a1 $t1
+ move $a2 $t0
+ jal Element.Compare
+ move $t0 $v0
+ bnez $t0 if2_else
+ li $s2 0
+ j if2_end
+if2_else:
+ lw $t0 8($s0)
+ beqz $t0 if3_else
+ bnez $s1 null3
+ la $a0 _str0
+ j _error
+null3:
+ move $a0 $s1
+ jal Element.GetMarried
+ move $t0 $v0
+ bnez $t0 if4_else
+ li $s2 0
+ j if4_end
+if4_else:
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s1 null4
+ la $a0 _str0
+ j _error
+null4:
+ move $a0 $s1
+ jal Element.GetMarried
+ move $t0 $v0
+ beqz $t0 if5_else
+ li $s2 0
+ j if5_end
+if5_else:
+if5_end:
+if3_end:
+if2_end:
+if1_end:
+ move $v0 $s2
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Element.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if6_else
+ li $t1 0
+ j if6_end
+if6_else:
+ slt $t2 $t0 $t2
+ bnez $t2 if7_else
+ li $t1 0
+ j if7_end
+if7_else:
+ li $t1 1
+if7_end:
+if6_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t9 1
+ sw $t9 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.InitNew:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ sw $t3 8($t0)
+ sw $t1 0($t0)
+ sw $t2 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t0 $t0
+ li $a0 12
+ jal _heapAlloc
+ move $s0 $v0
+ bnez $s0 null5
+ la $a0 _str0
+ j _error
+null5:
+ move $a0 $s0
+ move $a1 $t1
+ move $a2 $t0
+ li $a3 0
+ jal List.InitNew
+ move $v0 $s0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+List.SetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 40
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ sw $s4 16($sp)
+ sw $s5 20($sp)
+ sw $s6 24($sp)
+ sw $s7 28($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 0
+ li $s3 -1
+ move $s4 $t0
+ move $s5 $t0
+ lw $s6 8($t0)
+ lw $s7 0($t0)
+while1_top:
+ bnez $s6 ss1_else
+ li $t9 1
+ subu $t0 $t9 $s2
+ j ss1_end
+ss1_else:
+ li $t0 0
+ss1_end:
+ beqz $t0 while1_end
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ move $a0 $s0
+ move $a1 $s7
+ jal Element.Equal
+ move $t0 $v0
+ beqz $t0 if8_else
+ li $s2 1
+ slti $t0 $s3 0
+ beqz $t0 if9_else
+ bnez $s4 null7
+ la $a0 _str0
+ j _error
+null7:
+ move $a0 $s4
+ jal List.GetNext
+ move $s1 $v0
+ j if9_end
+if9_else:
+ li $t0 -555
+ move $a0 $t0
+ jal _print
+ bnez $s5 null8
+ la $a0 _str0
+ j _error
+null8:
+ bnez $s4 null9
+ la $a0 _str0
+ j _error
+null9:
+ move $a0 $s4
+ jal List.GetNext
+ move $t0 $v0
+ move $a0 $s5
+ move $a1 $t0
+ jal List.SetNext
+ li $t0 -555
+ move $a0 $t0
+ jal _print
+if9_end:
+ j if8_end
+if8_else:
+if8_end:
+ bnez $s2 if10_else
+ move $s5 $s4
+ bnez $s4 null10
+ la $a0 _str0
+ j _error
+null10:
+ move $a0 $s4
+ jal List.GetNext
+ move $s4 $v0
+ bnez $s4 null11
+ la $a0 _str0
+ j _error
+null11:
+ move $a0 $s4
+ jal List.GetEnd
+ move $s6 $v0
+ bnez $s4 null12
+ la $a0 _str0
+ j _error
+null12:
+ move $a0 $s4
+ jal List.GetElem
+ move $s7 $v0
+ li $s3 1
+ j if10_end
+if10_else:
+if10_end:
+ j while1_top
+while1_end:
+ move $v0 $s1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $s4 16($sp)
+ lw $s5 20($sp)
+ lw $s6 24($sp)
+ lw $s7 28($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 40
+ jr $ra
+
+List.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ li $s1 0
+ move $s2 $t0
+ lw $s3 8($t0)
+ lw $t0 0($t0)
+while2_top:
+ li $t9 1
+ subu $t1 $t9 $s3
+ beqz $t1 while2_end
+ bnez $s0 null13
+ la $a0 _str0
+ j _error
+null13:
+ move $a0 $s0
+ move $a1 $t0
+ jal Element.Equal
+ move $t1 $v0
+ beqz $t1 if11_else
+ li $s1 1
+ j if11_end
+if11_else:
+if11_end:
+ bnez $s2 null14
+ la $a0 _str0
+ j _error
+null14:
+ move $a0 $s2
+ jal List.GetNext
+ move $s2 $v0
+ bnez $s2 null15
+ la $a0 _str0
+ j _error
+null15:
+ move $a0 $s2
+ jal List.GetEnd
+ move $s3 $v0
+ bnez $s2 null16
+ la $a0 _str0
+ j _error
+null16:
+ move $a0 $s2
+ jal List.GetElem
+ move $t0 $v0
+ j while2_top
+while2_end:
+ move $v0 $s1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+List.GetEnd:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.GetElem:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 0($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.GetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $t0 $a0
+ move $s0 $t0
+ lw $s1 8($t0)
+ lw $t0 0($t0)
+while3_top:
+ li $t9 1
+ subu $t1 $t9 $s1
+ beqz $t1 while3_end
+ bnez $t0 null17
+ la $a0 _str0
+ j _error
+null17:
+ move $a0 $t0
+ jal Element.GetAge
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null18
+ la $a0 _str0
+ j _error
+null18:
+ move $a0 $s0
+ jal List.GetNext
+ move $s0 $v0
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ move $a0 $s0
+ jal List.GetEnd
+ move $s1 $v0
+ bnez $s0 null20
+ la $a0 _str0
+ j _error
+null20:
+ move $a0 $s0
+ jal List.GetElem
+ move $t0 $v0
+ j while3_top
+while3_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+LL.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ li $a0 12
+ jal _heapAlloc
+ move $s0 $v0
+ bnez $s0 null21
+ la $a0 _str0
+ j _error
+null21:
+ move $a0 $s0
+ jal List.Init
+ move $s0 $s0
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ move $a0 $s0
+ jal List.Init
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ move $a0 $s0
+ jal List.Print
+ li $a0 12
+ jal _heapAlloc
+ move $s1 $v0
+ bnez $s1 null24
+ la $a0 _str0
+ j _error
+null24:
+ move $a0 $s1
+ li $a1 25
+ li $a2 37000
+ li $a3 0
+ jal Element.Init
+ bnez $s0 null25
+ la $a0 _str0
+ j _error
+null25:
+ move $a0 $s0
+ move $a1 $s1
+ jal List.Insert
+ move $s0 $v0
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ move $a0 $s0
+ jal List.Print
+ li $a0 10000000
+ jal _print
+ li $a0 12
+ jal _heapAlloc
+ move $s1 $v0
+ bnez $s1 null27
+ la $a0 _str0
+ j _error
+null27:
+ move $a0 $s1
+ li $a1 39
+ li $a2 42000
+ li $a3 1
+ jal Element.Init
+ move $s2 $s1
+ bnez $s0 null28
+ la $a0 _str0
+ j _error
+null28:
+ move $a0 $s0
+ move $a1 $s1
+ jal List.Insert
+ move $s0 $v0
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ move $a0 $s0
+ jal List.Print
+ li $a0 10000000
+ jal _print
+ li $a0 12
+ jal _heapAlloc
+ move $s1 $v0
+ bnez $s1 null30
+ la $a0 _str0
+ j _error
+null30:
+ move $a0 $s1
+ li $a1 22
+ li $a2 34000
+ li $a3 0
+ jal Element.Init
+ bnez $s0 null31
+ la $a0 _str0
+ j _error
+null31:
+ move $a0 $s0
+ move $a1 $s1
+ jal List.Insert
+ move $s0 $v0
+ bnez $s0 null32
+ la $a0 _str0
+ j _error
+null32:
+ move $a0 $s0
+ jal List.Print
+ li $a0 12
+ jal _heapAlloc
+ move $s3 $v0
+ bnez $s3 null33
+ la $a0 _str0
+ j _error
+null33:
+ move $a0 $s3
+ li $a1 27
+ li $a2 34000
+ li $a3 0
+ jal Element.Init
+ bnez $s0 null34
+ la $a0 _str0
+ j _error
+null34:
+ move $a0 $s0
+ move $a1 $s2
+ jal List.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null35
+ la $a0 _str0
+ j _error
+null35:
+ move $a0 $s0
+ move $a1 $s3
+ jal List.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $a0 10000000
+ jal _print
+ li $a0 12
+ jal _heapAlloc
+ move $s1 $v0
+ bnez $s1 null36
+ la $a0 _str0
+ j _error
+null36:
+ move $a0 $s1
+ li $a1 28
+ li $a2 35000
+ li $a3 0
+ jal Element.Init
+ bnez $s0 null37
+ la $a0 _str0
+ j _error
+null37:
+ move $a0 $s0
+ move $a1 $s1
+ jal List.Insert
+ move $s0 $v0
+ bnez $s0 null38
+ la $a0 _str0
+ j _error
+null38:
+ move $a0 $s0
+ jal List.Print
+ li $a0 2220000
+ jal _print
+ bnez $s0 null39
+ la $a0 _str0
+ j _error
+null39:
+ move $a0 $s0
+ move $a1 $s2
+ jal List.Delete
+ move $s0 $v0
+ bnez $s0 null40
+ la $a0 _str0
+ j _error
+null40:
+ move $a0 $s0
+ jal List.Print
+ li $a0 33300000
+ jal _print
+ bnez $s0 null41
+ la $a0 _str0
+ j _error
+null41:
+ move $a0 $s0
+ move $a1 $s1
+ jal List.Delete
+ move $s0 $v0
+ bnez $s0 null42
+ la $a0 _str0
+ j _error
+null42:
+ move $a0 $s0
+ jal List.Print
+ li $a0 44440000
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/LinkedList.s b/base/LinkedList.s
new file mode 100644
index 0000000..593d777
--- /dev/null
+++ b/base/LinkedList.s
@@ -0,0 +1,944 @@
+.data
+
+vmt_Element:
+ Element.Init
+ Element.GetAge
+ Element.GetSalary
+ Element.GetMarried
+ Element.Equal
+ Element.Compare
+
+vmt_List:
+ List.Init
+ List.InitNew
+ List.Insert
+ List.SetNext
+ List.Delete
+ List.Search
+ List.GetEnd
+ List.GetElem
+ List.GetNext
+ List.Print
+
+vmt_LL:
+ LL.Start
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_LL
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ sw $t1 4($t0)
+ sw $t2 8($t0)
+ sw $t3 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetAge:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetSalary:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.GetMarried:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Element.Equal:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $s2 1
+ bnez $s1 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t0 0($s1)
+ lw $t0 4($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ lw $t1 0($s0)
+ lw $t1 20($t1)
+ lw $t2 4($s0)
+ move $a0 $s0
+ move $a1 $t0
+ move $a2 $t2
+ jalr $t1
+ move $t2 $v0
+ li $t9 1
+ subu $t2 $t9 $t2
+ beqz $t2 if1_else
+ li $s2 0
+ j if1_end
+if1_else:
+ bnez $s1 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t2 0($s1)
+ lw $t2 8($t2)
+ move $a0 $s1
+ jalr $t2
+ move $t2 $v0
+ lw $t1 0($s0)
+ lw $t1 20($t1)
+ lw $t0 8($s0)
+ move $a0 $s0
+ move $a1 $t2
+ move $a2 $t0
+ jalr $t1
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ beqz $t0 if2_else
+ li $s2 0
+ j if2_end
+if2_else:
+ lw $t0 12($s0)
+ beqz $t0 if3_else
+ bnez $s1 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ beqz $t0 if4_else
+ li $s2 0
+ j if4_end
+if4_else:
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s1 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if5_else
+ li $s2 0
+ j if5_end
+if5_else:
+if5_end:
+if3_end:
+if2_end:
+if1_end:
+ move $v0 $s2
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Element.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if6_else
+ li $t1 0
+ j if6_end
+if6_else:
+ slt $t2 $t0 $t2
+ li $t9 1
+ subu $t2 $t9 $t2
+ beqz $t2 if7_else
+ li $t1 0
+ j if7_end
+if7_else:
+ li $t1 1
+if7_end:
+if6_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t9 1
+ sw $t9 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.InitNew:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ sw $t3 12($t0)
+ sw $t1 4($t0)
+ sw $t2 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t0 $t0
+ li $a0 16
+ jal _heapAlloc
+ move $t2 $v0
+ la $t9 vmt_List
+ sw $t9 0($t2)
+ move $s0 $t2
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t2 0($s0)
+ lw $t2 4($t2)
+ move $a0 $s0
+ move $a1 $t1
+ move $a2 $t0
+ li $a3 0
+ jalr $t2
+ move $v0 $s0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+List.SetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 44
+ sw $ra -4($fp)
+ sw $s0 4($sp)
+ sw $s1 8($sp)
+ sw $s2 12($sp)
+ sw $s3 16($sp)
+ sw $s4 20($sp)
+ sw $s5 24($sp)
+ sw $s6 28($sp)
+ sw $s7 32($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 0
+ li $s3 -1
+ move $s4 $t0
+ move $s5 $t0
+ lw $s6 12($t0)
+ lw $s7 4($t0)
+while1_top:
+ li $t9 1
+ subu $t0 $t9 $s6
+ beqz $t0 ss1_else
+ li $t9 1
+ subu $t0 $t9 $s2
+ j ss1_end
+ss1_else:
+ li $t0 0
+ss1_end:
+ beqz $t0 while1_end
+ bnez $s0 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t0 0($s0)
+ lw $t0 16($t0)
+ move $a0 $s0
+ move $a1 $s7
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if8_else
+ li $s2 1
+ slti $t0 $s3 0
+ beqz $t0 if9_else
+ bnez $s4 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t0 0($s4)
+ lw $t0 32($t0)
+ move $a0 $s4
+ jalr $t0
+ move $s1 $v0
+ j if9_end
+if9_else:
+ li $t0 -555
+ move $a0 $t0
+ jal _print
+ bnez $s5 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $v0 0($s5)
+ sw $v0 0($sp)
+ lw $v0 0($sp)
+ lw $v0 12($v0)
+ sw $v0 0($sp)
+ bnez $s4 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t0 0($s4)
+ lw $t0 32($t0)
+ move $a0 $s4
+ jalr $t0
+ move $t0 $v0
+ move $a0 $s5
+ move $a1 $t0
+ lw $v0 0($sp)
+ jalr $v0
+ li $t0 -555
+ move $a0 $t0
+ jal _print
+if9_end:
+ j if8_end
+if8_else:
+if8_end:
+ li $t9 1
+ subu $t0 $t9 $s2
+ beqz $t0 if10_else
+ move $s5 $s4
+ bnez $s4 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t0 0($s4)
+ lw $t0 32($t0)
+ move $a0 $s4
+ jalr $t0
+ move $s4 $v0
+ bnez $s4 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t0 0($s4)
+ lw $t0 24($t0)
+ move $a0 $s4
+ jalr $t0
+ move $s6 $v0
+ bnez $s4 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t0 0($s4)
+ lw $t0 28($t0)
+ move $a0 $s4
+ jalr $t0
+ move $s7 $v0
+ li $s3 1
+ j if10_end
+if10_else:
+if10_end:
+ j while1_top
+while1_end:
+ move $v0 $s1
+ lw $s0 4($sp)
+ lw $s1 8($sp)
+ lw $s2 12($sp)
+ lw $s3 16($sp)
+ lw $s4 20($sp)
+ lw $s5 24($sp)
+ lw $s6 28($sp)
+ lw $s7 32($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 44
+ jr $ra
+
+List.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ li $s1 0
+ move $s2 $t0
+ lw $s3 12($t0)
+ lw $t0 4($t0)
+while2_top:
+ li $t9 1
+ subu $t1 $t9 $s3
+ beqz $t1 while2_end
+ bnez $s0 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t1 0($s0)
+ lw $t1 16($t1)
+ move $a0 $s0
+ move $a1 $t0
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if11_else
+ li $s1 1
+ j if11_end
+if11_else:
+if11_end:
+ bnez $s2 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($s2)
+ lw $t1 32($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ bnez $s2 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t1 0($s2)
+ lw $t1 24($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s3 $v0
+ bnez $s2 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($s2)
+ lw $t1 28($t1)
+ move $a0 $s2
+ jalr $t1
+ move $t0 $v0
+ j while2_top
+while2_end:
+ move $v0 $s1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+List.GetEnd:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.GetElem:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.GetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+List.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $t0 $a0
+ move $s0 $t0
+ lw $s1 12($t0)
+ lw $t0 4($t0)
+while3_top:
+ li $t9 1
+ subu $t1 $t9 $s1
+ beqz $t1 while3_end
+ bnez $t0 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t1 0($t0)
+ lw $t1 4($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ lw $t1 0($s0)
+ lw $t1 32($t1)
+ move $a0 $s0
+ jalr $t1
+ move $s0 $v0
+ bnez $s0 null20
+ la $a0 _str0
+ j _error
+null20:
+ lw $t1 0($s0)
+ lw $t1 24($t1)
+ move $a0 $s0
+ jalr $t1
+ move $s1 $v0
+ bnez $s0 null21
+ la $a0 _str0
+ j _error
+null21:
+ lw $t1 0($s0)
+ lw $t1 28($t1)
+ move $a0 $s0
+ jalr $t1
+ move $t0 $v0
+ j while3_top
+while3_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+LL.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_List
+ sw $t9 0($t0)
+ move $s0 $t0
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ lw $t0 0($s0)
+ lw $t0 0($t0)
+ move $a0 $s0
+ jalr $t0
+ move $s0 $s0
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ lw $t0 0($s0)
+ lw $t0 0($t0)
+ move $a0 $s0
+ jalr $t0
+ bnez $s0 null24
+ la $a0 _str0
+ j _error
+null24:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Element
+ sw $t9 0($t0)
+ move $s1 $t0
+ bnez $s1 null25
+ la $a0 _str0
+ j _error
+null25:
+ lw $t0 0($s1)
+ lw $t0 0($t0)
+ move $a0 $s1
+ li $a1 25
+ li $a2 37000
+ li $a3 0
+ jalr $t0
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s1
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null27
+ la $a0 _str0
+ j _error
+null27:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 10000000
+ jal _print
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Element
+ sw $t9 0($t0)
+ move $s1 $t0
+ bnez $s1 null28
+ la $a0 _str0
+ j _error
+null28:
+ lw $t0 0($s1)
+ lw $t0 0($t0)
+ move $a0 $s1
+ li $a1 39
+ li $a2 42000
+ li $a3 1
+ jalr $t0
+ move $s2 $s1
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s1
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null30
+ la $a0 _str0
+ j _error
+null30:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 10000000
+ jal _print
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Element
+ sw $t9 0($t0)
+ move $s1 $t0
+ bnez $s1 null31
+ la $a0 _str0
+ j _error
+null31:
+ lw $t0 0($s1)
+ lw $t0 0($t0)
+ move $a0 $s1
+ li $a1 22
+ li $a2 34000
+ li $a3 0
+ jalr $t0
+ bnez $s0 null32
+ la $a0 _str0
+ j _error
+null32:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s1
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null33
+ la $a0 _str0
+ j _error
+null33:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Element
+ sw $t9 0($t0)
+ move $s3 $t0
+ bnez $s3 null34
+ la $a0 _str0
+ j _error
+null34:
+ lw $t0 0($s3)
+ lw $t0 0($t0)
+ move $a0 $s3
+ li $a1 27
+ li $a2 34000
+ li $a3 0
+ jalr $t0
+ bnez $s0 null35
+ la $a0 _str0
+ j _error
+null35:
+ lw $t0 0($s0)
+ lw $t0 20($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null36
+ la $a0 _str0
+ j _error
+null36:
+ lw $t0 0($s0)
+ lw $t0 20($t0)
+ move $a0 $s0
+ move $a1 $s3
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $a0 10000000
+ jal _print
+ li $a0 16
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Element
+ sw $t9 0($t0)
+ move $s1 $t0
+ bnez $s1 null37
+ la $a0 _str0
+ j _error
+null37:
+ lw $t0 0($s1)
+ lw $t0 0($t0)
+ move $a0 $s1
+ li $a1 28
+ li $a2 35000
+ li $a3 0
+ jalr $t0
+ bnez $s0 null38
+ la $a0 _str0
+ j _error
+null38:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s1
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null39
+ la $a0 _str0
+ j _error
+null39:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 2220000
+ jal _print
+ bnez $s0 null40
+ la $a0 _str0
+ j _error
+null40:
+ lw $t0 0($s0)
+ lw $t0 16($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null41
+ la $a0 _str0
+ j _error
+null41:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 33300000
+ jal _print
+ bnez $s0 null42
+ la $a0 _str0
+ j _error
+null42:
+ lw $t0 0($s0)
+ lw $t0 16($t0)
+ move $a0 $s0
+ move $a1 $s1
+ jalr $t0
+ move $s0 $v0
+ bnez $s0 null43
+ la $a0 _str0
+ j _error
+null43:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 44440000
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/MoreThan4.opt.s b/base/MoreThan4.opt.s
new file mode 100644
index 0000000..70e3173
--- /dev/null
+++ b/base/MoreThan4.opt.s
@@ -0,0 +1,113 @@
+.data
+
+empty_MT4:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ la $a0 empty_MT4
+ li $a1 1
+ li $a2 2
+ li $a3 3
+ li $t9 4
+ sw $t9 0($sp)
+ li $t9 5
+ sw $t9 4($sp)
+ li $t9 6
+ sw $t9 8($sp)
+ jal MT4.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+MT4.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ lw $t4 0($fp)
+ lw $t5 4($fp)
+ lw $t6 8($fp)
+ move $a0 $t1
+ jal _print
+ move $a0 $t2
+ jal _print
+ move $a0 $t3
+ jal _print
+ move $a0 $t4
+ jal _print
+ move $a0 $t5
+ jal _print
+ move $a0 $t6
+ jal _print
+ move $a0 $t0
+ move $a1 $t6
+ move $a2 $t5
+ move $a3 $t4
+ sw $t3 0($sp)
+ sw $t2 4($sp)
+ sw $t1 8($sp)
+ jal MT4.Change
+ move $t6 $v0
+ move $v0 $t6
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+MT4.Change:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ move $t2 $a3
+ lw $t3 0($fp)
+ lw $t4 4($fp)
+ lw $t5 8($fp)
+ move $a0 $t0
+ jal _print
+ move $a0 $t1
+ jal _print
+ move $a0 $t2
+ jal _print
+ move $a0 $t3
+ jal _print
+ move $a0 $t4
+ jal _print
+ move $a0 $t5
+ jal _print
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
diff --git a/base/MoreThan4.s b/base/MoreThan4.s
new file mode 100644
index 0000000..d04c1f5
--- /dev/null
+++ b/base/MoreThan4.s
@@ -0,0 +1,140 @@
+.data
+
+vmt_MT4:
+ MT4.Start
+ MT4.Change
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_MT4
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ li $a1 1
+ li $a2 2
+ li $a3 3
+ li $t9 4
+ sw $t9 0($sp)
+ li $t9 5
+ sw $t9 4($sp)
+ li $t9 6
+ sw $t9 8($sp)
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+MT4.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ move $t2 $a2
+ move $t3 $a3
+ lw $t4 0($fp)
+ lw $t5 4($fp)
+ lw $t6 8($fp)
+ move $a0 $t1
+ jal _print
+ move $a0 $t2
+ jal _print
+ move $a0 $t3
+ jal _print
+ move $a0 $t4
+ jal _print
+ move $a0 $t5
+ jal _print
+ move $a0 $t6
+ jal _print
+ lw $t7 0($t0)
+ lw $t7 4($t7)
+ move $a0 $t0
+ move $a1 $t6
+ move $a2 $t5
+ move $a3 $t4
+ sw $t3 0($sp)
+ sw $t2 4($sp)
+ sw $t1 8($sp)
+ jalr $t7
+ move $t7 $v0
+ move $v0 $t7
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+MT4.Change:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ move $t2 $a3
+ lw $t3 0($fp)
+ lw $t4 4($fp)
+ lw $t5 8($fp)
+ move $a0 $t0
+ jal _print
+ move $a0 $t1
+ jal _print
+ move $a0 $t2
+ jal _print
+ move $a0 $t3
+ jal _print
+ move $a0 $t4
+ jal _print
+ move $a0 $t5
+ jal _print
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/QuickSort.opt.s b/base/QuickSort.opt.s
new file mode 100644
index 0000000..69f7bda
--- /dev/null
+++ b/base/QuickSort.opt.s
@@ -0,0 +1,566 @@
+.data
+
+empty_QS:
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $t0 $v0
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $t0
+ li $a1 10
+ jal QS.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+QS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ move $a0 $s0
+ move $a1 $t0
+ jal QS.Init
+ move $a0 $s0
+ jal QS.Print
+ li $a0 9999
+ jal _print
+ lw $t0 4($s0)
+ subu $t0 $t0 1
+ move $a0 $s0
+ li $a1 0
+ move $a2 $t0
+ jal QS.Sort
+ move $a0 $s0
+ jal QS.Print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+QS.Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $t0 $a1
+ move $s1 $a2
+ li $t1 0
+ slt $t2 $t0 $s1
+ beqz $t2 if1_else
+ lw $t2 0($s0)
+ bnez $t2 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t3 0($t2)
+ sltu $t3 $s1 $t3
+ bnez $t3 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t3 $s1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ subu $s2 $t0 1
+ move $t2 $s1
+ li $t4 1
+while1_top:
+ beqz $t4 while1_end
+ li $t5 1
+while2_top:
+ beqz $t5 while2_end
+ addu $s2 $s2 1
+ lw $t6 0($s0)
+ bnez $t6 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t7 0($t6)
+ sltu $t7 $s2 $t7
+ bnez $t7 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t7 $s2 4
+ addu $t7 $t7 $t6
+ lw $t7 4($t7)
+ slt $t6 $t7 $t3
+ bnez $t6 if2_else
+ li $t5 0
+ j if2_end
+if2_else:
+ li $t5 1
+if2_end:
+ j while2_top
+while2_end:
+ li $t5 1
+while3_top:
+ beqz $t5 while3_end
+ subu $t2 $t2 1
+ lw $t6 0($s0)
+ bnez $t6 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t8 0($t6)
+ sltu $t8 $t2 $t8
+ bnez $t8 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t8 $t2 4
+ addu $t8 $t8 $t6
+ lw $t7 4($t8)
+ slt $t7 $t3 $t7
+ bnez $t7 if3_else
+ li $t5 0
+ j if3_end
+if3_else:
+ li $t5 1
+if3_end:
+ j while3_top
+while3_end:
+ lw $t5 0($s0)
+ bnez $t5 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t7 0($t5)
+ sltu $t7 $s2 $t7
+ bnez $t7 bounds4
+ la $a0 _str1
+ j _error
+bounds4:
+ mul $t7 $s2 4
+ addu $t7 $t7 $t5
+ lw $t1 4($t7)
+ lw $t7 0($s0)
+ bnez $t7 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t5 0($t7)
+ sltu $t5 $s2 $t5
+ bnez $t5 bounds5
+ la $a0 _str1
+ j _error
+bounds5:
+ mul $t5 $s2 4
+ addu $t5 $t5 $t7
+ lw $t7 0($s0)
+ bnez $t7 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t8 0($t7)
+ sltu $t8 $t2 $t8
+ bnez $t8 bounds6
+ la $a0 _str1
+ j _error
+bounds6:
+ mul $t8 $t2 4
+ addu $t8 $t8 $t7
+ lw $t8 4($t8)
+ sw $t8 4($t5)
+ lw $t8 0($s0)
+ bnez $t8 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t5 0($t8)
+ sltu $t5 $t2 $t5
+ bnez $t5 bounds7
+ la $a0 _str1
+ j _error
+bounds7:
+ mul $t5 $t2 4
+ addu $t5 $t5 $t8
+ sw $t1 4($t5)
+ addu $t5 $s2 1
+ slt $t5 $t2 $t5
+ beqz $t5 if4_else
+ li $t4 0
+ j if4_end
+if4_else:
+ li $t4 1
+if4_end:
+ j while1_top
+while1_end:
+ lw $t4 0($s0)
+ bnez $t4 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t3 0($t4)
+ sltu $t3 $t2 $t3
+ bnez $t3 bounds8
+ la $a0 _str1
+ j _error
+bounds8:
+ mul $t3 $t2 4
+ addu $t3 $t3 $t4
+ lw $t4 0($s0)
+ bnez $t4 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t2 0($t4)
+ sltu $t2 $s2 $t2
+ bnez $t2 bounds9
+ la $a0 _str1
+ j _error
+bounds9:
+ mul $t2 $s2 4
+ addu $t2 $t2 $t4
+ lw $t2 4($t2)
+ sw $t2 4($t3)
+ lw $t2 0($s0)
+ bnez $t2 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t3 0($t2)
+ sltu $t3 $s2 $t3
+ bnez $t3 bounds10
+ la $a0 _str1
+ j _error
+bounds10:
+ mul $t3 $s2 4
+ addu $t3 $t3 $t2
+ lw $t2 0($s0)
+ bnez $t2 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t4 0($t2)
+ sltu $t4 $s1 $t4
+ bnez $t4 bounds11
+ la $a0 _str1
+ j _error
+bounds11:
+ mul $t4 $s1 4
+ addu $t4 $t4 $t2
+ lw $t4 4($t4)
+ sw $t4 4($t3)
+ lw $t4 0($s0)
+ bnez $t4 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t3 0($t4)
+ sltu $t3 $s1 $t3
+ bnez $t3 bounds12
+ la $a0 _str1
+ j _error
+bounds12:
+ mul $t3 $s1 4
+ addu $t3 $t3 $t4
+ sw $t1 4($t3)
+ subu $t3 $s2 1
+ move $a0 $s0
+ move $a1 $t0
+ move $a2 $t3
+ jal QS.Sort
+ addu $t3 $s2 1
+ move $a0 $s0
+ move $a1 $t3
+ move $a2 $s1
+ jal QS.Sort
+ j if1_end
+if1_else:
+if1_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+QS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 0
+while4_top:
+ lw $t2 4($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while4_end
+ lw $t2 0($t0)
+ bnez $t2 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds13
+ la $a0 _str1
+ j _error
+bounds13:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while4_top
+while4_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+QS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 4($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 0($s0)
+ lw $t0 0($s0)
+ bnez $t0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($t0)
+ li $t9 0
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds14
+ la $a0 _str1
+ j _error
+bounds14:
+ li $t1 0
+ addu $t1 $t1 $t0
+ li $t9 20
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t0 0($t1)
+ li $t9 1
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds15
+ la $a0 _str1
+ j _error
+bounds15:
+ li $t0 4
+ addu $t0 $t0 $t1
+ li $t9 7
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($t0)
+ li $t9 2
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds16
+ la $a0 _str1
+ j _error
+bounds16:
+ li $t1 8
+ addu $t1 $t1 $t0
+ li $t9 12
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t0 0($t1)
+ li $t9 3
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds17
+ la $a0 _str1
+ j _error
+bounds17:
+ li $t0 12
+ addu $t0 $t0 $t1
+ li $t9 18
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null19
+ la $a0 _str0
+ j _error
+null19:
+ lw $t1 0($t0)
+ li $t9 4
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds18
+ la $a0 _str1
+ j _error
+bounds18:
+ li $t1 16
+ addu $t1 $t1 $t0
+ li $t9 2
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null20
+ la $a0 _str0
+ j _error
+null20:
+ lw $t0 0($t1)
+ li $t9 5
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds19
+ la $a0 _str1
+ j _error
+bounds19:
+ li $t0 20
+ addu $t0 $t0 $t1
+ li $t9 11
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null21
+ la $a0 _str0
+ j _error
+null21:
+ lw $t1 0($t0)
+ li $t9 6
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds20
+ la $a0 _str1
+ j _error
+bounds20:
+ li $t1 24
+ addu $t1 $t1 $t0
+ li $t9 6
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null22
+ la $a0 _str0
+ j _error
+null22:
+ lw $t0 0($t1)
+ li $t9 7
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds21
+ la $a0 _str1
+ j _error
+bounds21:
+ li $t0 28
+ addu $t0 $t0 $t1
+ li $t9 9
+ sw $t9 4($t0)
+ lw $t0 0($s0)
+ bnez $t0 null23
+ la $a0 _str0
+ j _error
+null23:
+ lw $t1 0($t0)
+ li $t9 8
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds22
+ la $a0 _str1
+ j _error
+bounds22:
+ li $t1 32
+ addu $t1 $t1 $t0
+ li $t9 19
+ sw $t9 4($t1)
+ lw $t1 0($s0)
+ bnez $t1 null24
+ la $a0 _str0
+ j _error
+null24:
+ lw $t0 0($t1)
+ li $t9 9
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds23
+ la $a0 _str1
+ j _error
+bounds23:
+ li $t0 36
+ addu $t0 $t0 $t1
+ li $t9 5
+ sw $t9 4($t0)
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/QuickSort.s b/base/QuickSort.s
new file mode 100644
index 0000000..26dfbcc
--- /dev/null
+++ b/base/QuickSort.s
@@ -0,0 +1,590 @@
+.data
+
+vmt_QS:
+ QS.Start
+ QS.Sort
+ QS.Print
+ QS.Init
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_QS
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ li $a1 10
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+QS.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ lw $t1 0($s0)
+ lw $t1 12($t1)
+ move $a0 $s0
+ move $a1 $t0
+ jalr $t1
+ lw $t1 0($s0)
+ lw $t1 8($t1)
+ move $a0 $s0
+ jalr $t1
+ li $a0 9999
+ jal _print
+ lw $t1 8($s0)
+ subu $t1 $t1 1
+ lw $t0 0($s0)
+ lw $t0 4($t0)
+ move $a0 $s0
+ li $a1 0
+ move $a2 $t1
+ jalr $t0
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ jalr $t0
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+QS.Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $t0 $a1
+ move $s1 $a2
+ li $t1 0
+ slt $t2 $t0 $s1
+ beqz $t2 if1_else
+ lw $t2 4($s0)
+ bnez $t2 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t3 0($t2)
+ sltu $t3 $s1 $t3
+ bnez $t3 bounds1
+ la $a0 _str1
+ j _error
+bounds1:
+ mul $t3 $s1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ subu $s2 $t0 1
+ move $t2 $s1
+ li $t4 1
+while1_top:
+ beqz $t4 while1_end
+ li $t5 1
+while2_top:
+ beqz $t5 while2_end
+ addu $s2 $s2 1
+ lw $t6 4($s0)
+ bnez $t6 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t7 0($t6)
+ sltu $t7 $s2 $t7
+ bnez $t7 bounds2
+ la $a0 _str1
+ j _error
+bounds2:
+ mul $t7 $s2 4
+ addu $t7 $t7 $t6
+ lw $t7 4($t7)
+ slt $t6 $t7 $t3
+ li $t9 1
+ subu $t6 $t9 $t6
+ beqz $t6 if2_else
+ li $t5 0
+ j if2_end
+if2_else:
+ li $t5 1
+if2_end:
+ j while2_top
+while2_end:
+ li $t5 1
+while3_top:
+ beqz $t5 while3_end
+ subu $t2 $t2 1
+ lw $t6 4($s0)
+ bnez $t6 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t8 0($t6)
+ sltu $t8 $t2 $t8
+ bnez $t8 bounds3
+ la $a0 _str1
+ j _error
+bounds3:
+ mul $t8 $t2 4
+ addu $t8 $t8 $t6
+ lw $t7 4($t8)
+ slt $t7 $t3 $t7
+ li $t9 1
+ subu $t7 $t9 $t7
+ beqz $t7 if3_else
+ li $t5 0
+ j if3_end
+if3_else:
+ li $t5 1
+if3_end:
+ j while3_top
+while3_end:
+ lw $t5 4($s0)
+ bnez $t5 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t7 0($t5)
+ sltu $t7 $s2 $t7
+ bnez $t7 bounds4
+ la $a0 _str1
+ j _error
+bounds4:
+ mul $t7 $s2 4
+ addu $t7 $t7 $t5
+ lw $t1 4($t7)
+ lw $t7 4($s0)
+ bnez $t7 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t5 0($t7)
+ sltu $t5 $s2 $t5
+ bnez $t5 bounds5
+ la $a0 _str1
+ j _error
+bounds5:
+ mul $t5 $s2 4
+ addu $t5 $t5 $t7
+ lw $t7 4($s0)
+ bnez $t7 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t8 0($t7)
+ sltu $t8 $t2 $t8
+ bnez $t8 bounds6
+ la $a0 _str1
+ j _error
+bounds6:
+ mul $t8 $t2 4
+ addu $t8 $t8 $t7
+ lw $t8 4($t8)
+ sw $t8 4($t5)
+ lw $t8 4($s0)
+ bnez $t8 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t5 0($t8)
+ sltu $t5 $t2 $t5
+ bnez $t5 bounds7
+ la $a0 _str1
+ j _error
+bounds7:
+ mul $t5 $t2 4
+ addu $t5 $t5 $t8
+ sw $t1 4($t5)
+ addu $t5 $s2 1
+ slt $t5 $t2 $t5
+ beqz $t5 if4_else
+ li $t4 0
+ j if4_end
+if4_else:
+ li $t4 1
+if4_end:
+ j while1_top
+while1_end:
+ lw $t4 4($s0)
+ bnez $t4 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t3 0($t4)
+ sltu $t3 $t2 $t3
+ bnez $t3 bounds8
+ la $a0 _str1
+ j _error
+bounds8:
+ mul $t3 $t2 4
+ addu $t3 $t3 $t4
+ lw $t4 4($s0)
+ bnez $t4 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t2 0($t4)
+ sltu $t2 $s2 $t2
+ bnez $t2 bounds9
+ la $a0 _str1
+ j _error
+bounds9:
+ mul $t2 $s2 4
+ addu $t2 $t2 $t4
+ lw $t2 4($t2)
+ sw $t2 4($t3)
+ lw $t2 4($s0)
+ bnez $t2 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t3 0($t2)
+ sltu $t3 $s2 $t3
+ bnez $t3 bounds10
+ la $a0 _str1
+ j _error
+bounds10:
+ mul $t3 $s2 4
+ addu $t3 $t3 $t2
+ lw $t2 4($s0)
+ bnez $t2 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t4 0($t2)
+ sltu $t4 $s1 $t4
+ bnez $t4 bounds11
+ la $a0 _str1
+ j _error
+bounds11:
+ mul $t4 $s1 4
+ addu $t4 $t4 $t2
+ lw $t4 4($t4)
+ sw $t4 4($t3)
+ lw $t4 4($s0)
+ bnez $t4 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t3 0($t4)
+ sltu $t3 $s1 $t3
+ bnez $t3 bounds12
+ la $a0 _str1
+ j _error
+bounds12:
+ mul $t3 $s1 4
+ addu $t3 $t3 $t4
+ sw $t1 4($t3)
+ lw $t3 0($s0)
+ lw $t3 4($t3)
+ subu $t1 $s2 1
+ move $a0 $s0
+ move $a1 $t0
+ move $a2 $t1
+ jalr $t3
+ lw $t1 0($s0)
+ lw $t1 4($t1)
+ addu $t3 $s2 1
+ move $a0 $s0
+ move $a1 $t3
+ move $a2 $s1
+ jalr $t1
+ j if1_end
+if1_else:
+if1_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+QS.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ li $t1 0
+while4_top:
+ lw $t2 8($t0)
+ slt $t2 $t1 $t2
+ beqz $t2 while4_end
+ lw $t2 4($t0)
+ bnez $t2 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t3 0($t2)
+ sltu $t3 $t1 $t3
+ bnez $t3 bounds13
+ la $a0 _str1
+ j _error
+bounds13:
+ mul $t3 $t1 4
+ addu $t3 $t3 $t2
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ addu $t1 $t1 1
+ j while4_top
+while4_end:
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+QS.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ move $s0 $a0
+ move $t0 $a1
+ sw $t0 8($s0)
+ move $a0 $t0
+ jal AllocArray
+ move $t0 $v0
+ sw $t0 4($s0)
+ lw $t0 4($s0)
+ bnez $t0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($t0)
+ li $t9 0
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds14
+ la $a0 _str1
+ j _error
+bounds14:
+ li $t1 0
+ addu $t1 $t1 $t0
+ li $t9 20
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t0 0($t1)
+ li $t9 1
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds15
+ la $a0 _str1
+ j _error
+bounds15:
+ li $t0 4
+ addu $t0 $t0 $t1
+ li $t9 7
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($t0)
+ li $t9 2
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds16
+ la $a0 _str1
+ j _error
+bounds16:
+ li $t1 8
+ addu $t1 $t1 $t0
+ li $t9 12
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t0 0($t1)
+ li $t9 3
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds17
+ la $a0 _str1
+ j _error
+bounds17:
+ li $t0 12
+ addu $t0 $t0 $t1
+ li $t9 18
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null19
+ la $a0 _str0
+ j _error
+null19:
+ lw $t1 0($t0)
+ li $t9 4
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds18
+ la $a0 _str1
+ j _error
+bounds18:
+ li $t1 16
+ addu $t1 $t1 $t0
+ li $t9 2
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null20
+ la $a0 _str0
+ j _error
+null20:
+ lw $t0 0($t1)
+ li $t9 5
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds19
+ la $a0 _str1
+ j _error
+bounds19:
+ li $t0 20
+ addu $t0 $t0 $t1
+ li $t9 11
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null21
+ la $a0 _str0
+ j _error
+null21:
+ lw $t1 0($t0)
+ li $t9 6
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds20
+ la $a0 _str1
+ j _error
+bounds20:
+ li $t1 24
+ addu $t1 $t1 $t0
+ li $t9 6
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null22
+ la $a0 _str0
+ j _error
+null22:
+ lw $t0 0($t1)
+ li $t9 7
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds21
+ la $a0 _str1
+ j _error
+bounds21:
+ li $t0 28
+ addu $t0 $t0 $t1
+ li $t9 9
+ sw $t9 4($t0)
+ lw $t0 4($s0)
+ bnez $t0 null23
+ la $a0 _str0
+ j _error
+null23:
+ lw $t1 0($t0)
+ li $t9 8
+ sltu $t1 $t9 $t1
+ bnez $t1 bounds22
+ la $a0 _str1
+ j _error
+bounds22:
+ li $t1 32
+ addu $t1 $t1 $t0
+ li $t9 19
+ sw $t9 4($t1)
+ lw $t1 4($s0)
+ bnez $t1 null24
+ la $a0 _str0
+ j _error
+null24:
+ lw $t0 0($t1)
+ li $t9 9
+ sltu $t0 $t9 $t0
+ bnez $t0 bounds23
+ la $a0 _str1
+ j _error
+bounds23:
+ li $t0 36
+ addu $t0 $t0 $t1
+ li $t9 5
+ sw $t9 4($t0)
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal _heapAlloc
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
+_str1: .asciiz "array index out of bounds\n"
diff --git a/base/TreeVisitor.opt.s b/base/TreeVisitor.opt.s
new file mode 100644
index 0000000..df5024b
--- /dev/null
+++ b/base/TreeVisitor.opt.s
@@ -0,0 +1,1258 @@
+.data
+
+empty_TV:
+
+empty_Tree:
+
+vmt_Visitor:
+ Visitor.visit
+
+vmt_MyVisitor:
+ MyVisitor.visit
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ la $a0 empty_TV
+ jal TV.Start
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+TV.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ li $a0 24
+ jal _heapAlloc
+ move $s0 $v0
+ bnez $s0 null1
+ la $a0 _str0
+ j _error
+null1:
+ move $a0 $s0
+ li $a1 16
+ jal Tree.Init
+ bnez $s0 null2
+ la $a0 _str0
+ j _error
+null2:
+ move $a0 $s0
+ jal Tree.Print
+ li $a0 100000000
+ jal _print
+ bnez $s0 null3
+ la $a0 _str0
+ j _error
+null3:
+ move $a0 $s0
+ li $a1 8
+ jal Tree.Insert
+ bnez $s0 null4
+ la $a0 _str0
+ j _error
+null4:
+ move $a0 $s0
+ li $a1 24
+ jal Tree.Insert
+ bnez $s0 null5
+ la $a0 _str0
+ j _error
+null5:
+ move $a0 $s0
+ li $a1 4
+ jal Tree.Insert
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Insert
+ bnez $s0 null7
+ la $a0 _str0
+ j _error
+null7:
+ move $a0 $s0
+ li $a1 20
+ jal Tree.Insert
+ bnez $s0 null8
+ la $a0 _str0
+ j _error
+null8:
+ move $a0 $s0
+ li $a1 28
+ jal Tree.Insert
+ bnez $s0 null9
+ la $a0 _str0
+ j _error
+null9:
+ move $a0 $s0
+ li $a1 14
+ jal Tree.Insert
+ bnez $s0 null10
+ la $a0 _str0
+ j _error
+null10:
+ move $a0 $s0
+ jal Tree.Print
+ li $a0 100000000
+ jal _print
+ li $a0 12
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_MyVisitor
+ sw $t9 0($t0)
+ move $t0 $t0
+ li $a0 50000000
+ jal _print
+ bnez $s0 null11
+ la $a0 _str0
+ j _error
+null11:
+ move $a0 $s0
+ move $a1 $t0
+ jal Tree.accept
+ li $a0 100000000
+ jal _print
+ bnez $s0 null12
+ la $a0 _str0
+ j _error
+null12:
+ move $a0 $s0
+ li $a1 24
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null13
+ la $a0 _str0
+ j _error
+null13:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null14
+ la $a0 _str0
+ j _error
+null14:
+ move $a0 $s0
+ li $a1 16
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null15
+ la $a0 _str0
+ j _error
+null15:
+ move $a0 $s0
+ li $a1 50
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null16
+ la $a0 _str0
+ j _error
+null16:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s0 null17
+ la $a0 _str0
+ j _error
+null17:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Delete
+ bnez $s0 null18
+ la $a0 _str0
+ j _error
+null18:
+ move $a0 $s0
+ jal Tree.Print
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ move $a0 $s0
+ li $a1 12
+ jal Tree.Search
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+Tree.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ sw $0 12($t0)
+ sw $0 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 0($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 0($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 16($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if1_else
+ li $t1 0
+ j if1_end
+if1_else:
+ slt $t2 $t0 $t2
+ bnez $t2 if2_else
+ li $t1 0
+ j if2_end
+if2_else:
+ li $t1 1
+if2_end:
+if1_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $a0 24
+ jal _heapAlloc
+ move $s2 $v0
+ bnez $s2 null20
+ la $a0 _str0
+ j _error
+null20:
+ move $a0 $s2
+ move $a1 $s1
+ jal Tree.Init
+ move $s0 $s0
+ li $s3 1
+while1_top:
+ beqz $s3 while1_end
+ bnez $s0 null21
+ la $a0 _str0
+ j _error
+null21:
+ move $a0 $s0
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t0 $s1 $t0
+ beqz $t0 if3_else
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ move $a0 $s0
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if4_else
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ move $a0 $s0
+ jal Tree.GetLeft
+ move $s0 $v0
+ j if4_end
+if4_else:
+ li $s3 0
+ bnez $s0 null24
+ la $a0 _str0
+ j _error
+null24:
+ move $a0 $s0
+ li $a1 1
+ jal Tree.SetHas_Left
+ bnez $s0 null25
+ la $a0 _str0
+ j _error
+null25:
+ move $a0 $s0
+ move $a1 $s2
+ jal Tree.SetLeft
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ move $a0 $s0
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if5_else
+ bnez $s0 null27
+ la $a0 _str0
+ j _error
+null27:
+ move $a0 $s0
+ jal Tree.GetRight
+ move $s0 $v0
+ j if5_end
+if5_else:
+ li $s3 0
+ bnez $s0 null28
+ la $a0 _str0
+ j _error
+null28:
+ move $a0 $s0
+ li $a1 1
+ jal Tree.SetHas_Right
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ move $a0 $s0
+ move $a1 $s2
+ jal Tree.SetRight
+if5_end:
+if3_end:
+ j while1_top
+while1_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 36
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ sw $s4 16($sp)
+ sw $s5 20($sp)
+ sw $s6 24($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $s0
+ move $s3 $s0
+ li $s4 1
+ li $s5 0
+ li $s6 1
+while2_top:
+ beqz $s4 while2_end
+ bnez $s2 null30
+ la $a0 _str0
+ j _error
+null30:
+ move $a0 $s2
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t1 $s1 $t0
+ beqz $t1 if6_else
+ bnez $s2 null31
+ la $a0 _str0
+ j _error
+null31:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t1 $v0
+ beqz $t1 if7_else
+ move $s3 $s2
+ bnez $s2 null32
+ la $a0 _str0
+ j _error
+null32:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $s2 $v0
+ j if7_end
+if7_else:
+ li $s4 0
+if7_end:
+ j if6_end
+if6_else:
+ slt $t0 $t0 $s1
+ beqz $t0 if8_else
+ bnez $s2 null33
+ la $a0 _str0
+ j _error
+null33:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if9_else
+ move $s3 $s2
+ bnez $s2 null34
+ la $a0 _str0
+ j _error
+null34:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $s2 $v0
+ j if9_end
+if9_else:
+ li $s4 0
+if9_end:
+ j if8_end
+if8_else:
+ beqz $s6 if10_else
+ bnez $s2 null35
+ la $a0 _str0
+ j _error
+null35:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ bnez $t0 if11_else
+ bnez $s2 null36
+ la $a0 _str0
+ j _error
+null36:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ bnez $t0 if11_else
+ j if11_end
+if11_else:
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jal Tree.Remove
+if11_end:
+ j if10_end
+if10_else:
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jal Tree.Remove
+if10_end:
+ li $s5 1
+ li $s4 0
+if8_end:
+if6_end:
+ li $s6 0
+ j while2_top
+while2_end:
+ move $v0 $s5
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $s4 16($sp)
+ lw $s5 20($sp)
+ lw $s6 24($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 36
+ jr $ra
+
+Tree.Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+ bnez $s2 null37
+ la $a0 _str0
+ j _error
+null37:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if12_else
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jal Tree.RemoveLeft
+ j if12_end
+if12_else:
+ bnez $s2 null38
+ la $a0 _str0
+ j _error
+null38:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if13_else
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jal Tree.RemoveRight
+ j if13_end
+if13_else:
+ bnez $s2 null39
+ la $a0 _str0
+ j _error
+null39:
+ move $a0 $s2
+ jal Tree.GetKey
+ move $s2 $v0
+ bnez $s1 null40
+ la $a0 _str0
+ j _error
+null40:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ bnez $t0 null41
+ la $a0 _str0
+ j _error
+null41:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $s2
+ move $a2 $t0
+ jal Tree.Compare
+ move $t0 $v0
+ beqz $t0 if14_else
+ bnez $s1 null42
+ la $a0 _str0
+ j _error
+null42:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetLeft
+ bnez $s1 null43
+ la $a0 _str0
+ j _error
+null43:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Left
+ j if14_end
+if14_else:
+ bnez $s1 null44
+ la $a0 _str0
+ j _error
+null44:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetRight
+ bnez $s1 null45
+ la $a0 _str0
+ j _error
+null45:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Right
+if14_end:
+if13_end:
+if12_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while3_top:
+ bnez $s2 null46
+ la $a0 _str0
+ j _error
+null46:
+ move $a0 $s2
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 while3_end
+ bnez $s2 null47
+ la $a0 _str0
+ j _error
+null47:
+ bnez $s2 null48
+ la $a0 _str0
+ j _error
+null48:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $t0 $v0
+ bnez $t0 null49
+ la $a0 _str0
+ j _error
+null49:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s2
+ move $a1 $t0
+ jal Tree.SetKey
+ move $s1 $s2
+ bnez $s2 null50
+ la $a0 _str0
+ j _error
+null50:
+ move $a0 $s2
+ jal Tree.GetRight
+ move $s2 $v0
+ j while3_top
+while3_end:
+ bnez $s1 null51
+ la $a0 _str0
+ j _error
+null51:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetRight
+ bnez $s1 null52
+ la $a0 _str0
+ j _error
+null52:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Right
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while4_top:
+ bnez $s2 null53
+ la $a0 _str0
+ j _error
+null53:
+ move $a0 $s2
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 while4_end
+ bnez $s2 null54
+ la $a0 _str0
+ j _error
+null54:
+ bnez $s2 null55
+ la $a0 _str0
+ j _error
+null55:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $t0 $v0
+ bnez $t0 null56
+ la $a0 _str0
+ j _error
+null56:
+ move $a0 $t0
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $s2
+ move $a1 $t0
+ jal Tree.SetKey
+ move $s1 $s2
+ bnez $s2 null57
+ la $a0 _str0
+ j _error
+null57:
+ move $a0 $s2
+ jal Tree.GetLeft
+ move $s2 $v0
+ j while4_top
+while4_end:
+ bnez $s1 null58
+ la $a0 _str0
+ j _error
+null58:
+ lw $t0 20($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jal Tree.SetLeft
+ bnez $s1 null59
+ la $a0 _str0
+ j _error
+null59:
+ move $a0 $s1
+ li $a1 0
+ jal Tree.SetHas_Left
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 1
+ li $s3 0
+while5_top:
+ beqz $s2 while5_end
+ bnez $s1 null60
+ la $a0 _str0
+ j _error
+null60:
+ move $a0 $s1
+ jal Tree.GetKey
+ move $t0 $v0
+ slt $t1 $s0 $t0
+ beqz $t1 if15_else
+ bnez $s1 null61
+ la $a0 _str0
+ j _error
+null61:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t1 $v0
+ beqz $t1 if16_else
+ bnez $s1 null62
+ la $a0 _str0
+ j _error
+null62:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $s1 $v0
+ j if16_end
+if16_else:
+ li $s2 0
+if16_end:
+ j if15_end
+if15_else:
+ slt $t0 $t0 $s0
+ beqz $t0 if17_else
+ bnez $s1 null63
+ la $a0 _str0
+ j _error
+null63:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if18_else
+ bnez $s1 null64
+ la $a0 _str0
+ j _error
+null64:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $s1 $v0
+ j if18_end
+if18_else:
+ li $s2 0
+if18_end:
+ j if17_end
+if17_else:
+ li $s3 1
+ li $s2 0
+if17_end:
+if15_end:
+ j while5_top
+while5_end:
+ move $v0 $s3
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $t0
+ move $a0 $t0
+ move $a1 $t1
+ jal Tree.RecPrint
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null65
+ la $a0 _str0
+ j _error
+null65:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if19_else
+ bnez $s1 null66
+ la $a0 _str0
+ j _error
+null66:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jal Tree.RecPrint
+ j if19_end
+if19_else:
+if19_end:
+ bnez $s1 null67
+ la $a0 _str0
+ j _error
+null67:
+ move $a0 $s1
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s1 null68
+ la $a0 _str0
+ j _error
+null68:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if20_else
+ bnez $s1 null69
+ la $a0 _str0
+ j _error
+null69:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jal Tree.RecPrint
+ j if20_end
+if20_else:
+if20_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+Tree.accept:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ li $a0 333
+ jal _print
+ bnez $t1 null70
+ la $a0 _str0
+ j _error
+null70:
+ lw $t2 0($t1)
+ lw $t2 0($t2)
+ move $a0 $t1
+ move $a1 $t0
+ jalr $t2
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Visitor.visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null71
+ la $a0 _str0
+ j _error
+null71:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if21_else
+ bnez $s1 null72
+ la $a0 _str0
+ j _error
+null72:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $t0 $v0
+ sw $t0 8($s0)
+ lw $t0 8($s0)
+ bnez $t0 null73
+ la $a0 _str0
+ j _error
+null73:
+ move $a0 $t0
+ move $a1 $s0
+ jal Tree.accept
+ j if21_end
+if21_else:
+if21_end:
+ bnez $s1 null74
+ la $a0 _str0
+ j _error
+null74:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if22_else
+ bnez $s1 null75
+ la $a0 _str0
+ j _error
+null75:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ sw $t0 4($s0)
+ lw $t0 4($s0)
+ bnez $t0 null76
+ la $a0 _str0
+ j _error
+null76:
+ move $a0 $t0
+ move $a1 $s0
+ jal Tree.accept
+ j if22_end
+if22_else:
+if22_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+MyVisitor.visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null77
+ la $a0 _str0
+ j _error
+null77:
+ move $a0 $s1
+ jal Tree.GetHas_Right
+ move $t0 $v0
+ beqz $t0 if23_else
+ bnez $s1 null78
+ la $a0 _str0
+ j _error
+null78:
+ move $a0 $s1
+ jal Tree.GetRight
+ move $t0 $v0
+ sw $t0 8($s0)
+ lw $t0 8($s0)
+ bnez $t0 null79
+ la $a0 _str0
+ j _error
+null79:
+ move $a0 $t0
+ move $a1 $s0
+ jal Tree.accept
+ j if23_end
+if23_else:
+if23_end:
+ bnez $s1 null80
+ la $a0 _str0
+ j _error
+null80:
+ move $a0 $s1
+ jal Tree.GetKey
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s1 null81
+ la $a0 _str0
+ j _error
+null81:
+ move $a0 $s1
+ jal Tree.GetHas_Left
+ move $t0 $v0
+ beqz $t0 if24_else
+ bnez $s1 null82
+ la $a0 _str0
+ j _error
+null82:
+ move $a0 $s1
+ jal Tree.GetLeft
+ move $t0 $v0
+ sw $t0 4($s0)
+ lw $t0 4($s0)
+ bnez $t0 null83
+ la $a0 _str0
+ j _error
+null83:
+ move $a0 $t0
+ move $a1 $s0
+ jal Tree.accept
+ j if24_end
+if24_else:
+if24_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/base/TreeVisitor.s b/base/TreeVisitor.s
new file mode 100644
index 0000000..9ef1916
--- /dev/null
+++ b/base/TreeVisitor.s
@@ -0,0 +1,1493 @@
+.data
+
+vmt_TV:
+ TV.Start
+
+vmt_Tree:
+ Tree.Init
+ Tree.SetRight
+ Tree.SetLeft
+ Tree.GetRight
+ Tree.GetLeft
+ Tree.GetKey
+ Tree.SetKey
+ Tree.GetHas_Right
+ Tree.GetHas_Left
+ Tree.SetHas_Left
+ Tree.SetHas_Right
+ Tree.Compare
+ Tree.Insert
+ Tree.Delete
+ Tree.Remove
+ Tree.RemoveRight
+ Tree.RemoveLeft
+ Tree.Search
+ Tree.Print
+ Tree.RecPrint
+ Tree.accept
+
+vmt_Visitor:
+ Visitor.visit
+
+vmt_MyVisitor:
+ MyVisitor.visit
+
+.text
+
+ jal Main
+ li $v0 10
+ syscall
+
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_TV
+ sw $t9 0($t0)
+ bnez $t0 null1
+ la $a0 _str0
+ j _error
+null1:
+ lw $t1 0($t0)
+ lw $t1 0($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+TV.Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 12
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ li $a0 28
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Tree
+ sw $t9 0($t0)
+ move $s0 $t0
+ bnez $s0 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t0 0($s0)
+ lw $t0 0($t0)
+ move $a0 $s0
+ li $a1 16
+ jalr $t0
+ bnez $s0 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 100000000
+ jal _print
+ bnez $s0 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 8
+ jalr $t0
+ bnez $s0 null5
+ la $a0 _str0
+ j _error
+null5:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 24
+ jalr $t0
+ bnez $s0 null6
+ la $a0 _str0
+ j _error
+null6:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 4
+ jalr $t0
+ bnez $s0 null7
+ la $a0 _str0
+ j _error
+null7:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 12
+ jalr $t0
+ bnez $s0 null8
+ la $a0 _str0
+ j _error
+null8:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 20
+ jalr $t0
+ bnez $s0 null9
+ la $a0 _str0
+ j _error
+null9:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 28
+ jalr $t0
+ bnez $s0 null10
+ la $a0 _str0
+ j _error
+null10:
+ lw $t0 0($s0)
+ lw $t0 48($t0)
+ move $a0 $s0
+ li $a1 14
+ jalr $t0
+ bnez $s0 null11
+ la $a0 _str0
+ j _error
+null11:
+ lw $t0 0($s0)
+ lw $t0 72($t0)
+ move $a0 $s0
+ jalr $t0
+ li $a0 100000000
+ jal _print
+ li $a0 12
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_MyVisitor
+ sw $t9 0($t0)
+ move $t0 $t0
+ li $a0 50000000
+ jal _print
+ bnez $s0 null12
+ la $a0 _str0
+ j _error
+null12:
+ lw $t1 0($s0)
+ lw $t1 80($t1)
+ move $a0 $s0
+ move $a1 $t0
+ jalr $t1
+ li $a0 100000000
+ jal _print
+ bnez $s0 null13
+ la $a0 _str0
+ j _error
+null13:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 24
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null14
+ la $a0 _str0
+ j _error
+null14:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 12
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null15
+ la $a0 _str0
+ j _error
+null15:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 16
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null16
+ la $a0 _str0
+ j _error
+null16:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 50
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null17
+ la $a0 _str0
+ j _error
+null17:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 12
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s0 null18
+ la $a0 _str0
+ j _error
+null18:
+ lw $t1 0($s0)
+ lw $t1 52($t1)
+ move $a0 $s0
+ li $a1 12
+ jalr $t1
+ bnez $s0 null19
+ la $a0 _str0
+ j _error
+null19:
+ lw $t1 0($s0)
+ lw $t1 72($t1)
+ move $a0 $s0
+ jalr $t1
+ bnez $s0 null20
+ la $a0 _str0
+ j _error
+null20:
+ lw $t1 0($s0)
+ lw $t1 68($t1)
+ move $a0 $s0
+ li $a1 12
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ li $v0 0
+ lw $s0 0($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 12
+ jr $ra
+
+Tree.Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ sw $0 16($t0)
+ sw $0 20($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 8($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 4($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 8($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 4($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 12($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 12($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 20($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ lw $t0 16($t0)
+ move $v0 $t0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 16($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ sw $t1 20($t0)
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a1
+ move $t1 $a2
+ addu $t2 $t1 1
+ slt $t1 $t0 $t1
+ beqz $t1 if1_else
+ li $t1 0
+ j if1_end
+if1_else:
+ slt $t2 $t0 $t2
+ li $t9 1
+ subu $t2 $t9 $t2
+ beqz $t2 if2_else
+ li $t1 0
+ j if2_end
+if2_else:
+ li $t1 1
+if2_end:
+if1_end:
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ li $a0 28
+ jal _heapAlloc
+ move $t0 $v0
+ la $t9 vmt_Tree
+ sw $t9 0($t0)
+ move $s2 $t0
+ bnez $s2 null21
+ la $a0 _str0
+ j _error
+null21:
+ lw $t0 0($s2)
+ lw $t0 0($t0)
+ move $a0 $s2
+ move $a1 $s1
+ jalr $t0
+ move $s0 $s0
+ li $s3 1
+while1_top:
+ beqz $s3 while1_end
+ bnez $s0 null22
+ la $a0 _str0
+ j _error
+null22:
+ lw $t0 0($s0)
+ lw $t0 20($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ slt $t0 $s1 $t0
+ beqz $t0 if3_else
+ bnez $s0 null23
+ la $a0 _str0
+ j _error
+null23:
+ lw $t0 0($s0)
+ lw $t0 32($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if4_else
+ bnez $s0 null24
+ la $a0 _str0
+ j _error
+null24:
+ lw $t0 0($s0)
+ lw $t0 16($t0)
+ move $a0 $s0
+ jalr $t0
+ move $s0 $v0
+ j if4_end
+if4_else:
+ li $s3 0
+ bnez $s0 null25
+ la $a0 _str0
+ j _error
+null25:
+ lw $t0 0($s0)
+ lw $t0 36($t0)
+ move $a0 $s0
+ li $a1 1
+ jalr $t0
+ bnez $s0 null26
+ la $a0 _str0
+ j _error
+null26:
+ lw $t0 0($s0)
+ lw $t0 8($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+if4_end:
+ j if3_end
+if3_else:
+ bnez $s0 null27
+ la $a0 _str0
+ j _error
+null27:
+ lw $t0 0($s0)
+ lw $t0 28($t0)
+ move $a0 $s0
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if5_else
+ bnez $s0 null28
+ la $a0 _str0
+ j _error
+null28:
+ lw $t0 0($s0)
+ lw $t0 12($t0)
+ move $a0 $s0
+ jalr $t0
+ move $s0 $v0
+ j if5_end
+if5_else:
+ li $s3 0
+ bnez $s0 null29
+ la $a0 _str0
+ j _error
+null29:
+ lw $t0 0($s0)
+ lw $t0 40($t0)
+ move $a0 $s0
+ li $a1 1
+ jalr $t0
+ bnez $s0 null30
+ la $a0 _str0
+ j _error
+null30:
+ lw $t0 0($s0)
+ lw $t0 4($t0)
+ move $a0 $s0
+ move $a1 $s2
+ jalr $t0
+if5_end:
+if3_end:
+ j while1_top
+while1_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 36
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ sw $s4 16($sp)
+ sw $s5 20($sp)
+ sw $s6 24($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $s0
+ move $s3 $s0
+ li $s4 1
+ li $s5 0
+ li $s6 1
+while2_top:
+ beqz $s4 while2_end
+ bnez $s2 null31
+ la $a0 _str0
+ j _error
+null31:
+ lw $t0 0($s2)
+ lw $t0 20($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ slt $t1 $s1 $t0
+ beqz $t1 if6_else
+ bnez $s2 null32
+ la $a0 _str0
+ j _error
+null32:
+ lw $t1 0($s2)
+ lw $t1 32($t1)
+ move $a0 $s2
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if7_else
+ move $s3 $s2
+ bnez $s2 null33
+ la $a0 _str0
+ j _error
+null33:
+ lw $t1 0($s2)
+ lw $t1 16($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j if7_end
+if7_else:
+ li $s4 0
+if7_end:
+ j if6_end
+if6_else:
+ slt $t0 $t0 $s1
+ beqz $t0 if8_else
+ bnez $s2 null34
+ la $a0 _str0
+ j _error
+null34:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if9_else
+ move $s3 $s2
+ bnez $s2 null35
+ la $a0 _str0
+ j _error
+null35:
+ lw $t0 0($s2)
+ lw $t0 12($t0)
+ move $a0 $s2
+ jalr $t0
+ move $s2 $v0
+ j if9_end
+if9_else:
+ li $s4 0
+if9_end:
+ j if8_end
+if8_else:
+ beqz $s6 if10_else
+ bnez $s2 null36
+ la $a0 _str0
+ j _error
+null36:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ beqz $t0 ss1_else
+ bnez $s2 null37
+ la $a0 _str0
+ j _error
+null37:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ li $t9 1
+ subu $t0 $t9 $t0
+ j ss1_end
+ss1_else:
+ li $t0 0
+ss1_end:
+ beqz $t0 if11_else
+ j if11_end
+if11_else:
+ lw $t0 0($s0)
+ lw $t0 56($t0)
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jalr $t0
+if11_end:
+ j if10_end
+if10_else:
+ lw $t0 0($s0)
+ lw $t0 56($t0)
+ move $a0 $s0
+ move $a1 $s3
+ move $a2 $s2
+ jalr $t0
+if10_end:
+ li $s5 1
+ li $s4 0
+if8_end:
+if6_end:
+ li $s6 0
+ j while2_top
+while2_end:
+ move $v0 $s5
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $s4 16($sp)
+ lw $s5 20($sp)
+ lw $s6 24($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 36
+ jr $ra
+
+Tree.Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+ bnez $s2 null38
+ la $a0 _str0
+ j _error
+null38:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if12_else
+ lw $t0 0($s0)
+ lw $t0 64($t0)
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jalr $t0
+ j if12_end
+if12_else:
+ bnez $s2 null39
+ la $a0 _str0
+ j _error
+null39:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if13_else
+ lw $t0 0($s0)
+ lw $t0 60($t0)
+ move $a0 $s0
+ move $a1 $s1
+ move $a2 $s2
+ jalr $t0
+ j if13_end
+if13_else:
+ bnez $s2 null40
+ la $a0 _str0
+ j _error
+null40:
+ lw $t0 0($s2)
+ lw $t0 20($t0)
+ move $a0 $s2
+ jalr $t0
+ move $s2 $v0
+ bnez $s1 null41
+ la $a0 _str0
+ j _error
+null41:
+ lw $t0 0($s1)
+ lw $t0 16($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null42
+ la $a0 _str0
+ j _error
+null42:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ lw $t0 0($s0)
+ lw $t0 44($t0)
+ move $a0 $s0
+ move $a1 $s2
+ move $a2 $t1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if14_else
+ bnez $s1 null43
+ la $a0 _str0
+ j _error
+null43:
+ lw $t0 0($s1)
+ lw $t0 8($t0)
+ lw $t1 24($s0)
+ move $a0 $s1
+ move $a1 $t1
+ jalr $t0
+ bnez $s1 null44
+ la $a0 _str0
+ j _error
+null44:
+ lw $t1 0($s1)
+ lw $t1 36($t1)
+ move $a0 $s1
+ li $a1 0
+ jalr $t1
+ j if14_end
+if14_else:
+ bnez $s1 null45
+ la $a0 _str0
+ j _error
+null45:
+ lw $t1 0($s1)
+ lw $t1 4($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null46
+ la $a0 _str0
+ j _error
+null46:
+ lw $t0 0($s1)
+ lw $t0 40($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+if14_end:
+if13_end:
+if12_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while3_top:
+ bnez $s2 null47
+ la $a0 _str0
+ j _error
+null47:
+ lw $t0 0($s2)
+ lw $t0 28($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 while3_end
+ bnez $s2 null48
+ la $a0 _str0
+ j _error
+null48:
+ lw $s3 0($s2)
+ lw $s3 24($s3)
+ bnez $s2 null49
+ la $a0 _str0
+ j _error
+null49:
+ lw $t0 0($s2)
+ lw $t0 12($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null50
+ la $a0 _str0
+ j _error
+null50:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $s2
+ move $a1 $t1
+ jalr $s3
+ move $s1 $s2
+ bnez $s2 null51
+ la $a0 _str0
+ j _error
+null51:
+ lw $t1 0($s2)
+ lw $t1 12($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j while3_top
+while3_end:
+ bnez $s1 null52
+ la $a0 _str0
+ j _error
+null52:
+ lw $t1 0($s1)
+ lw $t1 4($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null53
+ la $a0 _str0
+ j _error
+null53:
+ lw $t0 0($s1)
+ lw $t0 40($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $s0 $a0
+ move $s1 $a1
+ move $s2 $a2
+while4_top:
+ bnez $s2 null54
+ la $a0 _str0
+ j _error
+null54:
+ lw $t0 0($s2)
+ lw $t0 32($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 while4_end
+ bnez $s2 null55
+ la $a0 _str0
+ j _error
+null55:
+ lw $s3 0($s2)
+ lw $s3 24($s3)
+ bnez $s2 null56
+ la $a0 _str0
+ j _error
+null56:
+ lw $t0 0($s2)
+ lw $t0 16($t0)
+ move $a0 $s2
+ jalr $t0
+ move $t0 $v0
+ bnez $t0 null57
+ la $a0 _str0
+ j _error
+null57:
+ lw $t1 0($t0)
+ lw $t1 20($t1)
+ move $a0 $t0
+ jalr $t1
+ move $t1 $v0
+ move $a0 $s2
+ move $a1 $t1
+ jalr $s3
+ move $s1 $s2
+ bnez $s2 null58
+ la $a0 _str0
+ j _error
+null58:
+ lw $t1 0($s2)
+ lw $t1 16($t1)
+ move $a0 $s2
+ jalr $t1
+ move $s2 $v0
+ j while4_top
+while4_end:
+ bnez $s1 null59
+ la $a0 _str0
+ j _error
+null59:
+ lw $t1 0($s1)
+ lw $t1 8($t1)
+ lw $t0 24($s0)
+ move $a0 $s1
+ move $a1 $t0
+ jalr $t1
+ bnez $s1 null60
+ la $a0 _str0
+ j _error
+null60:
+ lw $t0 0($s1)
+ lw $t0 36($t0)
+ move $a0 $s1
+ li $a1 0
+ jalr $t0
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 24
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ sw $s3 12($sp)
+ move $t0 $a0
+ move $s0 $a1
+ move $s1 $t0
+ li $s2 1
+ li $s3 0
+while5_top:
+ beqz $s2 while5_end
+ bnez $s1 null61
+ la $a0 _str0
+ j _error
+null61:
+ lw $t0 0($s1)
+ lw $t0 20($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ slt $t1 $s0 $t0
+ beqz $t1 if15_else
+ bnez $s1 null62
+ la $a0 _str0
+ j _error
+null62:
+ lw $t1 0($s1)
+ lw $t1 32($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if16_else
+ bnez $s1 null63
+ la $a0 _str0
+ j _error
+null63:
+ lw $t1 0($s1)
+ lw $t1 16($t1)
+ move $a0 $s1
+ jalr $t1
+ move $s1 $v0
+ j if16_end
+if16_else:
+ li $s2 0
+if16_end:
+ j if15_end
+if15_else:
+ slt $t0 $t0 $s0
+ beqz $t0 if17_else
+ bnez $s1 null64
+ la $a0 _str0
+ j _error
+null64:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if18_else
+ bnez $s1 null65
+ la $a0 _str0
+ j _error
+null65:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $s1 $v0
+ j if18_end
+if18_else:
+ li $s2 0
+if18_end:
+ j if17_end
+if17_else:
+ li $s3 1
+ li $s2 0
+if17_end:
+if15_end:
+ j while5_top
+while5_end:
+ move $v0 $s3
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $s3 12($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 24
+ jr $ra
+
+Tree.Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $t0
+ lw $t2 0($t0)
+ lw $t2 76($t2)
+ move $a0 $t0
+ move $a1 $t1
+ jalr $t2
+ li $v0 1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Tree.RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 20
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ sw $s2 8($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null66
+ la $a0 _str0
+ j _error
+null66:
+ lw $t0 0($s1)
+ lw $t0 32($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if19_else
+ lw $s2 0($s0)
+ lw $s2 76($s2)
+ bnez $s1 null67
+ la $a0 _str0
+ j _error
+null67:
+ lw $t0 0($s1)
+ lw $t0 16($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jalr $s2
+ j if19_end
+if19_else:
+if19_end:
+ bnez $s1 null68
+ la $a0 _str0
+ j _error
+null68:
+ lw $t0 0($s1)
+ lw $t0 20($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $t0
+ jal _print
+ bnez $s1 null69
+ la $a0 _str0
+ j _error
+null69:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if20_else
+ lw $s2 0($s0)
+ lw $s2 76($s2)
+ bnez $s1 null70
+ la $a0 _str0
+ j _error
+null70:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ move $a0 $s0
+ move $a1 $t0
+ jalr $s2
+ j if20_end
+if20_else:
+if20_end:
+ li $v0 1
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $s2 8($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 20
+ jr $ra
+
+Tree.accept:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ move $t1 $a1
+ li $a0 333
+ jal _print
+ bnez $t1 null71
+ la $a0 _str0
+ j _error
+null71:
+ lw $t2 0($t1)
+ lw $t2 0($t2)
+ move $a0 $t1
+ move $a1 $t0
+ jalr $t2
+ li $v0 0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+Visitor.visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null72
+ la $a0 _str0
+ j _error
+null72:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if21_else
+ bnez $s1 null73
+ la $a0 _str0
+ j _error
+null73:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ sw $t0 8($s0)
+ lw $t0 8($s0)
+ bnez $t0 null74
+ la $a0 _str0
+ j _error
+null74:
+ lw $t1 0($t0)
+ lw $t1 80($t1)
+ move $a0 $t0
+ move $a1 $s0
+ jalr $t1
+ j if21_end
+if21_else:
+if21_end:
+ bnez $s1 null75
+ la $a0 _str0
+ j _error
+null75:
+ lw $t1 0($s1)
+ lw $t1 32($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if22_else
+ bnez $s1 null76
+ la $a0 _str0
+ j _error
+null76:
+ lw $t1 0($s1)
+ lw $t1 16($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ sw $t1 4($s0)
+ lw $t1 4($s0)
+ bnez $t1 null77
+ la $a0 _str0
+ j _error
+null77:
+ lw $t0 0($t1)
+ lw $t0 80($t0)
+ move $a0 $t1
+ move $a1 $s0
+ jalr $t0
+ j if22_end
+if22_else:
+if22_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+MyVisitor.visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 0($sp)
+ sw $s1 4($sp)
+ move $s0 $a0
+ move $s1 $a1
+ bnez $s1 null78
+ la $a0 _str0
+ j _error
+null78:
+ lw $t0 0($s1)
+ lw $t0 28($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ beqz $t0 if23_else
+ bnez $s1 null79
+ la $a0 _str0
+ j _error
+null79:
+ lw $t0 0($s1)
+ lw $t0 12($t0)
+ move $a0 $s1
+ jalr $t0
+ move $t0 $v0
+ sw $t0 8($s0)
+ lw $t0 8($s0)
+ bnez $t0 null80
+ la $a0 _str0
+ j _error
+null80:
+ lw $t1 0($t0)
+ lw $t1 80($t1)
+ move $a0 $t0
+ move $a1 $s0
+ jalr $t1
+ j if23_end
+if23_else:
+if23_end:
+ bnez $s1 null81
+ la $a0 _str0
+ j _error
+null81:
+ lw $t1 0($s1)
+ lw $t1 20($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ move $a0 $t1
+ jal _print
+ bnez $s1 null82
+ la $a0 _str0
+ j _error
+null82:
+ lw $t1 0($s1)
+ lw $t1 32($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ beqz $t1 if24_else
+ bnez $s1 null83
+ la $a0 _str0
+ j _error
+null83:
+ lw $t1 0($s1)
+ lw $t1 16($t1)
+ move $a0 $s1
+ jalr $t1
+ move $t1 $v0
+ sw $t1 4($s0)
+ lw $t1 4($s0)
+ bnez $t1 null84
+ la $a0 _str0
+ j _error
+null84:
+ lw $t0 0($t1)
+ lw $t0 80($t0)
+ move $a0 $t1
+ move $a1 $s0
+ jalr $t0
+ j if24_end
+if24_else:
+if24_end:
+ li $v0 0
+ lw $s0 0($sp)
+ lw $s1 4($sp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/condense/CondenseVisitor.java b/condense/CondenseVisitor.java
index b6233b2..fd337d9 100644
--- a/condense/CondenseVisitor.java
+++ b/condense/CondenseVisitor.java
@@ -8,17 +8,23 @@ import java.util.regex.*;
public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{
- ArrayList<String> vaporm;
ArrayList<String> mips;
StackHelper curr;
- public CondenseVisitor(VaporProgram vp, ArrayList<String> vaporm) {
- this.vaporm = vaporm;
- this.mips = new ArrayList<String>();
+ public CondenseVisitor(VaporProgram vp) {
+ this.mips = new ArrayList<>();
// preamble
this.mips.add(0, ".data");
+
+ MinimalLogger.info("Adding data segments...");
+ for (VDataSegment d : vp.dataSegments) {
+ this.addMIPS(d.ident + ":");
+ for (VOperand.Static s : d.values)
+ this.addMIPS(String.format(" %s",
+ s.toString().substring(1)));
+ }
this.addMIPS(".text");
this.addMIPS("jal Main");
this.addMIPS("li $v0 10");
@@ -47,12 +53,6 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{
this.addMIPS(((VCodeLabel) n).ident + ":");
}
- // epilogue
- this.addMIPS(" lw $ra -4($fp)");
- this.addMIPS(" lw $fp -8($fp)");
- this.addMIPS(String.format(" addu $sp $sp %d",
- this.curr.getFrameSize()));
- this.addMIPS(" jr $ra");
}
this.addMIPS("_print:");
@@ -141,7 +141,7 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{
n.getClass().getSimpleName(),
n.sourcePos.toString()));
///////////////////////////////////////////////////////////////
- this.addMIPS(String.format(" jal %s",
+ this.addMIPS(String.format(" jalr $%s",
n.addr.toString().substring(1)));
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<-%s (%s)",
@@ -184,9 +184,9 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{
else if (op.equals("Lt"))
;
else if (op.equals("LtS"))
- ret += " slti";
+ ret += " slt";
else if (op.equals("PrintIntS")) {
- ret += " jal _print";
+ this.addMIPS(" jal _print");
done = true;
}
else if (op.equals("HeapAllocZ")) {
@@ -307,6 +307,10 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{
n.getClass().getSimpleName(),
n.sourcePos.toString()));
///////////////////////////////////////////////////////////////
+ this.addMIPS(" lw $ra -4($fp)");
+ this.addMIPS(" lw $fp -8($fp)");
+ this.addMIPS(String.format(" addu $sp $sp %d",
+ this.curr.getFrameSize()));
this.addMIPS(" jr $ra");
///////////////////////////////////////////////////////////////
MinimalLogger.info(String.format("<-%s (%s)",
diff --git a/output/BinaryTree.s b/output/BinaryTree.s
new file mode 100644
index 0000000..aa95920
--- /dev/null
+++ b/output/BinaryTree.s
@@ -0,0 +1,3806 @@
+.data
+functable_BT:
+ BT_Start
+functable_Tree:
+ Tree_Init
+ Tree_SetRight
+ Tree_SetLeft
+ Tree_GetRight
+ Tree_GetLeft
+ Tree_GetKey
+ Tree_SetKey
+ Tree_GetHas_Right
+ Tree_GetHas_Left
+ Tree_SetHas_Left
+ Tree_SetHas_Right
+ Tree_Compare
+ Tree_Insert
+ Tree_Delete
+ Tree_Remove
+ Tree_RemoveRight
+ Tree_RemoveLeft
+ Tree_Search
+ Tree_Print
+ Tree_RecPrint
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_BT
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+BT_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ li $a0 104
+ jal _heapAlloc
+ move $s6 $v0
+ la $t9 functable_Tree
+ sw $t9 0($s6)
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 16
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s5 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s6 $s5
+ li $s5 100000000
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 8
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ li $s5 24
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s5 0($s4)
+ li $s4 4
+ move $s3 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s4 0($s3)
+ li $s3 12
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ li $s5 20
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s5 0($s4)
+ li $s4 28
+ move $s3 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s4 0($s3)
+ li $s3 14
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ li $s3 24
+ move $s4 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s4 $s3
+ move $s3 $s4
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s4 0($s3)
+ li $s3 12
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s3 $s5
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ li $s3 16
+ move $s4 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s4 $s3
+ move $s3 $s4
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s4 0($s3)
+ li $s3 50
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s3 $s5
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ li $s3 12
+ move $s4 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s4 $s3
+ move $s3 $s4
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s4 0($s3)
+ li $s3 12
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s6 0($s3)
+ li $s3 12
+ move $s5 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s3 $s5
+ move $a0 $s3
+ jal _print
+ li $s3 0
+ move $s5 $s3
+ move $s3 $s5
+ move $v0 $s3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 0
+ move $s7 $s6
+ sw $s7 0($s5)
+ li $s7 0
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ li $s4 0
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s7
+ li $s3 1
+ move $a0 $s5
+ move $t9 $s3
+ add $s2 $a0 $t9
+ move $s3 $s2
+ move $s2 $s3
+ move $s3 $s6
+ move $s5 $s7
+ move $a0 $s3
+ move $t9 $s5
+ slt $s7 $a0 $t9
+ move $s5 $s7
+ move $s7 $s5
+ beqz $s7 if202_else
+if202_body:
+ li $s7 0
+ move $s5 $s7
+ move $s4 $s5
+ j if202_end
+if202_else:
+ move $s5 $s6
+ move $s6 $s2
+ move $a0 $s5
+ move $t9 $s6
+ slt $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ move $a0 $s6
+ li $t9 0
+NULL $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ beqz $s6 if209_else
+if209_body:
+ li $s6 0
+ move $s2 $s6
+ move $s4 $s2
+ j if209_end
+if209_else:
+ li $s2 1
+ move $s6 $s2
+ move $s4 $s6
+if209_end:
+if202_end:
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 292
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $a0 104
+ jal _heapAlloc
+ move $s5 $v0
+ la $t9 functable_Tree
+ sw $t9 0($s5)
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s5
+ lw $s5 0($s4)
+ lw $s3 0($s5)
+ move $s5 $s7
+ move $s2 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s2
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s2 $s5
+ move $s5 $s2
+ move $s2 $s6
+ move $s6 $s2
+ move $s2 $s6
+ li $s6 1
+ move $s3 $s6
+ move $s6 $s3
+while240_test:
+ move $s3 $s6
+ lw $t0 -224($fp)
+ move $t0 $s3
+ sw $t0 -224($fp)
+ lw $t0 -240($fp)
+ lw $t1 -224($fp)
+ move $t0 $t1
+ sw $t1 -224($fp)
+ sw $t0 -240($fp)
+ lw $t0 -240($fp)
+ beqz $t0 while240_end
+ sw $t0 -240($fp)
+while240_body:
+ lw $t0 -208($fp)
+ move $t0 $s2
+ sw $t0 -208($fp)
+ lw $t0 -208($fp)
+ move $s2 $t0
+ sw $t0 -208($fp)
+ lw $t0 -220($fp)
+ lw $t0 0($s2)
+ sw $t0 -220($fp)
+ lw $t0 -216($fp)
+ lw $t1 -220($fp)
+ lw $t0 0($t1)
+ sw $t1 -220($fp)
+ sw $t0 -216($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -216($fp)
+ lw $t1 -216($fp)
+ jalr $t1
+ sw $t1 -216($fp)
+ sw $t0 -216($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -212($fp)
+ move $t0 $v0
+ sw $t0 -212($fp)
+ lw $t0 -188($fp)
+ lw $t1 -212($fp)
+ move $t0 $t1
+ sw $t1 -212($fp)
+ sw $t0 -188($fp)
+ lw $t0 -236($fp)
+ lw $t1 -188($fp)
+ move $t0 $t1
+ sw $t1 -188($fp)
+ sw $t0 -236($fp)
+ lw $t0 -120($fp)
+ move $t0 $s7
+ sw $t0 -120($fp)
+ lw $t0 -160($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -160($fp)
+ lw $t0 -184($fp)
+ lw $t1 -120($fp)
+ lw $t2 -160($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -160($fp)
+ sw $t1 -120($fp)
+ sw $t0 -184($fp)
+ lw $t0 -152($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -152($fp)
+ lw $t0 -176($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if249_else
+ sw $t0 -176($fp)
+if249_body:
+ lw $t0 -136($fp)
+ move $t0 $s2
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ move $s2 $t0
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t0 0($s2)
+ sw $t0 -132($fp)
+ lw $t0 -148($fp)
+ lw $t1 -132($fp)
+ lw $t0 0($t1)
+ sw $t1 -132($fp)
+ sw $t0 -148($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -148($fp)
+ lw $t1 -148($fp)
+ jalr $t1
+ sw $t1 -148($fp)
+ sw $t0 -148($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -168($fp)
+ move $t0 $v0
+ sw $t0 -168($fp)
+ lw $t0 -144($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -144($fp)
+ lw $t0 -112($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ beqz $t0 if254_else
+ sw $t0 -112($fp)
+if254_body:
+ move $t7 $s2
+ move $s2 $t7
+ lw $t0 -96($fp)
+ lw $t0 0($s2)
+ sw $t0 -96($fp)
+ lw $t0 -88($fp)
+ lw $t1 -96($fp)
+ lw $t0 0($t1)
+ sw $t1 -96($fp)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -88($fp)
+ lw $t1 -88($fp)
+ jalr $t1
+ sw $t1 -88($fp)
+ sw $t0 -88($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t5 $v0
+ lw $t0 -108($fp)
+ move $t0 $t5
+ sw $t0 -108($fp)
+ lw $t0 -108($fp)
+ move $s2 $t0
+ sw $t0 -108($fp)
+ j if254_end
+if254_else:
+ lw $t0 -104($fp)
+ li $t0 0
+ sw $t0 -104($fp)
+ lw $t0 -76($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -76($fp)
+ lw $t0 -76($fp)
+ move $s6 $t0
+ sw $t0 -76($fp)
+ lw $t0 -84($fp)
+ move $t0 $s2
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $s2 $t0
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t0 0($s2)
+ sw $t0 -80($fp)
+ lw $t0 -248($fp)
+ lw $t1 -80($fp)
+ lw $t0 0($t1)
+ sw $t1 -80($fp)
+ sw $t0 -248($fp)
+ lw $t0 -256($fp)
+ li $t0 1
+ sw $t0 -256($fp)
+ lw $t0 -252($fp)
+ lw $t1 -256($fp)
+ move $t0 $t1
+ sw $t1 -256($fp)
+ sw $t0 -252($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -252($fp)
+ move $a1 $t0
+ sw $t0 -252($fp)
+ lw $t0 -248($fp)
+ lw $t1 -248($fp)
+ jalr $t1
+ sw $t1 -248($fp)
+ sw $t0 -248($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -72($fp)
+ move $t0 $v0
+ sw $t0 -72($fp)
+ lw $t0 -276($fp)
+ lw $t1 -72($fp)
+ move $t0 $t1
+ sw $t1 -72($fp)
+ sw $t0 -276($fp)
+ lw $t0 -276($fp)
+ move $s5 $t0
+ sw $t0 -276($fp)
+ lw $t0 -284($fp)
+ move $t0 $s2
+ sw $t0 -284($fp)
+ lw $t0 -284($fp)
+ move $s2 $t0
+ sw $t0 -284($fp)
+ lw $t0 -280($fp)
+ lw $t0 0($s2)
+ sw $t0 -280($fp)
+ lw $t0 -264($fp)
+ lw $t1 -280($fp)
+ lw $t0 0($t1)
+ sw $t1 -280($fp)
+ sw $t0 -264($fp)
+ lw $t0 -260($fp)
+ move $t0 $s4
+ sw $t0 -260($fp)
+ lw $t0 -268($fp)
+ lw $t1 -260($fp)
+ move $t0 $t1
+ sw $t1 -260($fp)
+ sw $t0 -268($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -268($fp)
+ move $a1 $t0
+ sw $t0 -268($fp)
+ lw $t0 -264($fp)
+ lw $t1 -264($fp)
+ jalr $t1
+ sw $t1 -264($fp)
+ sw $t0 -264($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -272($fp)
+ move $t0 $v0
+ sw $t0 -272($fp)
+ lw $t0 -196($fp)
+ lw $t1 -272($fp)
+ move $t0 $t1
+ sw $t1 -272($fp)
+ sw $t0 -196($fp)
+ lw $t0 -196($fp)
+ move $s5 $t0
+ sw $t0 -196($fp)
+if254_end:
+ j if249_end
+if249_else:
+ lw $t0 -204($fp)
+ move $t0 $s2
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ move $s2 $t0
+ sw $t0 -204($fp)
+ lw $t0 -200($fp)
+ lw $t0 0($s2)
+ sw $t0 -200($fp)
+ lw $t0 -232($fp)
+ lw $t1 -200($fp)
+ lw $t0 0($t1)
+ sw $t1 -200($fp)
+ sw $t0 -232($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -232($fp)
+ lw $t1 -232($fp)
+ jalr $t1
+ sw $t1 -232($fp)
+ sw $t0 -232($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -192($fp)
+ move $t0 $v0
+ sw $t0 -192($fp)
+ lw $t0 -228($fp)
+ lw $t1 -192($fp)
+ move $t0 $t1
+ sw $t1 -192($fp)
+ sw $t0 -228($fp)
+ lw $t0 -244($fp)
+ lw $t1 -228($fp)
+ move $t0 $t1
+ sw $t1 -228($fp)
+ sw $t0 -244($fp)
+ lw $t0 -244($fp)
+ beqz $t0 if281_else
+ sw $t0 -244($fp)
+if281_body:
+ move $t3 $s2
+ move $s2 $t3
+ lw $t3 0($s2)
+ lw $t4 0($t3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $t4 $t3
+ move $s2 $t4
+ j if281_end
+if281_else:
+ lw $t0 -116($fp)
+ li $t0 0
+ sw $t0 -116($fp)
+ lw $t0 -128($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ move $s6 $t0
+ sw $t0 -128($fp)
+ lw $t0 -164($fp)
+ move $t0 $s2
+ sw $t0 -164($fp)
+ lw $t0 -164($fp)
+ move $s2 $t0
+ sw $t0 -164($fp)
+ lw $t0 -156($fp)
+ lw $t0 0($s2)
+ sw $t0 -156($fp)
+ lw $t0 -180($fp)
+ lw $t1 -156($fp)
+ lw $t0 0($t1)
+ sw $t1 -156($fp)
+ sw $t0 -180($fp)
+ lw $t0 -172($fp)
+ li $t0 1
+ sw $t0 -172($fp)
+ lw $t0 -140($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -140($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -140($fp)
+ move $a1 $t0
+ sw $t0 -140($fp)
+ lw $t0 -180($fp)
+ lw $t1 -180($fp)
+ jalr $t1
+ sw $t1 -180($fp)
+ sw $t0 -180($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -124($fp)
+ move $t0 $v0
+ sw $t0 -124($fp)
+ lw $t0 -68($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ move $s0 $s2
+ move $s2 $s0
+ lw $s1 0($s2)
+ lw $t0 -292($fp)
+ lw $t0 0($s1)
+ sw $t0 -292($fp)
+ move $t6 $s4
+ lw $t0 -100($fp)
+ move $t0 $t6
+ sw $t0 -100($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -100($fp)
+ move $a1 $t0
+ sw $t0 -100($fp)
+ lw $t0 -292($fp)
+ lw $t1 -292($fp)
+ jalr $t1
+ sw $t1 -292($fp)
+ sw $t0 -292($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -288($fp)
+ move $t0 $v0
+ sw $t0 -288($fp)
+ lw $t0 -92($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s5 $t0
+ sw $t0 -92($fp)
+if281_end:
+if249_end:
+ j while240_test
+while240_end:
+ li $t5 1
+ move $t6 $t5
+ move $t5 $t6
+ move $v0 $t5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 292
+ jr $ra
+Tree_Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 388
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s6
+ move $s3 $s4
+ move $s4 $s3
+ li $s3 1
+ move $s2 $s3
+ move $s3 $s2
+ li $s2 0
+ move $s1 $s2
+ lw $t0 -68($fp)
+ move $t0 $s1
+ sw $t0 -68($fp)
+ li $s1 1
+ move $s0 $s1
+ move $s1 $s0
+while321_test:
+ move $s0 $s3
+ lw $t0 -304($fp)
+ move $t0 $s0
+ sw $t0 -304($fp)
+ lw $t0 -308($fp)
+ lw $t1 -304($fp)
+ move $t0 $t1
+ sw $t1 -304($fp)
+ sw $t0 -308($fp)
+ lw $t0 -308($fp)
+ beqz $t0 while321_end
+ sw $t0 -308($fp)
+while321_body:
+ lw $t0 -300($fp)
+ move $t0 $s5
+ sw $t0 -300($fp)
+ lw $t0 -300($fp)
+ move $s5 $t0
+ sw $t0 -300($fp)
+ lw $t0 -296($fp)
+ lw $t0 0($s5)
+ sw $t0 -296($fp)
+ lw $t0 -276($fp)
+ lw $t1 -296($fp)
+ lw $t0 0($t1)
+ sw $t1 -296($fp)
+ sw $t0 -276($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -276($fp)
+ lw $t1 -276($fp)
+ jalr $t1
+ sw $t1 -276($fp)
+ sw $t0 -276($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -288($fp)
+ move $t0 $v0
+ sw $t0 -288($fp)
+ lw $t0 -272($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -272($fp)
+ lw $t0 -292($fp)
+ lw $t1 -272($fp)
+ move $t0 $t1
+ sw $t1 -272($fp)
+ sw $t0 -292($fp)
+ lw $t0 -280($fp)
+ move $t0 $s7
+ sw $t0 -280($fp)
+ lw $t0 -168($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -168($fp)
+ lw $t0 -284($fp)
+ lw $t1 -280($fp)
+ lw $t2 -168($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -168($fp)
+ sw $t1 -280($fp)
+ sw $t0 -284($fp)
+ lw $t0 -164($fp)
+ lw $t1 -284($fp)
+ move $t0 $t1
+ sw $t1 -284($fp)
+ sw $t0 -164($fp)
+ lw $t0 -128($fp)
+ lw $t1 -164($fp)
+ move $t0 $t1
+ sw $t1 -164($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ beqz $t0 if330_else
+ sw $t0 -128($fp)
+if330_body:
+ lw $t0 -148($fp)
+ move $t0 $s5
+ sw $t0 -148($fp)
+ lw $t0 -148($fp)
+ move $s5 $t0
+ sw $t0 -148($fp)
+ lw $t0 -160($fp)
+ lw $t0 0($s5)
+ sw $t0 -160($fp)
+ lw $t0 -156($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -156($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -156($fp)
+ lw $t1 -156($fp)
+ jalr $t1
+ sw $t1 -156($fp)
+ sw $t0 -156($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -152($fp)
+ move $t0 $v0
+ sw $t0 -152($fp)
+ lw $t0 -136($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 if335_else
+ sw $t0 -132($fp)
+if335_body:
+ lw $t0 -144($fp)
+ move $t0 $s5
+ sw $t0 -144($fp)
+ lw $t0 -140($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s4 $t0
+ sw $t0 -140($fp)
+ lw $t0 -388($fp)
+ move $t0 $s5
+ sw $t0 -388($fp)
+ lw $t0 -388($fp)
+ move $s5 $t0
+ sw $t0 -388($fp)
+ lw $t5 0($s5)
+ lw $t0 -108($fp)
+ lw $t0 0($t5)
+ sw $t0 -108($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -108($fp)
+ lw $t1 -108($fp)
+ jalr $t1
+ sw $t1 -108($fp)
+ sw $t0 -108($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -124($fp)
+ move $t0 $v0
+ sw $t0 -124($fp)
+ lw $t0 -104($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -104($fp)
+ lw $t0 -104($fp)
+ move $s5 $t0
+ sw $t0 -104($fp)
+ j if335_end
+if335_else:
+ lw $t0 -116($fp)
+ li $t0 0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ move $s3 $t0
+ sw $t0 -112($fp)
+if335_end:
+ j if330_end
+if330_else:
+ lw $t0 -88($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -88($fp)
+ lw $t0 -100($fp)
+ move $t0 $s7
+ sw $t0 -100($fp)
+ lw $t0 -92($fp)
+ lw $t1 -88($fp)
+ lw $t2 -100($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -100($fp)
+ sw $t1 -88($fp)
+ sw $t0 -92($fp)
+ lw $t0 -96($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -96($fp)
+ lw $t0 -188($fp)
+ lw $t1 -96($fp)
+ move $t0 $t1
+ sw $t1 -96($fp)
+ sw $t0 -188($fp)
+ lw $t0 -188($fp)
+ beqz $t0 if350_else
+ sw $t0 -188($fp)
+if350_body:
+ move $s2 $s5
+ move $s5 $s2
+ lw $s2 0($s5)
+ lw $t3 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $t3 $s2
+ move $s2 $t3
+ beqz $s2 if355_else
+if355_body:
+ move $s2 $s5
+ move $t3 $s2
+ move $s4 $t3
+ move $t3 $s5
+ move $s5 $t3
+ lw $t3 0($s5)
+ lw $s2 0($t3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s2 $t3
+ move $s5 $s2
+ j if355_end
+if355_else:
+ li $s2 0
+ move $t3 $s2
+ move $s3 $t3
+if355_end:
+ j if350_end
+if350_else:
+ lw $t0 -184($fp)
+ move $t0 $s1
+ sw $t0 -184($fp)
+ lw $t0 -180($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -180($fp)
+ lw $t0 -176($fp)
+ lw $t1 -180($fp)
+ move $t0 $t1
+ sw $t1 -180($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if370_else
+ sw $t0 -176($fp)
+if370_body:
+ lw $t0 -232($fp)
+ move $t0 $s5
+ sw $t0 -232($fp)
+ lw $t0 -232($fp)
+ move $s5 $t0
+ sw $t0 -232($fp)
+ lw $t0 -244($fp)
+ lw $t0 0($s5)
+ sw $t0 -244($fp)
+ lw $t0 -240($fp)
+ lw $t1 -244($fp)
+ lw $t0 0($t1)
+ sw $t1 -244($fp)
+ sw $t0 -240($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -240($fp)
+ lw $t1 -240($fp)
+ jalr $t1
+ sw $t1 -240($fp)
+ sw $t0 -240($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -236($fp)
+ move $t0 $v0
+ sw $t0 -236($fp)
+ lw $t0 -260($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -260($fp)
+ lw $t0 -248($fp)
+ lw $t1 -260($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -260($fp)
+ sw $t0 -248($fp)
+ lw $t0 -256($fp)
+ lw $t1 -248($fp)
+ move $t0 $t1
+ sw $t1 -248($fp)
+ sw $t0 -256($fp)
+ lw $t0 -268($fp)
+ lw $t1 -256($fp)
+ move $t0 $t1
+ sw $t1 -256($fp)
+ sw $t0 -268($fp)
+ lw $t0 -264($fp)
+ lw $t1 -268($fp)
+ move $t0 $t1
+ sw $t1 -268($fp)
+ sw $t0 -264($fp)
+ lw $t0 -208($fp)
+ move $t0 $s5
+ sw $t0 -208($fp)
+ lw $t0 -208($fp)
+ move $s5 $t0
+ sw $t0 -208($fp)
+ lw $t0 -196($fp)
+ lw $t0 0($s5)
+ sw $t0 -196($fp)
+ lw $t0 -192($fp)
+ lw $t1 -196($fp)
+ lw $t0 0($t1)
+ sw $t1 -196($fp)
+ sw $t0 -192($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -192($fp)
+ lw $t1 -192($fp)
+ jalr $t1
+ sw $t1 -192($fp)
+ sw $t0 -192($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -212($fp)
+ move $t0 $v0
+ sw $t0 -212($fp)
+ lw $t0 -204($fp)
+ lw $t1 -212($fp)
+ move $t0 $t1
+ sw $t1 -212($fp)
+ sw $t0 -204($fp)
+ lw $t0 -252($fp)
+ lw $t1 -204($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -204($fp)
+ sw $t0 -252($fp)
+ lw $t0 -200($fp)
+ lw $t1 -252($fp)
+ move $t0 $t1
+ sw $t1 -252($fp)
+ sw $t0 -200($fp)
+ lw $t0 -220($fp)
+ lw $t1 -200($fp)
+ move $t0 $t1
+ sw $t1 -200($fp)
+ sw $t0 -220($fp)
+ lw $t0 -216($fp)
+ lw $t1 -220($fp)
+ move $t0 $t1
+ sw $t1 -220($fp)
+ sw $t0 -216($fp)
+ lw $t0 -228($fp)
+ lw $t1 -264($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -264($fp)
+ sw $t0 -228($fp)
+ lw $t0 -224($fp)
+ lw $t1 -216($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -216($fp)
+ sw $t0 -224($fp)
+ lw $t0 -172($fp)
+ lw $t1 -228($fp)
+ lw $t2 -224($fp)
+ move $a0 $t1
+ move $t9 $t2
+NULL $t0 $a0 $t9
+ sw $t2 -224($fp)
+ sw $t1 -228($fp)
+ sw $t0 -172($fp)
+ lw $t0 -348($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -348($fp)
+ lw $t0 -356($fp)
+ lw $t1 -348($fp)
+ move $t0 $t1
+ sw $t1 -348($fp)
+ sw $t0 -356($fp)
+ lw $t0 -356($fp)
+ beqz $t0 if373_else
+ sw $t0 -356($fp)
+if373_body:
+ lw $t0 -324($fp)
+ li $t0 1
+ sw $t0 -324($fp)
+ lw $t0 -316($fp)
+ lw $t1 -324($fp)
+ move $t0 $t1
+ sw $t1 -324($fp)
+ sw $t0 -316($fp)
+ lw $t0 -352($fp)
+ lw $t1 -316($fp)
+ move $t0 $t1
+ sw $t1 -316($fp)
+ sw $t0 -352($fp)
+ j if373_end
+if373_else:
+ lw $t0 -332($fp)
+ move $t0 $s6
+ sw $t0 -332($fp)
+ lw $t0 -364($fp)
+ lw $t0 0($s6)
+ sw $t0 -364($fp)
+ lw $t0 -360($fp)
+ move $t0 $s4
+ sw $t0 -360($fp)
+ lw $t0 -376($fp)
+ lw $t1 -360($fp)
+ move $t0 $t1
+ sw $t1 -360($fp)
+ sw $t0 -376($fp)
+ lw $t0 -120($fp)
+ move $t0 $s5
+ sw $t0 -120($fp)
+ lw $t0 -120($fp)
+ move $t7 $t0
+ sw $t0 -120($fp)
+ lw $t0 -364($fp)
+ lw $t1 -364($fp)
+ lw $t0 0($t1)
+ sw $t1 -364($fp)
+ sw $t0 -364($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ lw $t0 -376($fp)
+ move $a1 $t0
+ sw $t0 -376($fp)
+ move $a2 $t7
+ lw $t0 -364($fp)
+ lw $t1 -364($fp)
+ jalr $t1
+ sw $t1 -364($fp)
+ sw $t0 -364($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -340($fp)
+ move $t0 $v0
+ sw $t0 -340($fp)
+ lw $t0 -340($fp)
+ move $t6 $t0
+ sw $t0 -340($fp)
+ lw $t0 -352($fp)
+ move $t0 $t6
+ sw $t0 -352($fp)
+if373_end:
+ j if370_end
+if370_else:
+ lw $t0 -384($fp)
+ move $t0 $s6
+ sw $t0 -384($fp)
+ lw $t0 -72($fp)
+ lw $t0 0($s6)
+ sw $t0 -72($fp)
+ lw $t0 -76($fp)
+ move $t0 $s4
+ sw $t0 -76($fp)
+ lw $t0 -80($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -80($fp)
+ lw $t0 -84($fp)
+ move $t0 $s5
+ sw $t0 -84($fp)
+ lw $t0 -380($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -380($fp)
+ lw $t0 -72($fp)
+ lw $t1 -72($fp)
+ lw $t0 0($t1)
+ sw $t1 -72($fp)
+ sw $t0 -72($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ lw $t0 -80($fp)
+ move $a1 $t0
+ sw $t0 -80($fp)
+ lw $t0 -380($fp)
+ move $a2 $t0
+ sw $t0 -380($fp)
+ lw $t0 -72($fp)
+ lw $t1 -72($fp)
+ jalr $t1
+ sw $t1 -72($fp)
+ sw $t0 -72($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t4 $v0
+ lw $t0 -368($fp)
+ move $t0 $t4
+ sw $t0 -368($fp)
+ lw $t0 -352($fp)
+ lw $t1 -368($fp)
+ move $t0 $t1
+ sw $t1 -368($fp)
+ sw $t0 -352($fp)
+if370_end:
+ lw $t0 -372($fp)
+ li $t0 1
+ sw $t0 -372($fp)
+ lw $t0 -312($fp)
+ lw $t1 -372($fp)
+ move $t0 $t1
+ sw $t1 -372($fp)
+ sw $t0 -312($fp)
+ lw $t0 -68($fp)
+ lw $t1 -312($fp)
+ move $t0 $t1
+ sw $t1 -312($fp)
+ sw $t0 -68($fp)
+ lw $t0 -320($fp)
+ li $t0 0
+ sw $t0 -320($fp)
+ lw $t0 -328($fp)
+ lw $t1 -320($fp)
+ move $t0 $t1
+ sw $t1 -320($fp)
+ sw $t0 -328($fp)
+ lw $t0 -328($fp)
+ move $s3 $t0
+ sw $t0 -328($fp)
+if350_end:
+if330_end:
+ lw $t0 -336($fp)
+ li $t0 0
+ sw $t0 -336($fp)
+ lw $t0 -344($fp)
+ lw $t1 -336($fp)
+ move $t0 $t1
+ sw $t1 -336($fp)
+ sw $t0 -344($fp)
+ lw $t0 -344($fp)
+ move $s1 $t0
+ sw $t0 -344($fp)
+ j while321_test
+while321_end:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ move $t5 $t4
+ move $t4 $t5
+ move $v0 $t4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 388
+ jr $ra
+Tree_Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s4 $s3
+ beqz $s4 if423_else
+if423_body:
+ move $s4 $s5
+ lw $s4 0($s5)
+ move $s3 $s6
+ move $s2 $s3
+ move $s3 $s7
+ move $s1 $s3
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s2
+ move $a2 $s1
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s1 $s3
+ move $s3 $s1
+ j if423_end
+if423_else:
+ move $s1 $s7
+ move $s7 $s1
+ lw $s1 0($s7)
+ lw $s2 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $s2 $s1
+ move $s1 $s2
+ beqz $s1 if437_else
+if437_body:
+ move $s1 $s5
+ lw $s1 0($s5)
+ move $s2 $s6
+ move $s4 $s2
+ move $s2 $s7
+ move $s0 $s2
+ lw $s1 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s4
+ move $a2 $s0
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s0 $s2
+ move $s3 $s0
+ j if437_end
+if437_else:
+ move $s0 $s7
+ move $s7 $s0
+ lw $s0 0($s7)
+ lw $s2 0($s0)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s2 $s0
+ move $s0 $s2
+ move $s2 $s6
+ move $s6 $s2
+ lw $s2 0($s6)
+ lw $s7 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s7 $s2
+ move $s2 $s7
+ move $s7 $s2
+ lw $s2 0($s7)
+ lw $s4 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s4 $s2
+ move $s2 $s4
+ move $s4 $s5
+ lw $s4 0($s5)
+ move $s7 $s0
+ move $s0 $s7
+ move $s7 $s2
+ move $s2 $s7
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s0
+ move $a2 $s2
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s2 $s7
+ move $s7 $s2
+ beqz $s7 if467_else
+if467_body:
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s2 0($s7)
+ lw $s7 0($s5)
+ move $s0 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s0
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s0 $s7
+ move $s3 $s0
+ move $s0 $s6
+ move $s6 $s0
+ lw $s0 0($s6)
+ lw $s7 0($s0)
+ li $s0 0
+ move $s2 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s2
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s2 $s0
+ move $s3 $s2
+ j if467_end
+if467_else:
+ move $s2 $s6
+ move $s6 $s2
+ lw $s2 0($s6)
+ lw $s0 0($s2)
+ lw $s2 0($s5)
+ move $s5 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s5 $s2
+ move $s3 $s5
+ move $s5 $s6
+ move $s6 $s5
+ lw $s5 0($s6)
+ lw $s2 0($s5)
+ li $s5 0
+ move $s0 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s0
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s0 $s5
+ move $s3 $s0
+if467_end:
+if437_end:
+if423_end:
+ li $s0 1
+ move $s3 $s0
+ move $s0 $s3
+ move $v0 $s0
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 144
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -72($fp)
+ sw $a1 -68($fp)
+ move $s7 $a2
+while507_test:
+ move $s4 $s7
+ move $s7 $s4
+ lw $t0 -128($fp)
+ lw $t0 0($s7)
+ sw $t0 -128($fp)
+ lw $t0 -124($fp)
+ lw $t1 -128($fp)
+ lw $t0 0($t1)
+ sw $t1 -128($fp)
+ sw $t0 -124($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -124($fp)
+ lw $t1 -124($fp)
+ jalr $t1
+ sw $t1 -124($fp)
+ sw $t0 -124($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -136($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 while507_end
+ sw $t0 -132($fp)
+while507_body:
+ lw $t0 -96($fp)
+ move $t0 $s7
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ move $s7 $t0
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t0 0($s7)
+ sw $t0 -108($fp)
+ lw $t0 -104($fp)
+ lw $t1 -108($fp)
+ lw $t0 0($t1)
+ sw $t1 -108($fp)
+ sw $t0 -104($fp)
+ lw $t0 -92($fp)
+ move $t0 $s7
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s7 $t0
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t0 0($s7)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ lw $s6 0($t0)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -80($fp)
+ move $t0 $v0
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $t3 $t0
+ sw $t0 -80($fp)
+ move $s5 $t3
+ move $t6 $s5
+ lw $t7 0($t6)
+ lw $t4 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $t6
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -84($fp)
+ move $t0 $v0
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $t5 $t0
+ sw $t0 -84($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $t5
+ lw $t0 -104($fp)
+ lw $t1 -104($fp)
+ jalr $t1
+ sw $t1 -104($fp)
+ sw $t0 -104($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -140($fp)
+ move $t0 $v0
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s2 $t0
+ sw $t0 -140($fp)
+ lw $t0 -144($fp)
+ move $t0 $s2
+ sw $t0 -144($fp)
+ move $s3 $s7
+ move $s0 $s3
+ lw $t0 -68($fp)
+ move $t0 $s0
+ sw $t0 -68($fp)
+ lw $t0 -116($fp)
+ move $t0 $s7
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ move $s7 $t0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t0 0($s7)
+ sw $t0 -112($fp)
+ lw $t0 -76($fp)
+ lw $t1 -112($fp)
+ lw $t0 0($t1)
+ sw $t1 -112($fp)
+ sw $t0 -76($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -76($fp)
+ lw $t1 -76($fp)
+ jalr $t1
+ sw $t1 -76($fp)
+ sw $t0 -76($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ lw $t0 -100($fp)
+ move $t0 $s1
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s7 $t0
+ sw $t0 -100($fp)
+ j while507_test
+while507_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $s5
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s5 0($t0)
+ sw $t0 -68($fp)
+ lw $s6 0($s5)
+ lw $t0 -72($fp)
+ lw $s5 0($t0)
+ sw $t0 -72($fp)
+ move $t3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $t3
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $t3 $s5
+ lw $t0 -144($fp)
+ move $t0 $t3
+ sw $t0 -144($fp)
+ lw $t0 -68($fp)
+ move $t3 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $t3
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $t3 0($t0)
+ sw $t0 -68($fp)
+ lw $s5 0($t3)
+ li $t3 0
+ move $s6 $t3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s6 $t3
+ lw $t0 -144($fp)
+ move $t0 $s6
+ sw $t0 -144($fp)
+ li $s6 1
+ move $t3 $s6
+ move $s6 $t3
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 144
+ jr $ra
+Tree_RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 144
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -72($fp)
+ sw $a1 -68($fp)
+ move $s7 $a2
+while554_test:
+ move $s4 $s7
+ move $s7 $s4
+ lw $t0 -128($fp)
+ lw $t0 0($s7)
+ sw $t0 -128($fp)
+ lw $t0 -124($fp)
+ lw $t1 -128($fp)
+ lw $t0 0($t1)
+ sw $t1 -128($fp)
+ sw $t0 -124($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -124($fp)
+ lw $t1 -124($fp)
+ jalr $t1
+ sw $t1 -124($fp)
+ sw $t0 -124($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -136($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 while554_end
+ sw $t0 -132($fp)
+while554_body:
+ lw $t0 -96($fp)
+ move $t0 $s7
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ move $s7 $t0
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t0 0($s7)
+ sw $t0 -108($fp)
+ lw $t0 -104($fp)
+ lw $t1 -108($fp)
+ lw $t0 0($t1)
+ sw $t1 -108($fp)
+ sw $t0 -104($fp)
+ lw $t0 -92($fp)
+ move $t0 $s7
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s7 $t0
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t0 0($s7)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ lw $s6 0($t0)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -80($fp)
+ move $t0 $v0
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $t3 $t0
+ sw $t0 -80($fp)
+ move $s5 $t3
+ move $t6 $s5
+ lw $t7 0($t6)
+ lw $t4 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $t6
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -84($fp)
+ move $t0 $v0
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $t5 $t0
+ sw $t0 -84($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $t5
+ lw $t0 -104($fp)
+ lw $t1 -104($fp)
+ jalr $t1
+ sw $t1 -104($fp)
+ sw $t0 -104($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -140($fp)
+ move $t0 $v0
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s2 $t0
+ sw $t0 -140($fp)
+ lw $t0 -144($fp)
+ move $t0 $s2
+ sw $t0 -144($fp)
+ move $s3 $s7
+ move $s0 $s3
+ lw $t0 -68($fp)
+ move $t0 $s0
+ sw $t0 -68($fp)
+ lw $t0 -116($fp)
+ move $t0 $s7
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ move $s7 $t0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t0 0($s7)
+ sw $t0 -112($fp)
+ lw $t0 -76($fp)
+ lw $t1 -112($fp)
+ lw $t0 0($t1)
+ sw $t1 -112($fp)
+ sw $t0 -76($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -76($fp)
+ lw $t1 -76($fp)
+ jalr $t1
+ sw $t1 -76($fp)
+ sw $t0 -76($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ lw $t0 -100($fp)
+ move $t0 $s1
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s7 $t0
+ sw $t0 -100($fp)
+ j while554_test
+while554_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $s5
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s5 0($t0)
+ sw $t0 -68($fp)
+ lw $s6 0($s5)
+ lw $t0 -72($fp)
+ lw $s5 0($t0)
+ sw $t0 -72($fp)
+ move $t3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $t3
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $t3 $s5
+ lw $t0 -144($fp)
+ move $t0 $t3
+ sw $t0 -144($fp)
+ lw $t0 -68($fp)
+ move $t3 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $t3
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $t3 0($t0)
+ sw $t0 -68($fp)
+ lw $s5 0($t3)
+ li $t3 0
+ move $s6 $t3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s6 $t3
+ lw $t0 -144($fp)
+ move $t0 $s6
+ sw $t0 -144($fp)
+ li $s6 1
+ move $t3 $s6
+ move $s6 $t3
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 144
+ jr $ra
+Tree_Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 180
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ li $s6 1
+ move $s4 $s6
+ move $s6 $s4
+ li $s4 0
+ move $s3 $s4
+ lw $t0 -68($fp)
+ move $t0 $s3
+ sw $t0 -68($fp)
+while607_test:
+ move $s3 $s6
+ lw $t0 -156($fp)
+ move $t0 $s3
+ sw $t0 -156($fp)
+ lw $t0 -116($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ beqz $t0 while607_end
+ sw $t0 -116($fp)
+while607_body:
+ lw $t0 -124($fp)
+ move $t0 $s5
+ sw $t0 -124($fp)
+ lw $t0 -124($fp)
+ move $s5 $t0
+ sw $t0 -124($fp)
+ lw $t0 -84($fp)
+ lw $t0 0($s5)
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ lw $t0 0($t1)
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -80($fp)
+ lw $t1 -80($fp)
+ jalr $t1
+ sw $t1 -80($fp)
+ sw $t0 -80($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -132($fp)
+ move $t0 $v0
+ sw $t0 -132($fp)
+ lw $t0 -92($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -92($fp)
+ lw $t0 -100($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -100($fp)
+ move $t4 $s7
+ lw $t0 -76($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -76($fp)
+ lw $t0 -180($fp)
+ lw $t1 -76($fp)
+ move $a0 $t4
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -76($fp)
+ sw $t0 -180($fp)
+ lw $t0 -72($fp)
+ lw $t1 -180($fp)
+ move $t0 $t1
+ sw $t1 -180($fp)
+ sw $t0 -72($fp)
+ lw $t0 -72($fp)
+ move $t7 $t0
+ sw $t0 -72($fp)
+ beqz $t7 if616_else
+if616_body:
+ move $t5 $s5
+ move $s5 $t5
+ lw $t6 0($s5)
+ lw $t0 -172($fp)
+ lw $t0 0($t6)
+ sw $t0 -172($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -172($fp)
+ lw $t1 -172($fp)
+ jalr $t1
+ sw $t1 -172($fp)
+ sw $t0 -172($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ lw $t0 -168($fp)
+ move $t0 $s0
+ sw $t0 -168($fp)
+ lw $t0 -96($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ beqz $t0 if621_else
+ sw $t0 -96($fp)
+if621_body:
+ lw $t0 -144($fp)
+ move $t0 $s5
+ sw $t0 -144($fp)
+ lw $t0 -144($fp)
+ move $s5 $t0
+ sw $t0 -144($fp)
+ lw $t0 -164($fp)
+ lw $t0 0($s5)
+ sw $t0 -164($fp)
+ lw $t0 -152($fp)
+ lw $t1 -164($fp)
+ lw $t0 0($t1)
+ sw $t1 -164($fp)
+ sw $t0 -152($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -152($fp)
+ lw $t1 -152($fp)
+ jalr $t1
+ sw $t1 -152($fp)
+ sw $t0 -152($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -148($fp)
+ move $t0 $v0
+ sw $t0 -148($fp)
+ lw $t0 -112($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ move $s5 $t0
+ sw $t0 -112($fp)
+ j if621_end
+if621_else:
+ lw $t0 -104($fp)
+ li $t0 0
+ sw $t0 -104($fp)
+ lw $t0 -136($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ move $s6 $t0
+ sw $t0 -136($fp)
+if621_end:
+ j if616_end
+if616_else:
+ lw $t0 -88($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -88($fp)
+ move $s1 $s7
+ lw $t0 -128($fp)
+ lw $t1 -88($fp)
+ move $a0 $t1
+ move $t9 $s1
+ slt $t0 $a0 $t9
+ sw $t1 -88($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ move $s2 $t0
+ sw $t0 -128($fp)
+ lw $t0 -176($fp)
+ move $t0 $s2
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if634_else
+ sw $t0 -176($fp)
+if634_body:
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $t3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $t3 $s4
+ move $s4 $t3
+ beqz $s4 if639_else
+if639_body:
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $t3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $t3 $s4
+ move $s5 $t3
+ j if639_end
+if639_else:
+ li $t3 0
+ move $s4 $t3
+ move $s6 $s4
+if639_end:
+ j if634_end
+if634_else:
+ lw $t0 -160($fp)
+ li $t0 1
+ sw $t0 -160($fp)
+ lw $t0 -120($fp)
+ lw $t1 -160($fp)
+ move $t0 $t1
+ sw $t1 -160($fp)
+ sw $t0 -120($fp)
+ lw $t0 -68($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -68($fp)
+ lw $t0 -108($fp)
+ li $t0 0
+ sw $t0 -108($fp)
+ lw $t0 -140($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s6 $t0
+ sw $t0 -140($fp)
+if634_end:
+if616_end:
+ j while607_test
+while607_end:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ move $t5 $t4
+ move $t4 $t5
+ move $v0 $t4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 180
+ jr $ra
+Tree_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $s6 $s7
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s7
+ lw $s5 0($s7)
+ move $s4 $s6
+ move $s6 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s4 $s6
+ li $s4 1
+ move $s6 $s4
+ move $s4 $s6
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ beqz $s5 if670_else
+if670_body:
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s3
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s4 $s3
+ j if670_end
+if670_else:
+ li $s3 1
+ move $s5 $s3
+ move $s4 $s5
+if670_end:
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ beqz $s5 if693_else
+if693_body:
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s2
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s4 $s2
+ j if693_end
+if693_else:
+ li $s2 1
+ move $s3 $s2
+ move $s4 $s3
+if693_end:
+ li $s3 1
+ move $s4 $s3
+ move $s3 $s4
+ move $v0 $s3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/BinaryTree.vaporm b/output/BinaryTree.vaporm
index 135a5f5..427d246 100644
--- a/output/BinaryTree.vaporm
+++ b/output/BinaryTree.vaporm
@@ -33,15 +33,16 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_BT
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -49,9 +50,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s5 = $s7
- PrintIntS($s5 )
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -74,10 +76,14 @@ func BT_Start [in 0, out 0, local 14]
$s6 = HeapAllocZ(104 )
[$s6+0] = :functable_Tree
$s7 = $s6
- $s7 = $s7
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
$s6 = [$s7+0]
$s5 = [$s6+0]
$s6 = 16
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -85,7 +91,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s6
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -93,9 +99,11 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s6 = $v0
+ $s4 = $s6
$s6 = $s4
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s5 = [$s4+72]
local[8] = $t3
@@ -113,33 +121,18 @@ func BT_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s6 = $s4
- $s4 = 100000000
- PrintIntS($s4 )
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+48]
- $s4 = 8
- local[8] = $t3
- local[9] = $t4
- local[10] = $t5
- local[11] = $t6
- local[12] = $t7
- local[13] = $t8
- $a0 = $s7
- $a1 = $s4
- call $s5
- $t3 = local[8]
- $t4 = local[9]
- $t5 = local[10]
- $t6 = local[11]
- $t7 = local[12]
- $t8 = local[13]
- $s3 = $v0
- $s6 = $s3
- $s7 = $s7
- $s3 = [$s7+0]
- $s4 = [$s3+72]
+ $s5 = $s4
+ $s6 = $s5
+ $s5 = 100000000
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+48]
+ $s5 = 8
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -147,6 +140,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
+ $a1 = $s3
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -154,12 +148,13 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s5 = $v0
+ $s3 = $s5
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s4 = [$s3+48]
- $s3 = 24
+ $s5 = [$s3+72]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -167,20 +162,22 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s3 = $v0
+ $s5 = $s3
$s6 = $s5
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s3 = [$s5+48]
- $s5 = 4
+ $s5 = 24
+ $s4 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -188,7 +185,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s5
+ $a1 = $s4
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -196,12 +193,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s5 = $v0
+ $s4 = $s5
$s6 = $s4
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s5 = [$s4+48]
- $s4 = 12
+ $s4 = 4
+ $s3 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -209,7 +209,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
+ $a1 = $s3
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -217,12 +217,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s4 = $v0
+ $s3 = $s4
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s4 = [$s3+48]
- $s3 = 20
+ $s3 = 12
+ $s5 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -230,7 +233,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -238,12 +241,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s3 = $v0
+ $s5 = $s3
$s6 = $s5
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s3 = [$s5+48]
- $s5 = 28
+ $s5 = 20
+ $s4 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -251,7 +257,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s5
+ $a1 = $s4
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -259,12 +265,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s5 = $v0
+ $s4 = $s5
$s6 = $s4
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s5 = [$s4+48]
- $s4 = 14
+ $s4 = 28
+ $s3 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -272,7 +281,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
+ $a1 = $s3
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -280,11 +289,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s4 = $v0
+ $s3 = $s4
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s4 = [$s3+72]
+ $s4 = [$s3+48]
+ $s3 = 14
+ $s5 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -292,6 +305,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
+ $a1 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -300,11 +314,12 @@ func BT_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s3 = $v0
- $s6 = $s3
- $s7 = $s7
- $s3 = [$s7+0]
- $s4 = [$s3+68]
- $s3 = 24
+ $s5 = $s3
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+72]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -312,8 +327,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -322,11 +336,13 @@ func BT_Start [in 0, out 0, local 14]
$t8 = local[13]
$s5 = $v0
$s3 = $s5
- PrintIntS($s3 )
- $s7 = $s7
+ $s6 = $s3
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s5 = [$s3+68]
- $s3 = 12
+ $s3 = 24
+ $s4 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -334,7 +350,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -342,13 +358,16 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s3 = $v0
+ $s4 = $s3
$s3 = $s4
PrintIntS($s3 )
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s4 = [$s3+68]
- $s3 = 16
+ $s3 = 12
+ $s5 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -356,7 +375,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -364,13 +383,16 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s3 = $v0
+ $s5 = $s3
$s3 = $s5
PrintIntS($s3 )
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s5 = [$s3+68]
- $s3 = 50
+ $s3 = 16
+ $s4 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -378,7 +400,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -386,13 +408,16 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s3 = $v0
+ $s4 = $s3
$s3 = $s4
PrintIntS($s3 )
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s4 = [$s3+68]
- $s3 = 12
+ $s3 = 50
+ $s5 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -400,7 +425,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -408,13 +433,16 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s3 = $v0
+ $s5 = $s3
$s3 = $s5
PrintIntS($s3 )
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s5 = [$s3+52]
+ $s5 = [$s3+68]
$s3 = 12
+ $s4 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -422,7 +450,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -430,11 +458,38 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s3 = [$s4+72]
+ $s3 = $v0
+ $s4 = $s3
+ $s3 = $s4
+ PrintIntS($s3 )
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s4 = [$s3+52]
+ $s3 = 12
+ $s5 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s5 = $s3
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+72]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -449,12 +504,15 @@ func BT_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s6 = [$s4+68]
- $s4 = 12
+ $s5 = $v0
+ $s3 = $s5
+ $s6 = $s3
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s6 = [$s3+68]
+ $s3 = 12
+ $s5 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -462,7 +520,7 @@ func BT_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
+ $a1 = $s5
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -471,10 +529,13 @@ func BT_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s3 = $v0
- $s4 = $s3
- PrintIntS($s4 )
- $s4 = 0
- $v0 = $s4
+ $s5 = $s3
+ $s3 = $s5
+ PrintIntS($s3 )
+ $s3 = 0
+ $s5 = $s3
+ $s3 = $s5
+ $v0 = $s3
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -493,12 +554,20 @@ func Tree_Init [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+88] = $s7
- [$s6+92] = 0
- [$s6+96] = 0
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+88] = $s6
+ $s6 = 0
+ $s7 = $s6
+ [$s5+92] = $s7
+ $s7 = 0
+ $s6 = $s7
+ [$s5+96] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -518,10 +587,14 @@ func Tree_SetRight [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+84] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+84] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -541,10 +614,14 @@ func Tree_SetLeft [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+80] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+80] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -566,6 +643,8 @@ func Tree_GetRight [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+84]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -587,6 +666,8 @@ func Tree_GetLeft [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+80]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -608,6 +689,8 @@ func Tree_GetKey [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+88]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -627,10 +710,14 @@ func Tree_SetKey [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+88] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+88] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -652,6 +739,8 @@ func Tree_GetHas_Right [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+96]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -673,6 +762,8 @@ func Tree_GetHas_Left [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+92]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -692,10 +783,14 @@ func Tree_SetHas_Left [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+92] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+92] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -715,10 +810,14 @@ func Tree_SetHas_Right [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+96] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+96] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -742,34 +841,51 @@ func Tree_Compare [in 0, out 0, local 14]
$s6 = $a1
$s7 = $a2
$s4 = 0
+ $s5 = $s4
+ $s4 = $s5
$s5 = $s7
$s3 = 1
$s2 = Add($s5 $s3 )
$s3 = $s2
- $s2 = $s6
+ $s2 = $s3
+ $s3 = $s6
$s5 = $s7
- $s7 = LtS($s2 $s5 )
+ $s7 = LtS($s3 $s5 )
$s5 = $s7
- if0 $s5 goto :if100_else
-if100_body:
- $s4 = 0
- goto :if100_end
-if100_else:
+ $s7 = $s5
+ if0 $s7 goto :if202_else
+if202_body:
+ $s7 = 0
+ $s5 = $s7
+ $s4 = $s5
+ goto :if202_end
+if202_else:
$s5 = $s6
- $s6 = $s3
- $s3 = LtS($s5 $s6 )
- $s6 = Eq($s3 0 )
- $s3 = $s6
- if0 $s3 goto :if104_else
-if104_body:
- $s4 = 0
- goto :if104_end
-if104_else:
- $s4 = 1
-if104_end:
-if100_end:
- $s3 = $s4
- $v0 = $s3
+ $s6 = $s2
+ $s2 = LtS($s5 $s6 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = Eq($s6 0 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ if0 $s6 goto :if209_else
+if209_body:
+ $s6 = 0
+ $s2 = $s6
+ $s4 = $s2
+ goto :if209_end
+if209_else:
+ $s2 = 1
+ $s6 = $s2
+ $s4 = $s6
+if209_end:
+if202_end:
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -779,7 +895,7 @@ if100_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Insert [in 0, out 0, local 44]
+func Tree_Insert [in 0, out 0, local 71]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -793,10 +909,14 @@ func Tree_Insert [in 0, out 0, local 44]
$s5 = HeapAllocZ(104 )
[$s5+0] = :functable_Tree
$s4 = $s5
- $s4 = $s4
+ $s5 = $s4
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = $s5
$s5 = [$s4+0]
$s3 = [$s5+0]
$s5 = $s7
+ $s2 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -804,7 +924,7 @@ func Tree_Insert [in 0, out 0, local 44]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $s5
+ $a1 = $s2
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -812,23 +932,43 @@ func Tree_Insert [in 0, out 0, local 44]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s5 = $v0
+ $s2 = $s5
$s5 = $s2
$s2 = $s6
+ $s6 = $s2
+ $s2 = $s6
$s6 = 1
-while115_test:
$s3 = $s6
- if0 $s3 goto :while115_end
-while115_body:
- $s2 = $s2
- $t0 = local[27]
+ $s6 = $s3
+while240_test:
+ $s3 = $s6
+ $t0 = local[53]
+ $t0 = $s3
+ local[53] = $t0
+ $t0 = local[57]
+ $t1 = local[53]
+ $t0 = $t1
+ local[53] = $t1
+ local[57] = $t0
+ $t0 = local[57]
+ if0 $t0 goto :while240_end
+ local[57] = $t0
+while240_body:
+ $t0 = local[49]
+ $t0 = $s2
+ local[49] = $t0
+ $t0 = local[49]
+ $s2 = $t0
+ local[49] = $t0
+ $t0 = local[52]
$t0 = [$s2+0]
- local[27] = $t0
- $t0 = local[33]
- $t1 = local[27]
+ local[52] = $t0
+ $t0 = local[51]
+ $t1 = local[52]
$t0 = [$t1+20]
- local[27] = $t1
- local[33] = $t0
+ local[52] = $t1
+ local[51] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -836,58 +976,73 @@ while115_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[33]
- $t1 = local[33]
+ $t0 = local[51]
+ $t1 = local[51]
call $t1
- local[33] = $t1
- local[33] = $t0
+ local[51] = $t1
+ local[51] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[29]
+ $t0 = local[50]
$t0 = $v0
- local[29] = $t0
+ local[50] = $t0
+ $t0 = local[44]
+ $t1 = local[50]
+ $t0 = $t1
+ local[50] = $t1
+ local[44] = $t0
+ $t0 = local[56]
+ $t1 = local[44]
+ $t0 = $t1
+ local[44] = $t1
+ local[56] = $t0
+ $t0 = local[27]
+ $t0 = $s7
+ local[27] = $t0
$t0 = local[37]
- $t1 = local[29]
+ $t1 = local[56]
$t0 = $t1
- local[29] = $t1
+ local[56] = $t1
local[37] = $t0
- $t0 = local[24]
- $t0 = $s7
- local[24] = $t0
- $t0 = local[23]
- $t1 = local[37]
+ $t0 = local[43]
+ $t1 = local[27]
+ $t2 = local[37]
+ $t0 = LtS($t1 $t2 )
+ local[37] = $t2
+ local[27] = $t1
+ local[43] = $t0
+ $t0 = local[35]
+ $t1 = local[43]
$t0 = $t1
- local[37] = $t1
- local[23] = $t0
+ local[43] = $t1
+ local[35] = $t0
+ $t0 = local[41]
+ $t1 = local[35]
+ $t0 = $t1
+ local[35] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if249_else
+ local[41] = $t0
+if249_body:
$t0 = local[31]
- $t1 = local[24]
- $t2 = local[23]
- $t0 = LtS($t1 $t2 )
- local[23] = $t2
- local[24] = $t1
+ $t0 = $s2
local[31] = $t0
- $t0 = local[25]
- $t1 = local[31]
- $t0 = $t1
- local[31] = $t1
- local[25] = $t0
- $t0 = local[25]
- if0 $t0 goto :if120_else
- local[25] = $t0
-if120_body:
- $s2 = $s2
- $t0 = local[15]
+ $t0 = local[31]
+ $s2 = $t0
+ local[31] = $t0
+ $t0 = local[30]
$t0 = [$s2+0]
- local[15] = $t0
- $t0 = local[21]
- $t1 = local[15]
+ local[30] = $t0
+ $t0 = local[34]
+ $t1 = local[30]
$t0 = [$t1+32]
- local[15] = $t1
- local[21] = $t0
+ local[30] = $t1
+ local[34] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -895,34 +1050,44 @@ if120_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[21]
- $t1 = local[21]
+ $t0 = local[34]
+ $t1 = local[34]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[34] = $t1
+ local[34] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[17]
+ $t0 = local[39]
$t0 = $v0
- local[17] = $t0
- $t0 = local[19]
- $t1 = local[17]
+ local[39] = $t0
+ $t0 = local[33]
+ $t1 = local[39]
$t0 = $t1
- local[17] = $t1
- local[19] = $t0
+ local[39] = $t1
+ local[33] = $t0
+ $t0 = local[25]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[25] = $t0
+ $t0 = local[25]
+ if0 $t0 goto :if254_else
+ local[25] = $t0
+if254_body:
+ $t7 = $s2
+ $s2 = $t7
+ $t0 = local[21]
+ $t0 = [$s2+0]
+ local[21] = $t0
$t0 = local[19]
- if0 $t0 goto :if124_else
+ $t1 = local[21]
+ $t0 = [$t1+16]
+ local[21] = $t1
local[19] = $t0
-if124_body:
- $s2 = $s2
- $s1 = [$s2+0]
- $t0 = local[42]
- $t0 = [$s1+16]
- local[42] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -930,34 +1095,59 @@ if124_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[42]
- $t1 = local[42]
+ $t0 = local[19]
+ $t1 = local[19]
call $t1
- local[42] = $t1
- local[42] = $t0
+ local[19] = $t1
+ local[19] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
- $s2 = $t7
- goto :if124_end
-if124_else:
- $s6 = 0
- $s2 = $s2
- $t0 = local[41]
+ $t5 = $v0
+ $t0 = local[24]
+ $t0 = $t5
+ local[24] = $t0
+ $t0 = local[24]
+ $s2 = $t0
+ local[24] = $t0
+ goto :if254_end
+if254_else:
+ $t0 = local[23]
+ $t0 = 0
+ local[23] = $t0
+ $t0 = local[16]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[16] = $t0
+ $t0 = local[16]
+ $s6 = $t0
+ local[16] = $t0
+ $t0 = local[18]
+ $t0 = $s2
+ local[18] = $t0
+ $t0 = local[18]
+ $s2 = $t0
+ local[18] = $t0
+ $t0 = local[17]
$t0 = [$s2+0]
- local[41] = $t0
- $t0 = local[40]
- $t1 = local[41]
+ local[17] = $t0
+ $t0 = local[59]
+ $t1 = local[17]
$t0 = [$t1+36]
- local[41] = $t1
- local[40] = $t0
- $t0 = local[26]
+ local[17] = $t1
+ local[59] = $t0
+ $t0 = local[61]
$t0 = 1
- local[26] = $t0
+ local[61] = $t0
+ $t0 = local[60]
+ $t1 = local[61]
+ $t0 = $t1
+ local[61] = $t1
+ local[60] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -965,34 +1155,53 @@ if124_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[26]
+ $t0 = local[60]
$a1 = $t0
- local[26] = $t0
- $t0 = local[40]
- $t1 = local[40]
+ local[60] = $t0
+ $t0 = local[59]
+ $t1 = local[59]
call $t1
- local[40] = $t1
- local[40] = $t0
+ local[59] = $t1
+ local[59] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s5 = $t5
- $s2 = $s2
- $t0 = local[35]
+ $t0 = local[15]
+ $t0 = $v0
+ local[15] = $t0
+ $t0 = local[66]
+ $t1 = local[15]
+ $t0 = $t1
+ local[15] = $t1
+ local[66] = $t0
+ $t0 = local[66]
+ $s5 = $t0
+ local[66] = $t0
+ $t0 = local[68]
+ $t0 = $s2
+ local[68] = $t0
+ $t0 = local[68]
+ $s2 = $t0
+ local[68] = $t0
+ $t0 = local[67]
$t0 = [$s2+0]
- local[35] = $t0
- $t0 = local[39]
- $t1 = local[35]
+ local[67] = $t0
+ $t0 = local[63]
+ $t1 = local[67]
$t0 = [$t1+8]
- local[35] = $t1
- local[39] = $t0
- $t0 = local[38]
+ local[67] = $t1
+ local[63] = $t0
+ $t0 = local[62]
$t0 = $s4
- local[38] = $t0
+ local[62] = $t0
+ $t0 = local[64]
+ $t1 = local[62]
+ $t0 = $t1
+ local[62] = $t1
+ local[64] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1000,38 +1209,48 @@ if124_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[38]
+ $t0 = local[64]
$a1 = $t0
- local[38] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[64] = $t0
+ $t0 = local[63]
+ $t1 = local[63]
call $t1
- local[39] = $t1
- local[39] = $t0
+ local[63] = $t1
+ local[63] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[36]
+ $t0 = local[65]
$t0 = $v0
- local[36] = $t0
- $t0 = local[36]
+ local[65] = $t0
+ $t0 = local[46]
+ $t1 = local[65]
+ $t0 = $t1
+ local[65] = $t1
+ local[46] = $t0
+ $t0 = local[46]
$s5 = $t0
- local[36] = $t0
-if124_end:
- goto :if120_end
-if120_else:
- $s2 = $s2
- $t0 = local[28]
+ local[46] = $t0
+if254_end:
+ goto :if249_end
+if249_else:
+ $t0 = local[48]
+ $t0 = $s2
+ local[48] = $t0
+ $t0 = local[48]
+ $s2 = $t0
+ local[48] = $t0
+ $t0 = local[47]
$t0 = [$s2+0]
- local[28] = $t0
- $t0 = local[34]
- $t1 = local[28]
+ local[47] = $t0
+ $t0 = local[55]
+ $t1 = local[47]
$t0 = [$t1+28]
- local[28] = $t1
- local[34] = $t0
+ local[47] = $t1
+ local[55] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1039,30 +1258,36 @@ if120_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[34]
- $t1 = local[34]
+ $t0 = local[55]
+ $t1 = local[55]
call $t1
- local[34] = $t1
- local[34] = $t0
+ local[55] = $t1
+ local[55] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[30]
+ $t0 = local[45]
$t0 = $v0
- local[30] = $t0
- $t0 = local[32]
- $t1 = local[30]
+ local[45] = $t0
+ $t0 = local[54]
+ $t1 = local[45]
$t0 = $t1
- local[30] = $t1
- local[32] = $t0
- $t0 = local[32]
- if0 $t0 goto :if139_else
- local[32] = $t0
-if139_body:
- $s2 = $s2
+ local[45] = $t1
+ local[54] = $t0
+ $t0 = local[58]
+ $t1 = local[54]
+ $t0 = $t1
+ local[54] = $t1
+ local[58] = $t0
+ $t0 = local[58]
+ if0 $t0 goto :if281_else
+ local[58] = $t0
+if281_body:
+ $t3 = $s2
+ $s2 = $t3
$t3 = [$s2+0]
$t4 = [$t3+12]
local[8] = $t3
@@ -1080,22 +1305,43 @@ if139_body:
$t7 = local[12]
$t8 = local[13]
$t3 = $v0
- $s2 = $t3
- goto :if139_end
-if139_else:
- $s6 = 0
- $s2 = $s2
- $t0 = local[16]
+ $t4 = $t3
+ $s2 = $t4
+ goto :if281_end
+if281_else:
+ $t0 = local[26]
+ $t0 = 0
+ local[26] = $t0
+ $t0 = local[29]
+ $t1 = local[26]
+ $t0 = $t1
+ local[26] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ $s6 = $t0
+ local[29] = $t0
+ $t0 = local[38]
+ $t0 = $s2
+ local[38] = $t0
+ $t0 = local[38]
+ $s2 = $t0
+ local[38] = $t0
+ $t0 = local[36]
$t0 = [$s2+0]
- local[16] = $t0
- $t0 = local[22]
- $t1 = local[16]
+ local[36] = $t0
+ $t0 = local[42]
+ $t1 = local[36]
$t0 = [$t1+40]
- local[16] = $t1
- local[22] = $t0
- $t0 = local[20]
+ local[36] = $t1
+ local[42] = $t0
+ $t0 = local[40]
$t0 = 1
- local[20] = $t0
+ local[40] = $t0
+ $t0 = local[32]
+ $t1 = local[40]
+ $t0 = $t1
+ local[40] = $t1
+ local[32] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1103,34 +1349,41 @@ if139_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[20]
+ $t0 = local[32]
$a1 = $t0
- local[20] = $t0
- $t0 = local[22]
- $t1 = local[22]
+ local[32] = $t0
+ $t0 = local[42]
+ $t1 = local[42]
call $t1
- local[22] = $t1
- local[22] = $t0
+ local[42] = $t1
+ local[42] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[18]
+ $t0 = local[28]
$t0 = $v0
- local[18] = $t0
- $t0 = local[18]
- $s5 = $t0
- local[18] = $t0
- $s2 = $s2
- $s0 = [$s2+0]
+ local[28] = $t0
$t0 = local[14]
- $t0 = [$s0+4]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
local[14] = $t0
- $t0 = local[43]
- $t0 = $s4
- local[43] = $t0
+ $t0 = local[14]
+ $s5 = $t0
+ local[14] = $t0
+ $s0 = $s2
+ $s2 = $s0
+ $s1 = [$s2+0]
+ $t0 = local[70]
+ $t0 = [$s1+4]
+ local[70] = $t0
+ $t6 = $s4
+ $t0 = local[22]
+ $t0 = $t6
+ local[22] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1138,27 +1391,38 @@ if139_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[43]
+ $t0 = local[22]
$a1 = $t0
- local[43] = $t0
- $t0 = local[14]
- $t1 = local[14]
+ local[22] = $t0
+ $t0 = local[70]
+ $t1 = local[70]
call $t1
- local[14] = $t1
- local[14] = $t0
+ local[70] = $t1
+ local[70] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- $s5 = $t6
-if139_end:
-if120_end:
- goto :while115_test
-while115_end:
+ $t0 = local[69]
+ $t0 = $v0
+ local[69] = $t0
+ $t0 = local[20]
+ $t1 = local[69]
+ $t0 = $t1
+ local[69] = $t1
+ local[20] = $t0
+ $t0 = local[20]
+ $s5 = $t0
+ local[20] = $t0
+if281_end:
+if249_end:
+ goto :while240_test
+while240_end:
$t5 = 1
+ $t6 = $t5
+ $t5 = $t6
$v0 = $t5
$s0 = local[0]
$s1 = local[1]
@@ -1169,7 +1433,7 @@ while115_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Delete [in 0, out 0, local 54]
+func Tree_Delete [in 0, out 0, local 95]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -1181,25 +1445,50 @@ func Tree_Delete [in 0, out 0, local 54]
$s6 = $a0
$s7 = $a1
$s5 = $s6
+ $s4 = $s5
+ $s5 = $s4
$s4 = $s6
+ $s3 = $s4
+ $s4 = $s3
$s3 = 1
+ $s2 = $s3
+ $s3 = $s2
+ $s2 = 0
+ $s1 = $s2
$t0 = local[14]
- $t0 = 0
+ $t0 = $s1
local[14] = $t0
$s1 = 1
-while155_test:
+ $s0 = $s1
+ $s1 = $s0
+while321_test:
$s0 = $s3
- if0 $s0 goto :while155_end
-while155_body:
- $s5 = $s5
- $t0 = local[45]
+ $t0 = local[73]
+ $t0 = $s0
+ local[73] = $t0
+ $t0 = local[74]
+ $t1 = local[73]
+ $t0 = $t1
+ local[73] = $t1
+ local[74] = $t0
+ $t0 = local[74]
+ if0 $t0 goto :while321_end
+ local[74] = $t0
+while321_body:
+ $t0 = local[72]
+ $t0 = $s5
+ local[72] = $t0
+ $t0 = local[72]
+ $s5 = $t0
+ local[72] = $t0
+ $t0 = local[71]
$t0 = [$s5+0]
- local[45] = $t0
- $t0 = local[50]
- $t1 = local[45]
+ local[71] = $t0
+ $t0 = local[66]
+ $t1 = local[71]
$t0 = [$t1+20]
- local[45] = $t1
- local[50] = $t0
+ local[71] = $t1
+ local[66] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1207,58 +1496,73 @@ while155_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[50]
- $t1 = local[50]
+ $t0 = local[66]
+ $t1 = local[66]
call $t1
- local[50] = $t1
- local[50] = $t0
+ local[66] = $t1
+ local[66] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[25]
+ $t0 = local[69]
$t0 = $v0
- local[25] = $t0
- $t0 = local[26]
- $t1 = local[25]
+ local[69] = $t0
+ $t0 = local[65]
+ $t1 = local[69]
$t0 = $t1
- local[25] = $t1
- local[26] = $t0
- $t0 = local[41]
+ local[69] = $t1
+ local[65] = $t0
+ $t0 = local[70]
+ $t1 = local[65]
+ $t0 = $t1
+ local[65] = $t1
+ local[70] = $t0
+ $t0 = local[67]
$t0 = $s7
- local[41] = $t0
- $t0 = local[40]
- $t1 = local[26]
+ local[67] = $t0
+ $t0 = local[39]
+ $t1 = local[70]
$t0 = $t1
- local[26] = $t1
- local[40] = $t0
- $t0 = local[48]
- $t1 = local[41]
- $t2 = local[40]
+ local[70] = $t1
+ local[39] = $t0
+ $t0 = local[68]
+ $t1 = local[67]
+ $t2 = local[39]
$t0 = LtS($t1 $t2 )
- local[40] = $t2
- local[41] = $t1
- local[48] = $t0
- $t0 = local[44]
- $t1 = local[48]
+ local[39] = $t2
+ local[67] = $t1
+ local[68] = $t0
+ $t0 = local[38]
+ $t1 = local[68]
$t0 = $t1
- local[48] = $t1
- local[44] = $t0
- $t0 = local[44]
- if0 $t0 goto :if160_else
- local[44] = $t0
-if160_body:
- $s5 = $s5
- $t0 = local[35]
- $t0 = [$s5+0]
- local[35] = $t0
+ local[68] = $t1
+ local[38] = $t0
+ $t0 = local[29]
+ $t1 = local[38]
+ $t0 = $t1
+ local[38] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ if0 $t0 goto :if330_else
+ local[29] = $t0
+if330_body:
$t0 = local[34]
- $t1 = local[35]
- $t0 = [$t1+32]
- local[35] = $t1
+ $t0 = $s5
+ local[34] = $t0
+ $t0 = local[34]
+ $s5 = $t0
local[34] = $t0
+ $t0 = local[37]
+ $t0 = [$s5+0]
+ local[37] = $t0
+ $t0 = local[36]
+ $t1 = local[37]
+ $t0 = [$t1+32]
+ local[37] = $t1
+ local[36] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1266,39 +1570,55 @@ if160_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[34]
- $t1 = local[34]
+ $t0 = local[36]
+ $t1 = local[36]
call $t1
- local[34] = $t1
- local[34] = $t0
+ local[36] = $t1
+ local[36] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[43]
+ $t0 = local[35]
$t0 = $v0
- local[43] = $t0
- $t0 = local[36]
- $t1 = local[43]
+ local[35] = $t0
+ $t0 = local[31]
+ $t1 = local[35]
$t0 = $t1
- local[43] = $t1
- local[36] = $t0
- $t0 = local[36]
- if0 $t0 goto :if164_else
- local[36] = $t0
-if164_body:
- $s4 = $s5
- $s5 = $s5
+ local[35] = $t1
+ local[31] = $t0
$t0 = local[30]
- $t0 = [$s5+0]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :if335_else
+ local[30] = $t0
+if335_body:
$t0 = local[33]
- $t1 = local[30]
- $t0 = [$t1+16]
- local[30] = $t1
+ $t0 = $s5
local[33] = $t0
+ $t0 = local[32]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[32] = $t0
+ $t0 = local[32]
+ $s4 = $t0
+ local[32] = $t0
+ $t0 = local[94]
+ $t0 = $s5
+ local[94] = $t0
+ $t0 = local[94]
+ $s5 = $t0
+ local[94] = $t0
+ $t5 = [$s5+0]
+ $t0 = local[24]
+ $t0 = [$t5+16]
+ local[24] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1306,54 +1626,75 @@ if164_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[33]
- $t1 = local[33]
+ $t0 = local[24]
+ $t1 = local[24]
call $t1
- local[33] = $t1
- local[33] = $t0
+ local[24] = $t1
+ local[24] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[31]
+ $t0 = local[28]
$t0 = $v0
- local[31] = $t0
- $t0 = local[31]
+ local[28] = $t0
+ $t0 = local[23]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
+ local[23] = $t0
+ $t0 = local[23]
$s5 = $t0
- local[31] = $t0
- goto :if164_end
-if164_else:
- $s3 = 0
-if164_end:
- goto :if160_end
-if160_else:
- $t0 = local[28]
+ local[23] = $t0
+ goto :if335_end
+if335_else:
+ $t0 = local[26]
+ $t0 = 0
+ local[26] = $t0
+ $t0 = local[25]
$t1 = local[26]
$t0 = $t1
local[26] = $t1
- local[28] = $t0
- $t0 = local[27]
+ local[25] = $t0
+ $t0 = local[25]
+ $s3 = $t0
+ local[25] = $t0
+if335_end:
+ goto :if330_end
+if330_else:
+ $t0 = local[19]
+ $t1 = local[70]
+ $t0 = $t1
+ local[70] = $t1
+ local[19] = $t0
+ $t0 = local[22]
$t0 = $s7
- local[27] = $t0
- $t0 = local[32]
- $t1 = local[28]
- $t2 = local[27]
+ local[22] = $t0
+ $t0 = local[20]
+ $t1 = local[19]
+ $t2 = local[22]
$t0 = LtS($t1 $t2 )
- local[27] = $t2
- local[28] = $t1
- local[32] = $t0
- $t0 = local[29]
- $t1 = local[32]
+ local[22] = $t2
+ local[19] = $t1
+ local[20] = $t0
+ $t0 = local[21]
+ $t1 = local[20]
$t0 = $t1
- local[32] = $t1
- local[29] = $t0
- $t0 = local[29]
- if0 $t0 goto :if171_else
- local[29] = $t0
-if171_body:
- $s5 = $s5
+ local[20] = $t1
+ local[21] = $t0
+ $t0 = local[44]
+ $t1 = local[21]
+ $t0 = $t1
+ local[21] = $t1
+ local[44] = $t0
+ $t0 = local[44]
+ if0 $t0 goto :if350_else
+ local[44] = $t0
+if350_body:
+ $s2 = $s5
+ $s5 = $s2
$s2 = [$s5+0]
$t3 = [$s2+28]
local[8] = $t3
@@ -1372,10 +1713,14 @@ if171_body:
$t8 = local[13]
$s2 = $v0
$t3 = $s2
- if0 $t3 goto :if175_else
-if175_body:
- $s4 = $s5
- $s5 = $s5
+ $s2 = $t3
+ if0 $s2 goto :if355_else
+if355_body:
+ $s2 = $s5
+ $t3 = $s2
+ $s4 = $t3
+ $t3 = $s5
+ $s5 = $t3
$t3 = [$s5+0]
$s2 = [$t3+12]
local[8] = $t3
@@ -1393,29 +1738,47 @@ if175_body:
$t7 = local[12]
$t8 = local[13]
$t3 = $v0
- $s5 = $t3
- goto :if175_end
-if175_else:
- $s3 = 0
-if175_end:
- goto :if171_end
-if171_else:
- $t0 = local[24]
+ $s2 = $t3
+ $s5 = $s2
+ goto :if355_end
+if355_else:
+ $s2 = 0
+ $t3 = $s2
+ $s3 = $t3
+if355_end:
+ goto :if350_end
+if350_else:
+ $t0 = local[43]
$t0 = $s1
- local[24] = $t0
- $t0 = local[24]
- if0 $t0 goto :if182_else
- local[24] = $t0
-if182_body:
- $s5 = $s5
- $t0 = local[22]
+ local[43] = $t0
+ $t0 = local[42]
+ $t1 = local[43]
+ $t0 = $t1
+ local[43] = $t1
+ local[42] = $t0
+ $t0 = local[41]
+ $t1 = local[42]
+ $t0 = $t1
+ local[42] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if370_else
+ local[41] = $t0
+if370_body:
+ $t0 = local[55]
+ $t0 = $s5
+ local[55] = $t0
+ $t0 = local[55]
+ $s5 = $t0
+ local[55] = $t0
+ $t0 = local[58]
$t0 = [$s5+0]
- local[22] = $t0
- $t0 = local[19]
- $t1 = local[22]
+ local[58] = $t0
+ $t0 = local[57]
+ $t1 = local[58]
$t0 = [$t1+28]
- local[22] = $t1
- local[19] = $t0
+ local[58] = $t1
+ local[57] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1423,37 +1786,59 @@ if182_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[19]
- $t1 = local[19]
+ $t0 = local[57]
+ $t1 = local[57]
call $t1
- local[19] = $t1
- local[19] = $t0
+ local[57] = $t1
+ local[57] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[23]
+ $t0 = local[56]
$t0 = $v0
- local[23] = $t0
- $t0 = local[20]
- $t1 = local[23]
+ local[56] = $t0
+ $t0 = local[62]
+ $t1 = local[56]
+ $t0 = $t1
+ local[56] = $t1
+ local[62] = $t0
+ $t0 = local[59]
+ $t1 = local[62]
$t0 = Eq($t1 0 )
- local[23] = $t1
- local[20] = $t0
- $t0 = local[20]
- $t6 = $t0
- local[20] = $t0
- $s5 = $s5
- $t0 = local[15]
+ local[62] = $t1
+ local[59] = $t0
+ $t0 = local[61]
+ $t1 = local[59]
+ $t0 = $t1
+ local[59] = $t1
+ local[61] = $t0
+ $t0 = local[64]
+ $t1 = local[61]
+ $t0 = $t1
+ local[61] = $t1
+ local[64] = $t0
+ $t0 = local[63]
+ $t1 = local[64]
+ $t0 = $t1
+ local[64] = $t1
+ local[63] = $t0
+ $t0 = local[49]
+ $t0 = $s5
+ local[49] = $t0
+ $t0 = local[49]
+ $s5 = $t0
+ local[49] = $t0
+ $t0 = local[46]
$t0 = [$s5+0]
- local[15] = $t0
- $t0 = local[18]
- $t1 = local[15]
+ local[46] = $t0
+ $t0 = local[45]
+ $t1 = local[46]
$t0 = [$t1+32]
- local[15] = $t1
- local[18] = $t0
+ local[46] = $t1
+ local[45] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1461,61 +1846,116 @@ if182_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[45]
+ $t1 = local[45]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[45] = $t1
+ local[45] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[50]
$t0 = $v0
- local[16] = $t0
- $t0 = local[16]
- $t7 = Eq($t0 0 )
- local[16] = $t0
- $t0 = local[17]
- $t0 = $t7
- local[17] = $t0
- $t4 = Eq(1 $t6 )
- $t0 = local[17]
- $t5 = Eq(1 $t0 )
- local[17] = $t0
- $t0 = local[21]
- $t0 = Eq($t4 $t5 )
- local[21] = $t0
- $t0 = local[52]
- $t1 = local[21]
+ local[50] = $t0
+ $t0 = local[48]
+ $t1 = local[50]
$t0 = $t1
- local[21] = $t1
- local[52] = $t0
+ local[50] = $t1
+ local[48] = $t0
+ $t0 = local[60]
+ $t1 = local[48]
+ $t0 = Eq($t1 0 )
+ local[48] = $t1
+ local[60] = $t0
+ $t0 = local[47]
+ $t1 = local[60]
+ $t0 = $t1
+ local[60] = $t1
+ local[47] = $t0
$t0 = local[52]
- if0 $t0 goto :if183_else
+ $t1 = local[47]
+ $t0 = $t1
+ local[47] = $t1
local[52] = $t0
-if183_body:
+ $t0 = local[51]
+ $t1 = local[52]
+ $t0 = $t1
+ local[52] = $t1
+ local[51] = $t0
+ $t0 = local[54]
+ $t1 = local[63]
+ $t0 = Eq(1 $t1 )
+ local[63] = $t1
+ local[54] = $t0
$t0 = local[53]
- $t0 = 1
+ $t1 = local[51]
+ $t0 = Eq(1 $t1 )
+ local[51] = $t1
local[53] = $t0
- goto :if183_end
-if183_else:
- $t0 = local[39]
+ $t0 = local[40]
+ $t1 = local[54]
+ $t2 = local[53]
+ $t0 = Eq($t1 $t2 )
+ local[53] = $t2
+ local[54] = $t1
+ local[40] = $t0
+ $t0 = local[84]
+ $t1 = local[40]
+ $t0 = $t1
+ local[40] = $t1
+ local[84] = $t0
+ $t0 = local[86]
+ $t1 = local[84]
+ $t0 = $t1
+ local[84] = $t1
+ local[86] = $t0
+ $t0 = local[86]
+ if0 $t0 goto :if373_else
+ local[86] = $t0
+if373_body:
+ $t0 = local[78]
+ $t0 = 1
+ local[78] = $t0
+ $t0 = local[76]
+ $t1 = local[78]
+ $t0 = $t1
+ local[78] = $t1
+ local[76] = $t0
+ $t0 = local[85]
+ $t1 = local[76]
+ $t0 = $t1
+ local[76] = $t1
+ local[85] = $t0
+ goto :if373_end
+if373_else:
+ $t0 = local[80]
+ $t0 = $s6
+ local[80] = $t0
+ $t0 = local[88]
$t0 = [$s6+0]
- local[39] = $t0
- $t0 = local[38]
+ local[88] = $t0
+ $t0 = local[87]
$t0 = $s4
- local[38] = $t0
- $t0 = local[47]
+ local[87] = $t0
+ $t0 = local[91]
+ $t1 = local[87]
+ $t0 = $t1
+ local[87] = $t1
+ local[91] = $t0
+ $t0 = local[27]
$t0 = $s5
- local[47] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[27] = $t0
+ $t0 = local[27]
+ $t7 = $t0
+ local[27] = $t0
+ $t0 = local[88]
+ $t1 = local[88]
$t0 = [$t1+56]
- local[39] = $t1
- local[39] = $t0
+ local[88] = $t1
+ local[88] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1523,48 +1963,60 @@ if183_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $t0 = local[38]
+ $t0 = local[91]
$a1 = $t0
- local[38] = $t0
- $t0 = local[47]
- $a2 = $t0
- local[47] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[91] = $t0
+ $a2 = $t7
+ $t0 = local[88]
+ $t1 = local[88]
call $t1
- local[39] = $t1
- local[39] = $t0
+ local[88] = $t1
+ local[88] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[37]
+ $t0 = local[82]
$t0 = $v0
- local[37] = $t0
- $t0 = local[53]
- $t1 = local[37]
- $t0 = $t1
- local[37] = $t1
- local[53] = $t0
-if183_end:
- goto :if182_end
-if182_else:
- $t0 = local[51]
+ local[82] = $t0
+ $t0 = local[82]
+ $t6 = $t0
+ local[82] = $t0
+ $t0 = local[85]
+ $t0 = $t6
+ local[85] = $t0
+if373_end:
+ goto :if370_end
+if370_else:
+ $t0 = local[93]
+ $t0 = $s6
+ local[93] = $t0
+ $t0 = local[15]
$t0 = [$s6+0]
- local[51] = $t0
- $t0 = local[49]
+ local[15] = $t0
+ $t0 = local[16]
$t0 = $s4
- local[49] = $t0
- $t0 = local[42]
+ local[16] = $t0
+ $t0 = local[17]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[17] = $t0
+ $t0 = local[18]
$t0 = $s5
- local[42] = $t0
- $t0 = local[51]
- $t1 = local[51]
+ local[18] = $t0
+ $t0 = local[92]
+ $t1 = local[18]
+ $t0 = $t1
+ local[18] = $t1
+ local[92] = $t0
+ $t0 = local[15]
+ $t1 = local[15]
$t0 = [$t1+56]
- local[51] = $t1
- local[51] = $t0
+ local[15] = $t1
+ local[15] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1572,44 +2024,77 @@ if182_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $t0 = local[49]
+ $t0 = local[17]
$a1 = $t0
- local[49] = $t0
- $t0 = local[42]
+ local[17] = $t0
+ $t0 = local[92]
$a2 = $t0
- local[42] = $t0
- $t0 = local[51]
- $t1 = local[51]
+ local[92] = $t0
+ $t0 = local[15]
+ $t1 = local[15]
call $t1
- local[51] = $t1
- local[51] = $t0
+ local[15] = $t1
+ local[15] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[46]
- $t0 = $v0
- local[46] = $t0
- $t0 = local[53]
- $t1 = local[46]
+ $t4 = $v0
+ $t0 = local[89]
+ $t0 = $t4
+ local[89] = $t0
+ $t0 = local[85]
+ $t1 = local[89]
$t0 = $t1
- local[46] = $t1
- local[53] = $t0
-if182_end:
- $t0 = local[14]
+ local[89] = $t1
+ local[85] = $t0
+if370_end:
+ $t0 = local[90]
$t0 = 1
+ local[90] = $t0
+ $t0 = local[75]
+ $t1 = local[90]
+ $t0 = $t1
+ local[90] = $t1
+ local[75] = $t0
+ $t0 = local[14]
+ $t1 = local[75]
+ $t0 = $t1
+ local[75] = $t1
local[14] = $t0
- $s3 = 0
-if171_end:
-if160_end:
- $s1 = 0
- goto :while155_test
-while155_end:
+ $t0 = local[77]
+ $t0 = 0
+ local[77] = $t0
+ $t0 = local[79]
+ $t1 = local[77]
+ $t0 = $t1
+ local[77] = $t1
+ local[79] = $t0
+ $t0 = local[79]
+ $s3 = $t0
+ local[79] = $t0
+if350_end:
+if330_end:
+ $t0 = local[81]
+ $t0 = 0
+ local[81] = $t0
+ $t0 = local[83]
+ $t1 = local[81]
+ $t0 = $t1
+ local[81] = $t1
+ local[83] = $t0
+ $t0 = local[83]
+ $s1 = $t0
+ local[83] = $t0
+ goto :while321_test
+while321_end:
$t0 = local[14]
$t4 = $t0
local[14] = $t0
+ $t5 = $t4
+ $t4 = $t5
$v0 = $t4
$s0 = local[0]
$s1 = local[1]
@@ -1632,7 +2117,8 @@ func Tree_Remove [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s3 = [$s4+32]
local[8] = $t3
@@ -1651,12 +2137,16 @@ func Tree_Remove [in 0, out 0, local 14]
$t8 = local[13]
$s4 = $v0
$s3 = $s4
- if0 $s3 goto :if206_else
-if206_body:
- $s3 = [$s5+0]
- $s4 = $s6
- $s2 = $s7
- $s3 = [$s3+64]
+ $s4 = $s3
+ if0 $s4 goto :if423_else
+if423_body:
+ $s4 = $s5
+ $s4 = [$s5+0]
+ $s3 = $s6
+ $s2 = $s3
+ $s3 = $s7
+ $s1 = $s3
+ $s4 = [$s4+64]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1664,22 +2154,24 @@ if206_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s4
- $a2 = $s2
- call $s3
+ $a1 = $s2
+ $a2 = $s1
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s2 = $s1
- goto :if206_end
-if206_else:
- $s7 = $s7
+ $s3 = $v0
+ $s1 = $s3
+ $s3 = $s1
+ goto :if423_end
+if423_else:
+ $s1 = $s7
+ $s7 = $s1
$s1 = [$s7+0]
- $s4 = [$s1+28]
+ $s2 = [$s1+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1687,7 +2179,7 @@ if206_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s4
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1695,13 +2187,17 @@ if206_else:
$t7 = local[12]
$t8 = local[13]
$s1 = $v0
- $s4 = $s1
- if0 $s4 goto :if214_else
-if214_body:
- $s4 = [$s5+0]
- $s1 = $s6
- $s3 = $s7
- $s4 = [$s4+60]
+ $s2 = $s1
+ $s1 = $s2
+ if0 $s1 goto :if437_else
+if437_body:
+ $s1 = $s5
+ $s1 = [$s5+0]
+ $s2 = $s6
+ $s4 = $s2
+ $s2 = $s7
+ $s0 = $s2
+ $s1 = [$s1+60]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1709,22 +2205,24 @@ if214_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s1
- $a2 = $s3
- call $s4
+ $a1 = $s4
+ $a2 = $s0
+ call $s1
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s2 = $s0
- goto :if214_end
-if214_else:
- $s7 = $s7
+ $s2 = $v0
+ $s0 = $s2
+ $s3 = $s0
+ goto :if437_end
+if437_else:
+ $s0 = $s7
+ $s7 = $s0
$s0 = [$s7+0]
- $s3 = [$s0+20]
+ $s2 = [$s0+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1732,7 +2230,7 @@ if214_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1740,10 +2238,12 @@ if214_else:
$t7 = local[12]
$t8 = local[13]
$s0 = $v0
- $s3 = $s0
- $s6 = $s6
- $s0 = [$s6+0]
- $s7 = [$s0+16]
+ $s2 = $s0
+ $s0 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = [$s6+0]
+ $s7 = [$s2+16]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1758,10 +2258,12 @@ if214_else:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s7 = $s0
- $s0 = [$s7+0]
- $s1 = [$s0+20]
+ $s2 = $v0
+ $s7 = $s2
+ $s2 = $s7
+ $s7 = $s2
+ $s2 = [$s7+0]
+ $s4 = [$s2+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1769,19 +2271,23 @@ if214_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s1
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s1 = $s0
- $s0 = [$s5+0]
- $s7 = $s3
- $s3 = $s1
- $s0 = [$s0+44]
+ $s2 = $v0
+ $s4 = $s2
+ $s2 = $s4
+ $s4 = $s5
+ $s4 = [$s5+0]
+ $s7 = $s0
+ $s0 = $s7
+ $s7 = $s2
+ $s2 = $s7
+ $s4 = [$s4+44]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1789,23 +2295,26 @@ if214_else:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s7
- $a2 = $s3
- call $s0
+ $a1 = $s0
+ $a2 = $s2
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s3 = $s1
- if0 $s3 goto :if232_else
-if232_body:
- $s6 = $s6
- $s3 = [$s6+0]
- $s1 = [$s3+8]
- $s3 = [$s5+100]
+ $s7 = $v0
+ $s2 = $s7
+ $s7 = $s2
+ if0 $s7 goto :if467_else
+if467_body:
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s2 = [$s7+8]
+ $s7 = [$s5+100]
+ $s0 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1813,8 +2322,8 @@ if232_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s3
- call $s1
+ $a1 = $s0
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1822,11 +2331,14 @@ if232_body:
$t7 = local[12]
$t8 = local[13]
$s7 = $v0
- $s2 = $s7
- $s6 = $s6
- $s7 = [$s6+0]
- $s3 = [$s7+36]
- $s7 = 0
+ $s0 = $s7
+ $s3 = $s0
+ $s0 = $s6
+ $s6 = $s0
+ $s0 = [$s6+0]
+ $s7 = [$s0+36]
+ $s0 = 0
+ $s2 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1834,22 +2346,25 @@ if232_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
- call $s3
+ $a1 = $s2
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s2 = $s1
- goto :if232_end
-if232_else:
- $s6 = $s6
- $s1 = [$s6+0]
- $s7 = [$s1+4]
- $s1 = [$s5+100]
+ $s0 = $v0
+ $s2 = $s0
+ $s3 = $s2
+ goto :if467_end
+if467_else:
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = [$s6+0]
+ $s0 = [$s2+4]
+ $s2 = [$s5+100]
+ $s5 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1857,20 +2372,23 @@ if232_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s1
- call $s7
+ $a1 = $s5
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s2 = $s5
- $s6 = $s6
+ $s2 = $v0
+ $s5 = $s2
+ $s3 = $s5
+ $s5 = $s6
+ $s6 = $s5
$s5 = [$s6+0]
- $s1 = [$s5+40]
+ $s2 = [$s5+40]
$s5 = 0
+ $s0 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1878,21 +2396,24 @@ if232_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s5
- call $s1
+ $a1 = $s0
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s2 = $s7
-if232_end:
-if214_end:
-if206_end:
- $s7 = 1
- $v0 = $s7
+ $s5 = $v0
+ $s0 = $s5
+ $s3 = $s0
+if467_end:
+if437_end:
+if423_end:
+ $s0 = 1
+ $s3 = $s0
+ $s0 = $s3
+ $v0 = $s0
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -1902,7 +2423,7 @@ if206_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_RemoveRight [in 0, out 0, local 23]
+func Tree_RemoveRight [in 0, out 0, local 34]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -1914,12 +2435,17 @@ func Tree_RemoveRight [in 0, out 0, local 23]
local[15] = $a0
local[14] = $a1
$s7 = $a2
-while254_test:
- $s7 = $s7
- $s5 = [$s7+0]
- $t0 = local[18]
- $t0 = [$s5+28]
- local[18] = $t0
+while507_test:
+ $s4 = $s7
+ $s7 = $s4
+ $t0 = local[29]
+ $t0 = [$s7+0]
+ local[29] = $t0
+ $t0 = local[28]
+ $t1 = local[29]
+ $t0 = [$t1+28]
+ local[29] = $t1
+ local[28] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1927,41 +2453,60 @@ while254_test:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[28]
+ $t1 = local[28]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[28] = $t1
+ local[28] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[27]
$t0 = $v0
- local[16] = $t0
- $t0 = local[17]
- $t1 = local[16]
+ local[27] = $t0
+ $t0 = local[31]
+ $t1 = local[27]
$t0 = $t1
- local[16] = $t1
- local[17] = $t0
- $t0 = local[17]
- if0 $t0 goto :while254_end
- local[17] = $t0
-while254_body:
- $s7 = $s7
- $t0 = local[22]
- $t0 = [$s7+0]
- local[22] = $t0
+ local[27] = $t1
+ local[31] = $t0
+ $t0 = local[30]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :while507_end
+ local[30] = $t0
+while507_body:
$t0 = local[21]
- $t1 = local[22]
- $t0 = [$t1+24]
- local[22] = $t1
+ $t0 = $s7
+ local[21] = $t0
+ $t0 = local[21]
+ $s7 = $t0
local[21] = $t0
- $s7 = $s7
- $t6 = [$s7+0]
- $s3 = [$t6+12]
+ $t0 = local[24]
+ $t0 = [$s7+0]
+ local[24] = $t0
+ $t0 = local[23]
+ $t1 = local[24]
+ $t0 = [$t1+24]
+ local[24] = $t1
+ local[23] = $t0
+ $t0 = local[20]
+ $t0 = $s7
+ local[20] = $t0
+ $t0 = local[20]
+ $s7 = $t0
+ local[20] = $t0
+ $t0 = local[19]
+ $t0 = [$s7+0]
+ local[19] = $t0
+ $t0 = local[19]
+ $s6 = [$t0+12]
+ local[19] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1969,33 +2514,43 @@ while254_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s4 = $t5
- $s1 = [$s4+0]
- $s2 = [$s1+20]
+ $t0 = local[17]
+ $t0 = $v0
+ local[17] = $t0
+ $t0 = local[17]
+ $t3 = $t0
+ local[17] = $t0
+ $s5 = $t3
+ $t6 = $s5
+ $t7 = [$t6+0]
+ $t4 = [$t7+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- call $s2
+ $a0 = $t6
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $t3 = $s0
+ $t0 = local[18]
+ $t0 = $v0
+ local[18] = $t0
+ $t0 = local[18]
+ $t5 = $t0
+ local[18] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2003,32 +2558,46 @@ while254_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $t3
- $t0 = local[21]
- $t1 = local[21]
+ $a1 = $t5
+ $t0 = local[23]
+ $t1 = local[23]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[23] = $t1
+ local[23] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[19]
+ $t0 = local[32]
$t0 = $v0
- local[19] = $t0
- $t0 = local[20]
- $t1 = local[19]
- $t0 = $t1
- local[19] = $t1
- local[20] = $t0
+ local[32] = $t0
+ $t0 = local[32]
+ $s2 = $t0
+ local[32] = $t0
+ $t0 = local[33]
+ $t0 = $s2
+ local[33] = $t0
+ $s3 = $s7
+ $s0 = $s3
$t0 = local[14]
- $t0 = $s7
+ $t0 = $s0
local[14] = $t0
- $s7 = $s7
- $s6 = [$s7+0]
- $t7 = [$s6+12]
+ $t0 = local[26]
+ $t0 = $s7
+ local[26] = $t0
+ $t0 = local[26]
+ $s7 = $t0
+ local[26] = $t0
+ $t0 = local[25]
+ $t0 = [$s7+0]
+ local[25] = $t0
+ $t0 = local[16]
+ $t1 = local[25]
+ $t0 = [$t1+12]
+ local[25] = $t1
+ local[16] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2036,21 +2605,31 @@ while254_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $t7
+ $t0 = local[16]
+ $t1 = local[16]
+ call $t1
+ local[16] = $t1
+ local[16] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t4 = $v0
- $s7 = $t4
- goto :while254_test
-while254_end:
+ $s1 = $v0
+ $t0 = local[22]
+ $t0 = $s1
+ local[22] = $t0
+ $t0 = local[22]
+ $s7 = $t0
+ local[22] = $t0
+ goto :while507_test
+while507_end:
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $s5 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $s5
local[14] = $t0
$t0 = local[14]
$s5 = [$t0+0]
@@ -2059,6 +2638,7 @@ while254_end:
$t0 = local[15]
$s5 = [$t0+100]
local[15] = $t0
+ $t3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2068,7 +2648,7 @@ while254_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $s5
+ $a1 = $t3
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -2076,20 +2656,23 @@ while254_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- $t0 = local[20]
+ $s5 = $v0
+ $t3 = $s5
+ $t0 = local[33]
$t0 = $t3
- local[20] = $t0
+ local[33] = $t0
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $t3 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $t3
local[14] = $t0
$t0 = local[14]
$t3 = [$t0+0]
local[14] = $t0
$s5 = [$t3+40]
$t3 = 0
+ $s6 = $t3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2099,7 +2682,7 @@ while254_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $t3
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2107,11 +2690,14 @@ while254_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $t0 = local[20]
+ $t3 = $v0
+ $s6 = $t3
+ $t0 = local[33]
$t0 = $s6
- local[20] = $t0
+ local[33] = $t0
$s6 = 1
+ $t3 = $s6
+ $s6 = $t3
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -2122,7 +2708,7 @@ while254_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_RemoveLeft [in 0, out 0, local 23]
+func Tree_RemoveLeft [in 0, out 0, local 34]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -2134,12 +2720,17 @@ func Tree_RemoveLeft [in 0, out 0, local 23]
local[15] = $a0
local[14] = $a1
$s7 = $a2
-while282_test:
- $s7 = $s7
- $s5 = [$s7+0]
- $t0 = local[18]
- $t0 = [$s5+32]
- local[18] = $t0
+while554_test:
+ $s4 = $s7
+ $s7 = $s4
+ $t0 = local[29]
+ $t0 = [$s7+0]
+ local[29] = $t0
+ $t0 = local[28]
+ $t1 = local[29]
+ $t0 = [$t1+32]
+ local[29] = $t1
+ local[28] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2147,41 +2738,60 @@ while282_test:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[28]
+ $t1 = local[28]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[28] = $t1
+ local[28] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[27]
$t0 = $v0
- local[16] = $t0
- $t0 = local[17]
- $t1 = local[16]
+ local[27] = $t0
+ $t0 = local[31]
+ $t1 = local[27]
$t0 = $t1
- local[16] = $t1
- local[17] = $t0
- $t0 = local[17]
- if0 $t0 goto :while282_end
- local[17] = $t0
-while282_body:
- $s7 = $s7
- $t0 = local[22]
- $t0 = [$s7+0]
- local[22] = $t0
+ local[27] = $t1
+ local[31] = $t0
+ $t0 = local[30]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :while554_end
+ local[30] = $t0
+while554_body:
$t0 = local[21]
- $t1 = local[22]
- $t0 = [$t1+24]
- local[22] = $t1
+ $t0 = $s7
local[21] = $t0
- $s7 = $s7
- $t6 = [$s7+0]
- $s3 = [$t6+16]
+ $t0 = local[21]
+ $s7 = $t0
+ local[21] = $t0
+ $t0 = local[24]
+ $t0 = [$s7+0]
+ local[24] = $t0
+ $t0 = local[23]
+ $t1 = local[24]
+ $t0 = [$t1+24]
+ local[24] = $t1
+ local[23] = $t0
+ $t0 = local[20]
+ $t0 = $s7
+ local[20] = $t0
+ $t0 = local[20]
+ $s7 = $t0
+ local[20] = $t0
+ $t0 = local[19]
+ $t0 = [$s7+0]
+ local[19] = $t0
+ $t0 = local[19]
+ $s6 = [$t0+16]
+ local[19] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2189,33 +2799,43 @@ while282_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s4 = $t5
- $s1 = [$s4+0]
- $s2 = [$s1+20]
+ $t0 = local[17]
+ $t0 = $v0
+ local[17] = $t0
+ $t0 = local[17]
+ $t3 = $t0
+ local[17] = $t0
+ $s5 = $t3
+ $t6 = $s5
+ $t7 = [$t6+0]
+ $t4 = [$t7+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- call $s2
+ $a0 = $t6
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $t3 = $s0
+ $t0 = local[18]
+ $t0 = $v0
+ local[18] = $t0
+ $t0 = local[18]
+ $t5 = $t0
+ local[18] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2223,32 +2843,46 @@ while282_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $t3
- $t0 = local[21]
- $t1 = local[21]
+ $a1 = $t5
+ $t0 = local[23]
+ $t1 = local[23]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[23] = $t1
+ local[23] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[19]
+ $t0 = local[32]
$t0 = $v0
- local[19] = $t0
- $t0 = local[20]
- $t1 = local[19]
- $t0 = $t1
- local[19] = $t1
- local[20] = $t0
+ local[32] = $t0
+ $t0 = local[32]
+ $s2 = $t0
+ local[32] = $t0
+ $t0 = local[33]
+ $t0 = $s2
+ local[33] = $t0
+ $s3 = $s7
+ $s0 = $s3
$t0 = local[14]
- $t0 = $s7
+ $t0 = $s0
local[14] = $t0
- $s7 = $s7
- $s6 = [$s7+0]
- $t7 = [$s6+16]
+ $t0 = local[26]
+ $t0 = $s7
+ local[26] = $t0
+ $t0 = local[26]
+ $s7 = $t0
+ local[26] = $t0
+ $t0 = local[25]
+ $t0 = [$s7+0]
+ local[25] = $t0
+ $t0 = local[16]
+ $t1 = local[25]
+ $t0 = [$t1+16]
+ local[25] = $t1
+ local[16] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2256,21 +2890,31 @@ while282_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $t7
+ $t0 = local[16]
+ $t1 = local[16]
+ call $t1
+ local[16] = $t1
+ local[16] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t4 = $v0
- $s7 = $t4
- goto :while282_test
-while282_end:
+ $s1 = $v0
+ $t0 = local[22]
+ $t0 = $s1
+ local[22] = $t0
+ $t0 = local[22]
+ $s7 = $t0
+ local[22] = $t0
+ goto :while554_test
+while554_end:
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $s5 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $s5
local[14] = $t0
$t0 = local[14]
$s5 = [$t0+0]
@@ -2279,6 +2923,7 @@ while282_end:
$t0 = local[15]
$s5 = [$t0+100]
local[15] = $t0
+ $t3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2288,7 +2933,7 @@ while282_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $s5
+ $a1 = $t3
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -2296,20 +2941,23 @@ while282_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- $t0 = local[20]
+ $s5 = $v0
+ $t3 = $s5
+ $t0 = local[33]
$t0 = $t3
- local[20] = $t0
+ local[33] = $t0
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $t3 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $t3
local[14] = $t0
$t0 = local[14]
$t3 = [$t0+0]
local[14] = $t0
$s5 = [$t3+36]
$t3 = 0
+ $s6 = $t3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2319,7 +2967,7 @@ while282_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $t3
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2327,11 +2975,14 @@ while282_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $t0 = local[20]
+ $t3 = $v0
+ $s6 = $t3
+ $t0 = local[33]
$t0 = $s6
- local[20] = $t0
+ local[33] = $t0
$s6 = 1
+ $t3 = $s6
+ $s6 = $t3
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -2342,7 +2993,7 @@ while282_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Search [in 0, out 0, local 27]
+func Tree_Search [in 0, out 0, local 43]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -2354,23 +3005,44 @@ func Tree_Search [in 0, out 0, local 27]
$s6 = $a0
$s7 = $a1
$s5 = $s6
+ $s6 = $s5
+ $s5 = $s6
$s6 = 1
+ $s4 = $s6
+ $s6 = $s4
+ $s4 = 0
+ $s3 = $s4
$t0 = local[14]
- $t0 = 0
+ $t0 = $s3
local[14] = $t0
-while310_test:
+while607_test:
$s3 = $s6
- if0 $s3 goto :while310_end
-while310_body:
- $s5 = $s5
- $t0 = local[24]
+ $t0 = local[36]
+ $t0 = $s3
+ local[36] = $t0
+ $t0 = local[26]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[26] = $t0
+ $t0 = local[26]
+ if0 $t0 goto :while607_end
+ local[26] = $t0
+while607_body:
+ $t0 = local[28]
+ $t0 = $s5
+ local[28] = $t0
+ $t0 = local[28]
+ $s5 = $t0
+ local[28] = $t0
+ $t0 = local[18]
$t0 = [$s5+0]
- local[24] = $t0
- $t0 = local[23]
- $t1 = local[24]
+ local[18] = $t0
+ $t0 = local[17]
+ $t1 = local[18]
$t0 = [$t1+20]
- local[24] = $t1
- local[23] = $t0
+ local[18] = $t1
+ local[17] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2378,58 +3050,57 @@ while310_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[23]
- $t1 = local[23]
+ $t0 = local[17]
+ $t1 = local[17]
call $t1
- local[23] = $t1
- local[23] = $t0
+ local[17] = $t1
+ local[17] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[21]
+ $t0 = local[30]
$t0 = $v0
- local[21] = $t0
+ local[30] = $t0
+ $t0 = local[20]
+ $t1 = local[30]
+ $t0 = $t1
+ local[30] = $t1
+ local[20] = $t0
$t0 = local[22]
- $t1 = local[21]
+ $t1 = local[20]
$t0 = $t1
- local[21] = $t1
+ local[20] = $t1
local[22] = $t0
- $t0 = local[20]
- $t0 = $s7
- local[20] = $t0
- $t0 = local[19]
+ $t4 = $s7
+ $t0 = local[16]
$t1 = local[22]
$t0 = $t1
local[22] = $t1
- local[19] = $t0
- $t0 = local[18]
- $t1 = local[20]
- $t2 = local[19]
- $t0 = LtS($t1 $t2 )
- local[19] = $t2
- local[20] = $t1
- local[18] = $t0
+ local[16] = $t0
+ $t0 = local[42]
+ $t1 = local[16]
+ $t0 = LtS($t4 $t1 )
+ local[16] = $t1
+ local[42] = $t0
$t0 = local[15]
- $t1 = local[18]
+ $t1 = local[42]
$t0 = $t1
- local[18] = $t1
+ local[42] = $t1
local[15] = $t0
$t0 = local[15]
- if0 $t0 goto :if315_else
+ $t7 = $t0
local[15] = $t0
-if315_body:
- $s5 = $s5
- $t0 = local[17]
- $t0 = [$s5+0]
- local[17] = $t0
- $t0 = local[16]
- $t1 = local[17]
- $t0 = [$t1+32]
- local[17] = $t1
- local[16] = $t0
+ if0 $t7 goto :if616_else
+if616_body:
+ $t5 = $s5
+ $s5 = $t5
+ $t6 = [$s5+0]
+ $t0 = local[40]
+ $t0 = [$t6+32]
+ local[40] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2437,32 +3108,44 @@ if315_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[16]
- $t1 = local[16]
+ $t0 = local[40]
+ $t1 = local[40]
call $t1
- local[16] = $t1
- local[16] = $t0
+ local[40] = $t1
+ local[40] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[25]
- $t0 = $v0
- local[25] = $t0
- $t0 = local[25]
- $t4 = $t0
- local[25] = $t0
- if0 $t4 goto :if319_else
-if319_body:
- $s5 = $s5
- $t0 = local[26]
+ $s0 = $v0
+ $t0 = local[39]
+ $t0 = $s0
+ local[39] = $t0
+ $t0 = local[21]
+ $t1 = local[39]
+ $t0 = $t1
+ local[39] = $t1
+ local[21] = $t0
+ $t0 = local[21]
+ if0 $t0 goto :if621_else
+ local[21] = $t0
+if621_body:
+ $t0 = local[33]
+ $t0 = $s5
+ local[33] = $t0
+ $t0 = local[33]
+ $s5 = $t0
+ local[33] = $t0
+ $t0 = local[38]
$t0 = [$s5+0]
- local[26] = $t0
- $t0 = local[26]
- $s0 = [$t0+16]
- local[26] = $t0
+ local[38] = $t0
+ $t0 = local[35]
+ $t1 = local[38]
+ $t0 = [$t1+16]
+ local[38] = $t1
+ local[35] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2470,30 +3153,67 @@ if319_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- call $s0
+ $t0 = local[35]
+ $t1 = local[35]
+ call $t1
+ local[35] = $t1
+ local[35] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s5 = $t5
- goto :if319_end
-if319_else:
- $s6 = 0
-if319_end:
- goto :if315_end
-if315_else:
- $t0 = local[22]
- $t6 = $t0
- local[22] = $t0
- $t7 = $s7
- $s1 = LtS($t6 $t7 )
- $s2 = $s1
- if0 $s2 goto :if326_else
-if326_body:
- $s5 = $s5
+ $t0 = local[34]
+ $t0 = $v0
+ local[34] = $t0
+ $t0 = local[25]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
+ local[25] = $t0
+ $t0 = local[25]
+ $s5 = $t0
+ local[25] = $t0
+ goto :if621_end
+if621_else:
+ $t0 = local[23]
+ $t0 = 0
+ local[23] = $t0
+ $t0 = local[31]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ $s6 = $t0
+ local[31] = $t0
+if621_end:
+ goto :if616_end
+if616_else:
+ $t0 = local[19]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[19] = $t0
+ $s1 = $s7
+ $t0 = local[29]
+ $t1 = local[19]
+ $t0 = LtS($t1 $s1 )
+ local[19] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ $s2 = $t0
+ local[29] = $t0
+ $t0 = local[41]
+ $t0 = $s2
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if634_else
+ local[41] = $t0
+if634_body:
+ $s4 = $s5
+ $s5 = $s4
$s4 = [$s5+0]
$t3 = [$s4+28]
local[8] = $t3
@@ -2512,11 +3232,13 @@ if326_body:
$t8 = local[13]
$s4 = $v0
$t3 = $s4
- if0 $t3 goto :if330_else
-if330_body:
- $s5 = $s5
- $t3 = [$s5+0]
- $s4 = [$t3+12]
+ $s4 = $t3
+ if0 $s4 goto :if639_else
+if639_body:
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $t3 = [$s4+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2524,32 +3246,57 @@ if330_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- call $s4
+ call $t3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
+ $s4 = $v0
+ $t3 = $s4
$s5 = $t3
- goto :if330_end
-if330_else:
- $s6 = 0
-if330_end:
- goto :if326_end
-if326_else:
- $t0 = local[14]
+ goto :if639_end
+if639_else:
+ $t3 = 0
+ $s4 = $t3
+ $s6 = $s4
+if639_end:
+ goto :if634_end
+if634_else:
+ $t0 = local[37]
$t0 = 1
+ local[37] = $t0
+ $t0 = local[27]
+ $t1 = local[37]
+ $t0 = $t1
+ local[37] = $t1
+ local[27] = $t0
+ $t0 = local[14]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
local[14] = $t0
- $s6 = 0
-if326_end:
-if315_end:
- goto :while310_test
-while310_end:
+ $t0 = local[24]
+ $t0 = 0
+ local[24] = $t0
+ $t0 = local[32]
+ $t1 = local[24]
+ $t0 = $t1
+ local[24] = $t1
+ local[32] = $t0
+ $t0 = local[32]
+ $s6 = $t0
+ local[32] = $t0
+if634_end:
+if616_end:
+ goto :while607_test
+while607_end:
$t0 = local[14]
$t4 = $t0
local[14] = $t0
+ $t5 = $t4
+ $t4 = $t5
$v0 = $t4
$s0 = local[0]
$s1 = local[1]
@@ -2569,10 +3316,14 @@ func Tree_Print [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $s6
- $s5 = [$s6+0]
- $s4 = $s7
+ $s7 = $a0
+ $s6 = $s7
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = $s7
+ $s5 = [$s7+0]
+ $s4 = $s6
+ $s6 = $s4
$s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
@@ -2580,8 +3331,8 @@ func Tree_Print [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s4
+ $a0 = $s7
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2589,9 +3340,12 @@ func Tree_Print [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s4 = $s7
+ $s4 = $v0
+ $s6 = $s4
+ $s4 = $s6
$s4 = 1
+ $s6 = $s4
+ $s4 = $s6
$v0 = $s4
$s0 = local[0]
$s1 = local[1]
@@ -2613,7 +3367,8 @@ func Tree_RecPrint [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s4 = [$s5+32]
local[8] = $t3
@@ -2632,12 +3387,15 @@ func Tree_RecPrint [in 0, out 0, local 14]
$t8 = local[13]
$s5 = $v0
$s4 = $s5
- if0 $s4 goto :if342_else
-if342_body:
- $s4 = [$s6+0]
- $s7 = $s7
- $s5 = [$s7+0]
- $s3 = [$s5+16]
+ $s5 = $s4
+ if0 $s5 goto :if670_else
+if670_body:
+ $s5 = $s6
+ $s5 = [$s6+0]
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
+ $s3 = [$s4+16]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2652,9 +3410,9 @@ if342_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s3 = $s5
- $s4 = [$s4+76]
+ $s4 = $v0
+ $s3 = $s4
+ $s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2663,22 +3421,26 @@ if342_body:
local[13] = $t8
$a0 = $s6
$a1 = $s3
- call $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s3 = $s5
- goto :if342_end
-if342_else:
+ $s4 = $v0
+ $s3 = $s4
+ $s4 = $s3
+ goto :if670_end
+if670_else:
$s3 = 1
-if342_end:
- $s7 = $s7
+ $s5 = $s3
+ $s4 = $s5
+if670_end:
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
- $s4 = [$s5+20]
+ $s3 = [$s5+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2686,7 +3448,7 @@ if342_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -2694,11 +3456,13 @@ if342_end:
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
- $s4 = $s5
- PrintIntS($s4 )
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+28]
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2706,21 +3470,24 @@ if342_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s5
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s5 = $s4
- if0 $s5 goto :if356_else
-if356_body:
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ if0 $s5 goto :if693_else
+if693_body:
+ $s5 = $s6
$s5 = [$s6+0]
- $s7 = $s7
- $s4 = [$s7+0]
- $s2 = [$s4+12]
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2735,8 +3502,8 @@ if356_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s2 = $s4
+ $s3 = $v0
+ $s2 = $s3
$s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
@@ -2753,13 +3520,18 @@ if356_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s3 = $s4
- goto :if356_end
-if356_else:
- $s3 = 1
-if356_end:
+ $s3 = $v0
+ $s2 = $s3
+ $s4 = $s2
+ goto :if693_end
+if693_else:
+ $s2 = 1
+ $s3 = $s2
+ $s4 = $s3
+if693_end:
$s3 = 1
+ $s4 = $s3
+ $s3 = $s4
$v0 = $s3
$s0 = local[0]
$s1 = local[1]
diff --git a/output/BubbleSort.s b/output/BubbleSort.s
new file mode 100644
index 0000000..2a220bd
--- /dev/null
+++ b/output/BubbleSort.s
@@ -0,0 +1,1102 @@
+.data
+functable_BBS:
+ BBS_Start
+ BBS_Sort
+ BBS_Print
+ BBS_Init
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 24
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_BBS
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 10
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+BBS_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s4 $s7
+ move $s7 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s7 $s4
+ move $s4 $s7
+ move $s7 $s6
+ lw $s7 0($s6)
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s4 $s7
+ li $s7 99999
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ lw $s7 0($s6)
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s4 $s7
+ move $s7 $s6
+ lw $s7 0($s6)
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s4 $s7
+ li $s7 0
+ move $s4 $s7
+ move $s7 $s4
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+BBS_Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 344
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -160($fp)
+ lw $t0 -160($fp)
+ lw $s6 0($t0)
+ sw $t0 -160($fp)
+ li $s5 1
+ move $a0 $s6
+ move $t9 $s5
+ sub $s4 $a0 $t9
+ move $s5 $s4
+ lw $t0 -156($fp)
+ move $t0 $s5
+ sw $t0 -156($fp)
+ li $s5 0
+ li $s6 1
+ move $a0 $s5
+ move $t9 $s6
+ sub $s3 $a0 $t9
+ move $s6 $s3
+ lw $t0 -152($fp)
+ move $t0 $s6
+ sw $t0 -152($fp)
+while41_test:
+ lw $t0 -148($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -148($fp)
+ lw $t0 -108($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -108($fp)
+ lw $t0 -104($fp)
+ lw $t1 -148($fp)
+ lw $t2 -108($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -108($fp)
+ sw $t1 -148($fp)
+ sw $t0 -104($fp)
+ lw $t0 -92($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ beqz $t0 while41_end
+ sw $t0 -88($fp)
+while41_body:
+ lw $t0 -96($fp)
+ li $t0 1
+ sw $t0 -96($fp)
+ lw $t0 -80($fp)
+ lw $t1 -96($fp)
+ move $t0 $t1
+ sw $t1 -96($fp)
+ sw $t0 -80($fp)
+ lw $t0 -100($fp)
+ lw $t1 -80($fp)
+ move $t0 $t1
+ sw $t1 -80($fp)
+ sw $t0 -100($fp)
+while49_test:
+ lw $t0 -84($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -84($fp)
+ lw $t0 -128($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -128($fp)
+ lw $t0 -72($fp)
+ li $t0 1
+ sw $t0 -72($fp)
+ lw $t0 -120($fp)
+ lw $t1 -128($fp)
+ lw $t2 -72($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -72($fp)
+ sw $t1 -128($fp)
+ sw $t0 -120($fp)
+ lw $t0 -112($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -112($fp)
+ lw $t0 -140($fp)
+ lw $t1 -112($fp)
+ move $t0 $t1
+ sw $t1 -112($fp)
+ sw $t0 -140($fp)
+ lw $t0 -76($fp)
+ lw $t1 -84($fp)
+ lw $t2 -140($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -140($fp)
+ sw $t1 -84($fp)
+ sw $t0 -76($fp)
+ lw $t0 -144($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -144($fp)
+ lw $t0 -136($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ beqz $t0 while49_end
+ sw $t0 -136($fp)
+while49_body:
+ lw $t0 -256($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -256($fp)
+ lw $t0 -192($fp)
+ li $t0 1
+ sw $t0 -192($fp)
+ lw $t0 -260($fp)
+ lw $t1 -256($fp)
+ lw $t2 -192($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -192($fp)
+ sw $t1 -256($fp)
+ sw $t0 -260($fp)
+ lw $t0 -236($fp)
+ lw $t1 -260($fp)
+ move $t0 $t1
+ sw $t1 -260($fp)
+ sw $t0 -236($fp)
+ lw $t0 -288($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -288($fp)
+ lw $t0 -208($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -208($fp)
+ lw $t0 -244($fp)
+ lw $t1 -208($fp)
+ move $t0 $t1
+ sw $t1 -208($fp)
+ sw $t0 -244($fp)
+ lw $t0 -220($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -220($fp)
+ lw $t0 -204($fp)
+ lw $t1 -220($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -220($fp)
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ lw $t1 -204($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -204($fp)
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ lw $t1 -244($fp)
+ lw $t2 -204($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -204($fp)
+ sw $t1 -244($fp)
+ sw $t0 -204($fp)
+ lw $t0 -252($fp)
+ lw $t1 -204($fp)
+ lw $t0 0($t1)
+ sw $t1 -204($fp)
+ sw $t0 -252($fp)
+ lw $t0 -216($fp)
+ lw $t1 -252($fp)
+ move $t0 $t1
+ sw $t1 -252($fp)
+ sw $t0 -216($fp)
+ lw $t0 -228($fp)
+ lw $t1 -216($fp)
+ move $t0 $t1
+ sw $t1 -216($fp)
+ sw $t0 -228($fp)
+ lw $t0 -164($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -164($fp)
+ lw $t0 -164($fp)
+ move $t6 $t0
+ sw $t0 -164($fp)
+ lw $t0 -172($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -172($fp)
+ lw $t0 -172($fp)
+ move $a0 $t0
+ li $t9 4
+ mul $s7 $a0 $t9
+ sw $t0 -172($fp)
+ move $a0 $s7
+ li $t9 4
+ add $s7 $a0 $t9
+ move $a0 $t6
+ move $t9 $s7
+ add $s7 $a0 $t9
+ lw $s0 0($s7)
+ lw $t0 -168($fp)
+ move $t0 $s0
+ sw $t0 -168($fp)
+ lw $t0 -176($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ move $s5 $t0
+ sw $t0 -176($fp)
+ lw $t0 -228($fp)
+ move $s4 $t0
+ sw $t0 -228($fp)
+ move $a0 $s5
+ move $t9 $s4
+ slt $s6 $a0 $t9
+ move $s3 $s6
+ lw $t0 -308($fp)
+ move $t0 $s3
+ sw $t0 -308($fp)
+ lw $t0 -308($fp)
+ beqz $t0 if75_else
+ sw $t0 -308($fp)
+if75_body:
+ lw $t0 -336($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -336($fp)
+ lw $t0 -332($fp)
+ li $t0 1
+ sw $t0 -332($fp)
+ lw $t0 -312($fp)
+ lw $t1 -336($fp)
+ lw $t2 -332($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -332($fp)
+ sw $t1 -336($fp)
+ sw $t0 -312($fp)
+ lw $t0 -344($fp)
+ lw $t1 -312($fp)
+ move $t0 $t1
+ sw $t1 -312($fp)
+ sw $t0 -344($fp)
+ lw $t0 -316($fp)
+ lw $t1 -344($fp)
+ move $t0 $t1
+ sw $t1 -344($fp)
+ sw $t0 -316($fp)
+ lw $t0 -328($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -328($fp)
+ lw $t0 -320($fp)
+ lw $t1 -328($fp)
+ move $t0 $t1
+ sw $t1 -328($fp)
+ sw $t0 -320($fp)
+ lw $t0 -264($fp)
+ lw $t1 -316($fp)
+ move $t0 $t1
+ sw $t1 -316($fp)
+ sw $t0 -264($fp)
+ lw $t0 -268($fp)
+ lw $t1 -264($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -264($fp)
+ sw $t0 -268($fp)
+ lw $t0 -268($fp)
+ lw $t1 -268($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -268($fp)
+ sw $t0 -268($fp)
+ lw $t0 -268($fp)
+ lw $t1 -320($fp)
+ lw $t2 -268($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -268($fp)
+ sw $t1 -320($fp)
+ sw $t0 -268($fp)
+ lw $t0 -324($fp)
+ lw $t1 -268($fp)
+ lw $t0 0($t1)
+ sw $t1 -268($fp)
+ sw $t0 -324($fp)
+ lw $t0 -276($fp)
+ lw $t1 -324($fp)
+ move $t0 $t1
+ sw $t1 -324($fp)
+ sw $t0 -276($fp)
+ lw $t0 -340($fp)
+ lw $t1 -276($fp)
+ move $t0 $t1
+ sw $t1 -276($fp)
+ sw $t0 -340($fp)
+ lw $t0 -272($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -272($fp)
+ lw $t0 -292($fp)
+ lw $t1 -316($fp)
+ move $t0 $t1
+ sw $t1 -316($fp)
+ sw $t0 -292($fp)
+ lw $t0 -304($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -304($fp)
+ lw $t0 -296($fp)
+ lw $t1 -304($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -304($fp)
+ sw $t0 -296($fp)
+ lw $t0 -296($fp)
+ lw $t1 -296($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -296($fp)
+ sw $t0 -296($fp)
+ lw $t0 -296($fp)
+ lw $t1 -272($fp)
+ lw $t2 -296($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -296($fp)
+ sw $t1 -272($fp)
+ sw $t0 -296($fp)
+ lw $t0 -280($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -280($fp)
+ lw $t0 -284($fp)
+ lw $t1 -280($fp)
+ move $t0 $t1
+ sw $t1 -280($fp)
+ sw $t0 -284($fp)
+ lw $t0 -184($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -184($fp)
+ lw $t0 -200($fp)
+ lw $t1 -184($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -184($fp)
+ sw $t0 -200($fp)
+ lw $t0 -200($fp)
+ lw $t1 -200($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -200($fp)
+ sw $t0 -200($fp)
+ lw $t0 -200($fp)
+ lw $t1 -284($fp)
+ lw $t2 -200($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -200($fp)
+ sw $t1 -284($fp)
+ sw $t0 -200($fp)
+ lw $t0 -300($fp)
+ lw $t1 -200($fp)
+ lw $t0 0($t1)
+ sw $t1 -200($fp)
+ sw $t0 -300($fp)
+ lw $t0 -180($fp)
+ lw $t1 -300($fp)
+ move $t0 $t1
+ sw $t1 -300($fp)
+ sw $t0 -180($fp)
+ lw $t0 -296($fp)
+ lw $t1 -180($fp)
+ sw $t1 0($t0)
+ sw $t1 -180($fp)
+ sw $t0 -296($fp)
+ lw $t0 -196($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -196($fp)
+ lw $t0 -232($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -232($fp)
+ lw $t0 -224($fp)
+ lw $t1 -232($fp)
+ move $t0 $t1
+ sw $t1 -232($fp)
+ sw $t0 -224($fp)
+ lw $t0 -188($fp)
+ lw $t1 -224($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -224($fp)
+ sw $t0 -188($fp)
+ lw $t0 -188($fp)
+ lw $t1 -188($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -188($fp)
+ sw $t0 -188($fp)
+ lw $t0 -188($fp)
+ lw $t1 -196($fp)
+ lw $t2 -188($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -188($fp)
+ sw $t1 -196($fp)
+ sw $t0 -188($fp)
+ lw $t0 -248($fp)
+ lw $t1 -340($fp)
+ move $t0 $t1
+ sw $t1 -340($fp)
+ sw $t0 -248($fp)
+ lw $t0 -240($fp)
+ lw $t1 -248($fp)
+ move $t0 $t1
+ sw $t1 -248($fp)
+ sw $t0 -240($fp)
+ lw $t0 -188($fp)
+ lw $t1 -240($fp)
+ sw $t1 0($t0)
+ sw $t1 -240($fp)
+ sw $t0 -188($fp)
+ j if75_end
+if75_else:
+ li $s2 0
+ move $s1 $s2
+ lw $t0 -212($fp)
+ move $t0 $s1
+ sw $t0 -212($fp)
+if75_end:
+ lw $t0 -100($fp)
+ move $t3 $t0
+ sw $t0 -100($fp)
+ li $t7 1
+ move $a0 $t3
+ move $t9 $t7
+ add $t4 $a0 $t9
+ move $t5 $t4
+ lw $t0 -100($fp)
+ move $t0 $t5
+ sw $t0 -100($fp)
+ j while49_test
+while49_end:
+ lw $t0 -132($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -132($fp)
+ lw $t0 -68($fp)
+ li $t0 1
+ sw $t0 -68($fp)
+ lw $t0 -124($fp)
+ lw $t1 -132($fp)
+ lw $t2 -68($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -68($fp)
+ sw $t1 -132($fp)
+ sw $t0 -124($fp)
+ lw $t0 -116($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -116($fp)
+ lw $t0 -156($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -156($fp)
+ j while41_test
+while41_end:
+ li $s7 0
+ move $s4 $s7
+ move $s7 $s4
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 344
+ jr $ra
+BBS_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 92
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s5 $s7
+ move $s7 $s5
+while121_test:
+ move $s5 $s7
+ lw $t0 -76($fp)
+ lw $t0 0($s6)
+ sw $t0 -76($fp)
+ lw $t0 -84($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ lw $t0 -72($fp)
+ lw $t1 -80($fp)
+ move $a0 $s5
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -80($fp)
+ sw $t0 -72($fp)
+ lw $t0 -92($fp)
+ lw $t1 -72($fp)
+ move $t0 $t1
+ sw $t1 -72($fp)
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ beqz $t0 while121_end
+ sw $t0 -88($fp)
+while121_body:
+ lw $t6 0($s6)
+ move $t5 $t6
+ move $s4 $s7
+ move $a0 $s4
+ li $t9 4
+ mul $s3 $a0 $t9
+ move $a0 $s3
+ li $t9 4
+ add $s3 $a0 $t9
+ move $a0 $t5
+ move $t9 $s3
+ add $s3 $a0 $t9
+ lw $s0 0($s3)
+ move $s1 $s0
+ move $s2 $s1
+ move $a0 $s2
+ jal _print
+ move $t4 $s7
+ lw $t0 -68($fp)
+ li $t0 1
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $a0 $t4
+ move $t9 $t0
+ add $t3 $a0 $t9
+ sw $t0 -68($fp)
+ move $t7 $t3
+ move $s7 $t7
+ j while121_test
+while121_end:
+ li $t3 0
+ move $t4 $t3
+ move $t3 $t4
+ move $v0 $t3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 92
+ jr $ra
+BBS_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s4 $s7
+ sw $s4 0($s5)
+ move $s4 $s6
+ move $s6 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s4 $s6
+ sw $s4 0($s5)
+ lw $s4 0($s5)
+ li $s6 0
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 20
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 1
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 7
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 2
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 12
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 3
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 18
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 4
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 2
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 5
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 11
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 6
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 6
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 7
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 9
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 8
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 19
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s5 9
+ move $s6 $s5
+ move $a0 $s6
+ li $t9 4
+ mul $s5 $a0 $t9
+ move $a0 $s5
+ li $t9 4
+ add $s5 $a0 $t9
+ move $a0 $s7
+ move $t9 $s5
+ add $s5 $a0 $t9
+ li $s7 5
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 0
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/BubbleSort.vaporm b/output/BubbleSort.vaporm
index e69de29..ccc8e40 100644
--- a/output/BubbleSort.vaporm
+++ b/output/BubbleSort.vaporm
@@ -0,0 +1,897 @@
+const functable_BBS
+ :BBS_Start
+ :BBS_Sort
+ :BBS_Print
+ :BBS_Init
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(24 )
+ [$s7+0] = :functable_BBS
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 10
+ $s4 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s4
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func BBS_Start [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = $a1
+ $s5 = $s6
+ $s5 = [$s6+0]
+ $s4 = $s7
+ $s7 = $s4
+ $s5 = [$s5+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s7 = $s4
+ $s4 = $s7
+ $s7 = $s6
+ $s7 = [$s6+0]
+ $s7 = [$s7+8]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s7 = $s5
+ $s4 = $s7
+ $s7 = 99999
+ $s5 = $s7
+ $s7 = $s5
+ PrintIntS($s7 )
+ $s7 = $s6
+ $s7 = [$s6+0]
+ $s7 = [$s7+4]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s7 = $s5
+ $s4 = $s7
+ $s7 = $s6
+ $s7 = [$s6+0]
+ $s7 = [$s7+8]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s7 = $s5
+ $s4 = $s7
+ $s7 = 0
+ $s4 = $s7
+ $s7 = $s4
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func BBS_Sort [in 0, out 0, local 84]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ local[37] = $a0
+ $t0 = local[37]
+ $s6 = [$t0+20]
+ local[37] = $t0
+ $s5 = 1
+ $s4 = Sub($s6 $s5 )
+ $s5 = $s4
+ $t0 = local[36]
+ $t0 = $s5
+ local[36] = $t0
+ $s5 = 0
+ $s6 = 1
+ $s3 = Sub($s5 $s6 )
+ $s6 = $s3
+ $t0 = local[35]
+ $t0 = $s6
+ local[35] = $t0
+while41_test:
+ $t0 = local[34]
+ $t1 = local[35]
+ $t0 = $t1
+ local[35] = $t1
+ local[34] = $t0
+ $t0 = local[24]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[24] = $t0
+ $t0 = local[23]
+ $t1 = local[34]
+ $t2 = local[24]
+ $t0 = LtS($t1 $t2 )
+ local[24] = $t2
+ local[34] = $t1
+ local[23] = $t0
+ $t0 = local[20]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[20] = $t0
+ $t0 = local[19]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ if0 $t0 goto :while41_end
+ local[19] = $t0
+while41_body:
+ $t0 = local[21]
+ $t0 = 1
+ local[21] = $t0
+ $t0 = local[17]
+ $t1 = local[21]
+ $t0 = $t1
+ local[21] = $t1
+ local[17] = $t0
+ $t0 = local[22]
+ $t1 = local[17]
+ $t0 = $t1
+ local[17] = $t1
+ local[22] = $t0
+while49_test:
+ $t0 = local[18]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[18] = $t0
+ $t0 = local[29]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[29] = $t0
+ $t0 = local[15]
+ $t0 = 1
+ local[15] = $t0
+ $t0 = local[27]
+ $t1 = local[29]
+ $t2 = local[15]
+ $t0 = Add($t1 $t2 )
+ local[15] = $t2
+ local[29] = $t1
+ local[27] = $t0
+ $t0 = local[25]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
+ local[25] = $t0
+ $t0 = local[32]
+ $t1 = local[25]
+ $t0 = $t1
+ local[25] = $t1
+ local[32] = $t0
+ $t0 = local[16]
+ $t1 = local[18]
+ $t2 = local[32]
+ $t0 = LtS($t1 $t2 )
+ local[32] = $t2
+ local[18] = $t1
+ local[16] = $t0
+ $t0 = local[33]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[33] = $t0
+ $t0 = local[31]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ if0 $t0 goto :while49_end
+ local[31] = $t0
+while49_body:
+ $t0 = local[61]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[61] = $t0
+ $t0 = local[45]
+ $t0 = 1
+ local[45] = $t0
+ $t0 = local[62]
+ $t1 = local[61]
+ $t2 = local[45]
+ $t0 = Sub($t1 $t2 )
+ local[45] = $t2
+ local[61] = $t1
+ local[62] = $t0
+ $t0 = local[56]
+ $t1 = local[62]
+ $t0 = $t1
+ local[62] = $t1
+ local[56] = $t0
+ $t0 = local[69]
+ $t1 = local[56]
+ $t0 = $t1
+ local[56] = $t1
+ local[69] = $t0
+ $t0 = local[49]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[49] = $t0
+ $t0 = local[58]
+ $t1 = local[49]
+ $t0 = $t1
+ local[49] = $t1
+ local[58] = $t0
+ $t0 = local[52]
+ $t1 = local[69]
+ $t0 = $t1
+ local[69] = $t1
+ local[52] = $t0
+ $t0 = local[48]
+ $t1 = local[52]
+ $t0 = MulS($t1 4 )
+ local[52] = $t1
+ local[48] = $t0
+ $t0 = local[48]
+ $t1 = local[48]
+ $t0 = Add($t1 4 )
+ local[48] = $t1
+ local[48] = $t0
+ $t0 = local[48]
+ $t1 = local[58]
+ $t2 = local[48]
+ $t0 = Add($t1 $t2 )
+ local[48] = $t2
+ local[58] = $t1
+ local[48] = $t0
+ $t0 = local[60]
+ $t1 = local[48]
+ $t0 = [$t1+0]
+ local[48] = $t1
+ local[60] = $t0
+ $t0 = local[51]
+ $t1 = local[60]
+ $t0 = $t1
+ local[60] = $t1
+ local[51] = $t0
+ $t0 = local[54]
+ $t1 = local[51]
+ $t0 = $t1
+ local[51] = $t1
+ local[54] = $t0
+ $t0 = local[38]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[38] = $t0
+ $t0 = local[38]
+ $t6 = $t0
+ local[38] = $t0
+ $t0 = local[40]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[40] = $t0
+ $t0 = local[40]
+ $s7 = MulS($t0 4 )
+ local[40] = $t0
+ $s7 = Add($s7 4 )
+ $s7 = Add($t6 $s7 )
+ $s0 = [$s7+0]
+ $t0 = local[39]
+ $t0 = $s0
+ local[39] = $t0
+ $t0 = local[41]
+ $t1 = local[39]
+ $t0 = $t1
+ local[39] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ $s5 = $t0
+ local[41] = $t0
+ $t0 = local[54]
+ $s4 = $t0
+ local[54] = $t0
+ $s6 = LtS($s5 $s4 )
+ $s3 = $s6
+ $t0 = local[74]
+ $t0 = $s3
+ local[74] = $t0
+ $t0 = local[74]
+ if0 $t0 goto :if75_else
+ local[74] = $t0
+if75_body:
+ $t0 = local[81]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[81] = $t0
+ $t0 = local[80]
+ $t0 = 1
+ local[80] = $t0
+ $t0 = local[75]
+ $t1 = local[81]
+ $t2 = local[80]
+ $t0 = Sub($t1 $t2 )
+ local[80] = $t2
+ local[81] = $t1
+ local[75] = $t0
+ $t0 = local[83]
+ $t1 = local[75]
+ $t0 = $t1
+ local[75] = $t1
+ local[83] = $t0
+ $t0 = local[76]
+ $t1 = local[83]
+ $t0 = $t1
+ local[83] = $t1
+ local[76] = $t0
+ $t0 = local[79]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[79] = $t0
+ $t0 = local[77]
+ $t1 = local[79]
+ $t0 = $t1
+ local[79] = $t1
+ local[77] = $t0
+ $t0 = local[63]
+ $t1 = local[76]
+ $t0 = $t1
+ local[76] = $t1
+ local[63] = $t0
+ $t0 = local[64]
+ $t1 = local[63]
+ $t0 = MulS($t1 4 )
+ local[63] = $t1
+ local[64] = $t0
+ $t0 = local[64]
+ $t1 = local[64]
+ $t0 = Add($t1 4 )
+ local[64] = $t1
+ local[64] = $t0
+ $t0 = local[64]
+ $t1 = local[77]
+ $t2 = local[64]
+ $t0 = Add($t1 $t2 )
+ local[64] = $t2
+ local[77] = $t1
+ local[64] = $t0
+ $t0 = local[78]
+ $t1 = local[64]
+ $t0 = [$t1+0]
+ local[64] = $t1
+ local[78] = $t0
+ $t0 = local[66]
+ $t1 = local[78]
+ $t0 = $t1
+ local[78] = $t1
+ local[66] = $t0
+ $t0 = local[82]
+ $t1 = local[66]
+ $t0 = $t1
+ local[66] = $t1
+ local[82] = $t0
+ $t0 = local[65]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[65] = $t0
+ $t0 = local[70]
+ $t1 = local[76]
+ $t0 = $t1
+ local[76] = $t1
+ local[70] = $t0
+ $t0 = local[73]
+ $t1 = local[70]
+ $t0 = $t1
+ local[70] = $t1
+ local[73] = $t0
+ $t0 = local[71]
+ $t1 = local[73]
+ $t0 = MulS($t1 4 )
+ local[73] = $t1
+ local[71] = $t0
+ $t0 = local[71]
+ $t1 = local[71]
+ $t0 = Add($t1 4 )
+ local[71] = $t1
+ local[71] = $t0
+ $t0 = local[71]
+ $t1 = local[65]
+ $t2 = local[71]
+ $t0 = Add($t1 $t2 )
+ local[71] = $t2
+ local[65] = $t1
+ local[71] = $t0
+ $t0 = local[67]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[67] = $t0
+ $t0 = local[68]
+ $t1 = local[67]
+ $t0 = $t1
+ local[67] = $t1
+ local[68] = $t0
+ $t0 = local[43]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[43] = $t0
+ $t0 = local[47]
+ $t1 = local[43]
+ $t0 = MulS($t1 4 )
+ local[43] = $t1
+ local[47] = $t0
+ $t0 = local[47]
+ $t1 = local[47]
+ $t0 = Add($t1 4 )
+ local[47] = $t1
+ local[47] = $t0
+ $t0 = local[47]
+ $t1 = local[68]
+ $t2 = local[47]
+ $t0 = Add($t1 $t2 )
+ local[47] = $t2
+ local[68] = $t1
+ local[47] = $t0
+ $t0 = local[72]
+ $t1 = local[47]
+ $t0 = [$t1+0]
+ local[47] = $t1
+ local[72] = $t0
+ $t0 = local[42]
+ $t1 = local[72]
+ $t0 = $t1
+ local[72] = $t1
+ local[42] = $t0
+ $t0 = local[71]
+ $t1 = local[42]
+ [$t0+0] = $t1
+ local[42] = $t1
+ local[71] = $t0
+ $t0 = local[46]
+ $t1 = local[37]
+ $t0 = [$t1+16]
+ local[37] = $t1
+ local[46] = $t0
+ $t0 = local[55]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[55] = $t0
+ $t0 = local[53]
+ $t1 = local[55]
+ $t0 = $t1
+ local[55] = $t1
+ local[53] = $t0
+ $t0 = local[44]
+ $t1 = local[53]
+ $t0 = MulS($t1 4 )
+ local[53] = $t1
+ local[44] = $t0
+ $t0 = local[44]
+ $t1 = local[44]
+ $t0 = Add($t1 4 )
+ local[44] = $t1
+ local[44] = $t0
+ $t0 = local[44]
+ $t1 = local[46]
+ $t2 = local[44]
+ $t0 = Add($t1 $t2 )
+ local[44] = $t2
+ local[46] = $t1
+ local[44] = $t0
+ $t0 = local[59]
+ $t1 = local[82]
+ $t0 = $t1
+ local[82] = $t1
+ local[59] = $t0
+ $t0 = local[57]
+ $t1 = local[59]
+ $t0 = $t1
+ local[59] = $t1
+ local[57] = $t0
+ $t0 = local[44]
+ $t1 = local[57]
+ [$t0+0] = $t1
+ local[57] = $t1
+ local[44] = $t0
+ goto :if75_end
+if75_else:
+ $s2 = 0
+ $s1 = $s2
+ $t0 = local[50]
+ $t0 = $s1
+ local[50] = $t0
+if75_end:
+ $t0 = local[22]
+ $t3 = $t0
+ local[22] = $t0
+ $t7 = 1
+ $t4 = Add($t3 $t7 )
+ $t5 = $t4
+ $t0 = local[22]
+ $t0 = $t5
+ local[22] = $t0
+ goto :while49_test
+while49_end:
+ $t0 = local[30]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[30] = $t0
+ $t0 = local[14]
+ $t0 = 1
+ local[14] = $t0
+ $t0 = local[28]
+ $t1 = local[30]
+ $t2 = local[14]
+ $t0 = Sub($t1 $t2 )
+ local[14] = $t2
+ local[30] = $t1
+ local[28] = $t0
+ $t0 = local[26]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
+ local[26] = $t0
+ $t0 = local[36]
+ $t1 = local[26]
+ $t0 = $t1
+ local[26] = $t1
+ local[36] = $t0
+ goto :while41_test
+while41_end:
+ $s7 = 0
+ $s4 = $s7
+ $s7 = $s4
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func BBS_Print [in 0, out 0, local 21]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = 0
+ $s5 = $s7
+ $s7 = $s5
+while121_test:
+ $s5 = $s7
+ $t0 = local[16]
+ $t0 = [$s6+20]
+ local[16] = $t0
+ $t0 = local[18]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[18] = $t0
+ $t0 = local[17]
+ $t1 = local[18]
+ $t0 = $t1
+ local[18] = $t1
+ local[17] = $t0
+ $t0 = local[15]
+ $t1 = local[17]
+ $t0 = LtS($s5 $t1 )
+ local[17] = $t1
+ local[15] = $t0
+ $t0 = local[20]
+ $t1 = local[15]
+ $t0 = $t1
+ local[15] = $t1
+ local[20] = $t0
+ $t0 = local[19]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ if0 $t0 goto :while121_end
+ local[19] = $t0
+while121_body:
+ $t6 = [$s6+16]
+ $t5 = $t6
+ $s4 = $s7
+ $s3 = MulS($s4 4 )
+ $s3 = Add($s3 4 )
+ $s3 = Add($t5 $s3 )
+ $s0 = [$s3+0]
+ $s1 = $s0
+ $s2 = $s1
+ PrintIntS($s2 )
+ $t4 = $s7
+ $t0 = local[14]
+ $t0 = 1
+ local[14] = $t0
+ $t0 = local[14]
+ $t3 = Add($t4 $t0 )
+ local[14] = $t0
+ $t7 = $t3
+ $s7 = $t7
+ goto :while121_test
+while121_end:
+ $t3 = 0
+ $t4 = $t3
+ $t3 = $t4
+ $v0 = $t3
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func BBS_Init [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s4 = $s7
+ [$s5+20] = $s4
+ $s4 = $s6
+ $s6 = $s4
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call :AllocArray
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s6 = $s4
+ $s4 = $s6
+ [$s5+16] = $s4
+ $s4 = [$s5+16]
+ $s6 = 0
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 20
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 1
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 7
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 2
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 12
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 3
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 18
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 4
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 2
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 5
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 11
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 6
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 6
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 7
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 9
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 8
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 19
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s5 = 9
+ $s6 = $s5
+ $s5 = MulS($s6 4 )
+ $s5 = Add($s5 4 )
+ $s5 = Add($s7 $s5 )
+ $s7 = 5
+ $s6 = $s7
+ [$s5+0] = $s6
+ $s6 = 0
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/Factorial.s b/output/Factorial.s
new file mode 100644
index 0000000..b86b54c
--- /dev/null
+++ b/output/Factorial.s
@@ -0,0 +1,199 @@
+.data
+functable_Fac:
+ Fac_ComputeFac
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Fac
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 10
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Fac_ComputeFac:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s7
+ li $s4 1
+ move $a0 $s5
+ move $t9 $s4
+ slt $s3 $a0 $t9
+ move $s4 $s3
+ move $s3 $s4
+ beqz $s3 if9_else
+if9_body:
+ li $s3 1
+ move $s4 $s3
+ move $s3 $s4
+ j if9_end
+if9_else:
+ move $s4 $s7
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s2 $s7
+ li $s7 1
+ move $a0 $s2
+ move $t9 $s7
+ sub $s1 $a0 $t9
+ move $s7 $s1
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $s7 $s1
+ move $s1 $s7
+ move $a0 $s4
+ move $t9 $s1
+ mul $s7 $a0 $t9
+ move $s1 $s7
+ move $s3 $s1
+if9_end:
+ move $s1 $s3
+ move $s3 $s1
+ move $s1 $s3
+ move $v0 $s1
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/Factorial.vaporm b/output/Factorial.vaporm
index 714dcb0..7276527 100644
--- a/output/Factorial.vaporm
+++ b/output/Factorial.vaporm
@@ -12,17 +12,19 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_Fac
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
- $s7 = 10
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 10
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s7
+ $a0 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -30,9 +32,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s7 = $s4
- PrintIntS($s7 )
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -57,12 +60,16 @@ func Fac_ComputeFac [in 0, out 0, local 14]
$s4 = 1
$s3 = LtS($s5 $s4 )
$s4 = $s3
- if0 $s4 goto :if6_else
-if6_body:
- $s4 = 1
- goto :if6_end
-if6_else:
- $s3 = $s7
+ $s3 = $s4
+ if0 $s3 goto :if9_else
+if9_body:
+ $s3 = 1
+ $s4 = $s3
+ $s3 = $s4
+ goto :if9_end
+if9_else:
+ $s4 = $s7
+ $s5 = $s6
$s5 = [$s6+0]
$s2 = $s7
$s7 = 1
@@ -86,10 +93,14 @@ if6_else:
$t8 = local[13]
$s1 = $v0
$s7 = $s1
- $s1 = MulS($s3 $s7 )
- $s4 = $s1
-if6_end:
- $s1 = $s4
+ $s1 = $s7
+ $s7 = MulS($s4 $s1 )
+ $s1 = $s7
+ $s3 = $s1
+if9_end:
+ $s1 = $s3
+ $s3 = $s1
+ $s1 = $s3
$v0 = $s1
$s0 = local[0]
$s1 = local[1]
diff --git a/output/LinearSearch.s b/output/LinearSearch.s
new file mode 100644
index 0000000..b320fd7
--- /dev/null
+++ b/output/LinearSearch.s
@@ -0,0 +1,931 @@
+.data
+functable_LS:
+ LS_Start
+ LS_Print
+ LS_Search
+ LS_Init
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 24
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_LS
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 10
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+LS_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s4 $s7
+ move $s7 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s7 $s4
+ move $s4 $s7
+ move $s4 $s6
+ lw $s4 0($s6)
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ li $s7 9999
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ lw $s7 0($s6)
+ li $s4 8
+ move $s5 $s4
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s4 $s5
+ move $a0 $s4
+ jal _print
+ move $s4 $s6
+ lw $s4 0($s6)
+ li $s5 12
+ move $s7 $s5
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s5 $s7
+ move $a0 $s5
+ jal _print
+ move $s5 $s6
+ lw $s5 0($s6)
+ li $s7 17
+ move $s4 $s7
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ lw $s7 0($s6)
+ li $s4 50
+ move $s5 $s4
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s4 $s5
+ move $a0 $s4
+ jal _print
+ li $s4 55
+ move $s5 $s4
+ move $s4 $s5
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+LS_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 92
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 1
+ move $s5 $s7
+ move $s7 $s5
+while55_test:
+ move $s5 $s7
+ lw $t0 -76($fp)
+ lw $t0 0($s6)
+ sw $t0 -76($fp)
+ lw $t0 -84($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ lw $t0 -72($fp)
+ lw $t1 -80($fp)
+ move $a0 $s5
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -80($fp)
+ sw $t0 -72($fp)
+ lw $t0 -92($fp)
+ lw $t1 -72($fp)
+ move $t0 $t1
+ sw $t1 -72($fp)
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ beqz $t0 while55_end
+ sw $t0 -88($fp)
+while55_body:
+ lw $t6 0($s6)
+ move $t5 $t6
+ move $s4 $s7
+ move $a0 $s4
+ li $t9 4
+ mul $s3 $a0 $t9
+ move $a0 $s3
+ li $t9 4
+ add $s3 $a0 $t9
+ move $a0 $t5
+ move $t9 $s3
+ add $s3 $a0 $t9
+ lw $s0 0($s3)
+ move $s1 $s0
+ move $s2 $s1
+ move $a0 $s2
+ jal _print
+ move $t4 $s7
+ lw $t0 -68($fp)
+ li $t0 1
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $a0 $t4
+ move $t9 $t0
+ add $t3 $a0 $t9
+ sw $t0 -68($fp)
+ move $t7 $t3
+ move $s7 $t7
+ j while55_test
+while55_end:
+ li $t3 0
+ move $t4 $t3
+ move $t3 $t4
+ move $v0 $t3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 92
+ jr $ra
+LS_Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 228
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $s5 1
+ move $s4 $s5
+ move $s5 $s4
+ li $s4 0
+ move $s3 $s4
+ move $s4 $s3
+ li $s3 0
+ move $s2 $s3
+ lw $t0 -68($fp)
+ move $t0 $s2
+ sw $t0 -68($fp)
+while83_test:
+ move $s2 $s5
+ lw $t0 -216($fp)
+ lw $t0 0($s6)
+ sw $t0 -216($fp)
+ lw $t0 -188($fp)
+ lw $t1 -216($fp)
+ move $t0 $t1
+ sw $t1 -216($fp)
+ sw $t0 -188($fp)
+ lw $t0 -180($fp)
+ lw $t1 -188($fp)
+ move $t0 $t1
+ sw $t1 -188($fp)
+ sw $t0 -180($fp)
+ lw $t0 -200($fp)
+ lw $t1 -180($fp)
+ move $a0 $s2
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -180($fp)
+ sw $t0 -200($fp)
+ lw $t0 -196($fp)
+ lw $t1 -200($fp)
+ move $t0 $t1
+ sw $t1 -200($fp)
+ sw $t0 -196($fp)
+ lw $t0 -192($fp)
+ lw $t1 -196($fp)
+ move $t0 $t1
+ sw $t1 -196($fp)
+ sw $t0 -192($fp)
+ lw $t0 -192($fp)
+ beqz $t0 while83_end
+ sw $t0 -192($fp)
+while83_body:
+ lw $t0 -140($fp)
+ lw $t0 0($s6)
+ sw $t0 -140($fp)
+ lw $t0 -160($fp)
+ lw $t1 -140($fp)
+ move $t0 $t1
+ sw $t1 -140($fp)
+ sw $t0 -160($fp)
+ lw $t0 -148($fp)
+ move $t0 $s5
+ sw $t0 -148($fp)
+ lw $t0 -136($fp)
+ lw $t1 -148($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -148($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ lw $t1 -136($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -136($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ lw $t1 -160($fp)
+ lw $t2 -136($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -136($fp)
+ sw $t1 -160($fp)
+ sw $t0 -136($fp)
+ lw $t0 -152($fp)
+ lw $t1 -136($fp)
+ lw $t0 0($t1)
+ sw $t1 -136($fp)
+ sw $t0 -152($fp)
+ lw $t0 -144($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -144($fp)
+ lw $t0 -156($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -156($fp)
+ lw $t0 -132($fp)
+ move $t0 $s7
+ sw $t0 -132($fp)
+ lw $t0 -128($fp)
+ li $t0 1
+ sw $t0 -128($fp)
+ lw $t0 -120($fp)
+ lw $t1 -132($fp)
+ lw $t2 -128($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -128($fp)
+ sw $t1 -132($fp)
+ sw $t0 -120($fp)
+ lw $t0 -116($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -116($fp)
+ lw $t0 -124($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -124($fp)
+ lw $t0 -76($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -76($fp)
+ lw $t0 -100($fp)
+ move $t0 $s7
+ sw $t0 -100($fp)
+ lw $t0 -112($fp)
+ lw $t1 -76($fp)
+ lw $t2 -100($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -100($fp)
+ sw $t1 -76($fp)
+ sw $t0 -112($fp)
+ lw $t0 -96($fp)
+ lw $t1 -112($fp)
+ move $t0 $t1
+ sw $t1 -112($fp)
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t1 -96($fp)
+ move $t0 $t1
+ sw $t1 -96($fp)
+ sw $t0 -108($fp)
+ lw $t0 -108($fp)
+ beqz $t0 if101_else
+ sw $t0 -108($fp)
+if101_body:
+ lw $t0 -84($fp)
+ li $t0 0
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ lw $t0 -104($fp)
+ lw $t1 -80($fp)
+ move $t0 $t1
+ sw $t1 -80($fp)
+ sw $t0 -104($fp)
+ j if101_end
+if101_else:
+ lw $t0 -72($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -72($fp)
+ lw $t0 -124($fp)
+ move $s0 $t0
+ sw $t0 -124($fp)
+ lw $t0 -88($fp)
+ lw $t1 -72($fp)
+ move $a0 $t1
+ move $t9 $s0
+ slt $t0 $a0 $t9
+ sw $t1 -72($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ move $s1 $t0
+ sw $t0 -88($fp)
+ move $t4 $s1
+ move $t5 $t4
+ lw $t0 -92($fp)
+ move $a0 $t5
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t0 -92($fp)
+ lw $t0 -224($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -224($fp)
+ lw $t0 -228($fp)
+ lw $t1 -224($fp)
+ move $t0 $t1
+ sw $t1 -224($fp)
+ sw $t0 -228($fp)
+ lw $t0 -228($fp)
+ move $t7 $t0
+ sw $t0 -228($fp)
+ beqz $t7 if108_else
+if108_body:
+ li $s3 0
+ move $t3 $s3
+ lw $t0 -104($fp)
+ move $t0 $t3
+ sw $t0 -104($fp)
+ j if108_end
+if108_else:
+ li $t6 1
+ lw $t0 -164($fp)
+ move $t0 $t6
+ sw $t0 -164($fp)
+ lw $t0 -164($fp)
+ move $s4 $t0
+ sw $t0 -164($fp)
+ lw $t0 -172($fp)
+ li $t0 1
+ sw $t0 -172($fp)
+ lw $t0 -168($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -168($fp)
+ lw $t0 -68($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -68($fp)
+ lw $t0 -208($fp)
+ lw $t0 0($s6)
+ sw $t0 -208($fp)
+ lw $t0 -204($fp)
+ lw $t1 -208($fp)
+ move $t0 $t1
+ sw $t1 -208($fp)
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ move $s5 $t0
+ sw $t0 -204($fp)
+if108_end:
+if101_end:
+ lw $t0 -212($fp)
+ move $t0 $s5
+ sw $t0 -212($fp)
+ lw $t0 -184($fp)
+ li $t0 1
+ sw $t0 -184($fp)
+ lw $t0 -220($fp)
+ lw $t1 -212($fp)
+ lw $t2 -184($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -184($fp)
+ sw $t1 -212($fp)
+ sw $t0 -220($fp)
+ lw $t0 -176($fp)
+ lw $t1 -220($fp)
+ move $t0 $t1
+ sw $t1 -220($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ move $s5 $t0
+ sw $t0 -176($fp)
+ j while83_test
+while83_end:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ move $t5 $t4
+ move $t4 $t5
+ move $v0 $t4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 228
+ jr $ra
+LS_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 156
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s4 $s7
+ sw $s4 0($s5)
+ move $s4 $s6
+ move $s6 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s4 $s6
+ sw $s4 0($s5)
+ li $s4 1
+ move $s6 $s4
+ move $s4 $s6
+ lw $s6 0($s5)
+ li $s7 1
+ move $a0 $s6
+ move $t9 $s7
+ add $s3 $a0 $t9
+ move $s7 $s3
+ move $s3 $s7
+while146_test:
+ move $s7 $s4
+ lw $t0 -148($fp)
+ lw $t0 0($s5)
+ sw $t0 -148($fp)
+ lw $t0 -152($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -152($fp)
+ lw $t0 -136($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -136($fp)
+ lw $t0 -156($fp)
+ lw $t1 -136($fp)
+ move $a0 $s7
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -136($fp)
+ sw $t0 -156($fp)
+ lw $t0 -132($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -132($fp)
+ lw $t0 -144($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -144($fp)
+ lw $t0 -144($fp)
+ beqz $t0 while146_end
+ sw $t0 -144($fp)
+while146_body:
+ lw $t0 -116($fp)
+ li $t0 2
+ sw $t0 -116($fp)
+ lw $t0 -128($fp)
+ move $t0 $s4
+ sw $t0 -128($fp)
+ lw $t0 -120($fp)
+ lw $t1 -116($fp)
+ lw $t2 -128($fp)
+ move $a0 $t1
+ move $t9 $t2
+ mul $t0 $a0 $t9
+ sw $t2 -128($fp)
+ sw $t1 -116($fp)
+ sw $t0 -120($fp)
+ lw $t0 -124($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -124($fp)
+ lw $t0 -140($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -140($fp)
+ lw $t0 -72($fp)
+ move $t0 $s3
+ sw $t0 -72($fp)
+ lw $t0 -96($fp)
+ li $t0 3
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t1 -72($fp)
+ lw $t2 -96($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -96($fp)
+ sw $t1 -72($fp)
+ sw $t0 -108($fp)
+ lw $t0 -92($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -92($fp)
+ lw $t0 -112($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -112($fp)
+ lw $t0 -104($fp)
+ lw $t0 0($s5)
+ sw $t0 -104($fp)
+ lw $t0 -80($fp)
+ move $t0 $s4
+ sw $t0 -80($fp)
+ lw $t0 -76($fp)
+ lw $t1 -80($fp)
+ move $t0 $t1
+ sw $t1 -80($fp)
+ sw $t0 -76($fp)
+ lw $t0 -100($fp)
+ lw $t1 -76($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -76($fp)
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ lw $t1 -100($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -100($fp)
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ lw $t1 -104($fp)
+ lw $t2 -100($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -100($fp)
+ sw $t1 -104($fp)
+ sw $t0 -100($fp)
+ lw $t0 -84($fp)
+ lw $t1 -140($fp)
+ move $t0 $t1
+ sw $t1 -140($fp)
+ sw $t0 -84($fp)
+ lw $t0 -68($fp)
+ lw $t1 -112($fp)
+ move $t0 $t1
+ sw $t1 -112($fp)
+ sw $t0 -68($fp)
+ lw $t0 -88($fp)
+ lw $t1 -84($fp)
+ lw $t2 -68($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -68($fp)
+ sw $t1 -84($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ move $s2 $t0
+ sw $t0 -88($fp)
+ lw $t0 -100($fp)
+ sw $s2 0($t0)
+ sw $t0 -100($fp)
+ move $t5 $s4
+ li $t6 1
+ move $a0 $t5
+ move $t9 $t6
+ add $s6 $a0 $t9
+ move $t3 $s6
+ move $s4 $t3
+ move $s0 $s3
+ li $s1 1
+ move $a0 $s0
+ move $t9 $s1
+ sub $t4 $a0 $t9
+ move $t7 $t4
+ move $s3 $t7
+ j while146_test
+while146_end:
+ li $t3 0
+ move $t4 $t3
+ move $t3 $t4
+ move $v0 $t3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 156
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/LinearSearch.vaporm b/output/LinearSearch.vaporm
index 244e073..09bbf66 100644
--- a/output/LinearSearch.vaporm
+++ b/output/LinearSearch.vaporm
@@ -15,17 +15,19 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(24 )
[$s7+0] = :functable_LS
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
- $s7 = 10
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 10
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s7
+ $a0 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -33,9 +35,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s7 = $s4
- PrintIntS($s7 )
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -56,8 +59,10 @@ func LS_Start [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
+ $s5 = $s6
$s5 = [$s6+0]
$s4 = $s7
+ $s7 = $s4
$s5 = [$s5+12]
local[8] = $t3
local[9] = $t4
@@ -66,7 +71,7 @@ func LS_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s4
+ $a1 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -74,8 +79,10 @@ func LS_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
+ $s4 = $v0
+ $s7 = $s4
$s4 = $s7
+ $s4 = $s6
$s4 = [$s6+0]
$s4 = [$s4+4]
local[8] = $t3
@@ -94,11 +101,16 @@ func LS_Start [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s4 = $s7
- $s4 = 9999
- PrintIntS($s4 )
- $s4 = [$s6+0]
- $s7 = 8
- $s4 = [$s4+8]
+ $s7 = $s4
+ $s7 = 9999
+ $s4 = $s7
+ $s7 = $s4
+ PrintIntS($s7 )
+ $s7 = $s6
+ $s7 = [$s6+0]
+ $s4 = 8
+ $s5 = $s4
+ $s7 = [$s7+8]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -106,20 +118,23 @@ func LS_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
- call $s4
+ $a1 = $s5
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s7 = $s5
- PrintIntS($s7 )
- $s7 = [$s6+0]
+ $s4 = $v0
+ $s5 = $s4
+ $s4 = $s5
+ PrintIntS($s4 )
+ $s4 = $s6
+ $s4 = [$s6+0]
$s5 = 12
- $s7 = [$s7+8]
+ $s7 = $s5
+ $s4 = [$s4+8]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -127,19 +142,22 @@ func LS_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s5
- call $s7
+ $a1 = $s7
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s5 = $s4
+ $s5 = $v0
+ $s7 = $s5
+ $s5 = $s7
PrintIntS($s5 )
+ $s5 = $s6
$s5 = [$s6+0]
- $s4 = 17
+ $s7 = 17
+ $s4 = $s7
$s5 = [$s5+8]
local[8] = $t3
local[9] = $t4
@@ -158,10 +176,13 @@ func LS_Start [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s4 = $s7
- PrintIntS($s4 )
- $s4 = [$s6+0]
- $s7 = 50
- $s4 = [$s4+8]
+ $s7 = $s4
+ PrintIntS($s7 )
+ $s7 = $s6
+ $s7 = [$s6+0]
+ $s4 = 50
+ $s5 = $s4
+ $s7 = [$s7+8]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -169,19 +190,22 @@ func LS_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
- call $s4
+ $a1 = $s5
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s7 = $s5
- PrintIntS($s7 )
- $s7 = 55
- $v0 = $s7
+ $s4 = $v0
+ $s5 = $s4
+ $s4 = $s5
+ PrintIntS($s4 )
+ $s4 = 55
+ $s5 = $s4
+ $s4 = $s5
+ $v0 = $s4
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -191,7 +215,7 @@ func LS_Start [in 0, out 0, local 14]
$s6 = local[6]
$s7 = local[7]
ret
-func LS_Print [in 0, out 0, local 14]
+func LS_Print [in 0, out 0, local 21]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -202,27 +226,66 @@ func LS_Print [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = 1
-while29_test:
$s5 = $s7
- $s1 = [$s6+20]
- $s2 = LtS($s5 $s1 )
- $t7 = $s2
- if0 $t7 goto :while29_end
-while29_body:
- $t5 = [$s6+16]
- $t6 = MulS($s7 4 )
- $t6 = Add($t6 4 )
- $t6 = Add($t5 $t6 )
- $s0 = [$t6+0]
- $t3 = $s0
- PrintIntS($t3 )
+ $s7 = $s5
+while55_test:
+ $s5 = $s7
+ $t0 = local[16]
+ $t0 = [$s6+20]
+ local[16] = $t0
+ $t0 = local[18]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[18] = $t0
+ $t0 = local[17]
+ $t1 = local[18]
+ $t0 = $t1
+ local[18] = $t1
+ local[17] = $t0
+ $t0 = local[15]
+ $t1 = local[17]
+ $t0 = LtS($s5 $t1 )
+ local[17] = $t1
+ local[15] = $t0
+ $t0 = local[20]
+ $t1 = local[15]
+ $t0 = $t1
+ local[15] = $t1
+ local[20] = $t0
+ $t0 = local[19]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ if0 $t0 goto :while55_end
+ local[19] = $t0
+while55_body:
+ $t6 = [$s6+16]
+ $t5 = $t6
$s4 = $s7
- $s3 = 1
- $t4 = Add($s4 $s3 )
- $s7 = $t4
- goto :while29_test
-while29_end:
+ $s3 = MulS($s4 4 )
+ $s3 = Add($s3 4 )
+ $s3 = Add($t5 $s3 )
+ $s0 = [$s3+0]
+ $s1 = $s0
+ $s2 = $s1
+ PrintIntS($s2 )
+ $t4 = $s7
+ $t0 = local[14]
+ $t0 = 1
+ local[14] = $t0
+ $t0 = local[14]
+ $t3 = Add($t4 $t0 )
+ local[14] = $t0
+ $t7 = $t3
+ $s7 = $t7
+ goto :while55_test
+while55_end:
$t3 = 0
+ $t4 = $t3
+ $t3 = $t4
$v0 = $t3
$s0 = local[0]
$s1 = local[1]
@@ -233,7 +296,7 @@ while29_end:
$s6 = local[6]
$s7 = local[7]
ret
-func LS_Search [in 0, out 0, local 31]
+func LS_Search [in 0, out 0, local 55]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -242,140 +305,268 @@ func LS_Search [in 0, out 0, local 31]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s5 = $a0
- $s6 = $a1
- $s7 = 1
+ $s6 = $a0
+ $s7 = $a1
+ $s5 = 1
+ $s4 = $s5
+ $s5 = $s4
$s4 = 0
+ $s3 = $s4
+ $s4 = $s3
+ $s3 = 0
+ $s2 = $s3
$t0 = local[14]
- $t0 = 0
+ $t0 = $s2
local[14] = $t0
-while42_test:
- $s2 = $s7
- $t0 = local[28]
- $t0 = [$s5+20]
- local[28] = $t0
- $t0 = local[26]
- $t1 = local[28]
+while83_test:
+ $s2 = $s5
+ $t0 = local[51]
+ $t0 = [$s6+20]
+ local[51] = $t0
+ $t0 = local[44]
+ $t1 = local[51]
+ $t0 = $t1
+ local[51] = $t1
+ local[44] = $t0
+ $t0 = local[42]
+ $t1 = local[44]
+ $t0 = $t1
+ local[44] = $t1
+ local[42] = $t0
+ $t0 = local[47]
+ $t1 = local[42]
$t0 = LtS($s2 $t1 )
- local[28] = $t1
- local[26] = $t0
+ local[42] = $t1
+ local[47] = $t0
+ $t0 = local[46]
+ $t1 = local[47]
+ $t0 = $t1
+ local[47] = $t1
+ local[46] = $t0
+ $t0 = local[45]
+ $t1 = local[46]
+ $t0 = $t1
+ local[46] = $t1
+ local[45] = $t0
+ $t0 = local[45]
+ if0 $t0 goto :while83_end
+ local[45] = $t0
+while83_body:
+ $t0 = local[32]
+ $t0 = [$s6+16]
+ local[32] = $t0
+ $t0 = local[37]
+ $t1 = local[32]
+ $t0 = $t1
+ local[32] = $t1
+ local[37] = $t0
+ $t0 = local[34]
+ $t0 = $s5
+ local[34] = $t0
+ $t0 = local[31]
+ $t1 = local[34]
+ $t0 = MulS($t1 4 )
+ local[34] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ $t1 = local[31]
+ $t0 = Add($t1 4 )
+ local[31] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ $t1 = local[37]
+ $t2 = local[31]
+ $t0 = Add($t1 $t2 )
+ local[31] = $t2
+ local[37] = $t1
+ local[31] = $t0
+ $t0 = local[35]
+ $t1 = local[31]
+ $t0 = [$t1+0]
+ local[31] = $t1
+ local[35] = $t0
+ $t0 = local[33]
+ $t1 = local[35]
+ $t0 = $t1
+ local[35] = $t1
+ local[33] = $t0
+ $t0 = local[36]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[36] = $t0
+ $t0 = local[30]
+ $t0 = $s7
+ local[30] = $t0
+ $t0 = local[29]
+ $t0 = 1
+ local[29] = $t0
$t0 = local[27]
+ $t1 = local[30]
+ $t2 = local[29]
+ $t0 = Add($t1 $t2 )
+ local[29] = $t2
+ local[30] = $t1
+ local[27] = $t0
+ $t0 = local[26]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
+ local[26] = $t0
+ $t0 = local[28]
$t1 = local[26]
$t0 = $t1
local[26] = $t1
- local[27] = $t0
- $t0 = local[27]
- if0 $t0 goto :while42_end
- local[27] = $t0
-while42_body:
+ local[28] = $t0
+ $t0 = local[16]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[16] = $t0
$t0 = local[22]
- $t0 = [$s5+16]
+ $t0 = $s7
local[22] = $t0
+ $t0 = local[25]
+ $t1 = local[16]
+ $t2 = local[22]
+ $t0 = LtS($t1 $t2 )
+ local[22] = $t2
+ local[16] = $t1
+ local[25] = $t0
+ $t0 = local[21]
+ $t1 = local[25]
+ $t0 = $t1
+ local[25] = $t1
+ local[21] = $t0
$t0 = local[24]
- $t0 = MulS($s7 4 )
- local[24] = $t0
- $t0 = local[24]
- $t1 = local[24]
- $t0 = Add($t1 4 )
- local[24] = $t1
+ $t1 = local[21]
+ $t0 = $t1
+ local[21] = $t1
local[24] = $t0
$t0 = local[24]
- $t1 = local[22]
- $t2 = local[24]
- $t0 = Add($t1 $t2 )
- local[24] = $t2
- local[22] = $t1
+ if0 $t0 goto :if101_else
local[24] = $t0
- $t0 = local[29]
- $t1 = local[24]
- $t0 = [$t1+0]
- local[24] = $t1
- local[29] = $t0
- $t0 = local[30]
- $t1 = local[29]
- $t0 = $t1
- local[29] = $t1
- local[30] = $t0
+if101_body:
$t0 = local[18]
- $t0 = $s6
+ $t0 = 0
local[18] = $t0
- $t0 = local[21]
- $t0 = 1
- local[21] = $t0
- $t0 = local[19]
+ $t0 = local[17]
$t1 = local[18]
- $t2 = local[21]
- $t0 = Add($t1 $t2 )
- local[21] = $t2
+ $t0 = $t1
local[18] = $t1
- local[19] = $t0
+ local[17] = $t0
$t0 = local[23]
- $t1 = local[19]
+ $t1 = local[17]
$t0 = $t1
- local[19] = $t1
+ local[17] = $t1
local[23] = $t0
- $t0 = local[16]
- $t1 = local[30]
- $t0 = $t1
- local[30] = $t1
- local[16] = $t0
+ goto :if101_end
+if101_else:
$t0 = local[15]
- $t0 = $s6
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
local[15] = $t0
+ $t0 = local[28]
+ $s0 = $t0
+ local[28] = $t0
+ $t0 = local[19]
+ $t1 = local[15]
+ $t0 = LtS($t1 $s0 )
+ local[15] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ $s1 = $t0
+ local[19] = $t0
+ $t4 = $s1
+ $t5 = $t4
$t0 = local[20]
- $t1 = local[16]
- $t2 = local[15]
- $t0 = LtS($t1 $t2 )
- local[15] = $t2
- local[16] = $t1
+ $t0 = Eq($t5 0 )
local[20] = $t0
- $t0 = local[17]
+ $t0 = local[53]
$t1 = local[20]
$t0 = $t1
local[20] = $t1
- local[17] = $t0
- $t0 = local[17]
- if0 $t0 goto :if53_else
- local[17] = $t0
-if53_body:
- $t4 = 0
- goto :if53_end
-if53_else:
- $t0 = local[30]
- $t3 = $t0
- local[30] = $t0
+ local[53] = $t0
+ $t0 = local[54]
+ $t1 = local[53]
+ $t0 = $t1
+ local[53] = $t1
+ local[54] = $t0
+ $t0 = local[54]
+ $t7 = $t0
+ local[54] = $t0
+ if0 $t7 goto :if108_else
+if108_body:
+ $s3 = 0
+ $t3 = $s3
$t0 = local[23]
- $s0 = $t0
+ $t0 = $t3
local[23] = $t0
- $s3 = LtS($t3 $s0 )
- $t5 = Eq($s3 0 )
- $s1 = $t5
- if0 $s1 goto :if57_else
-if57_body:
- $t4 = 0
- goto :if57_end
-if57_else:
- $s4 = 1
- $t0 = local[14]
+ goto :if108_end
+if108_else:
+ $t6 = 1
+ $t0 = local[38]
+ $t0 = $t6
+ local[38] = $t0
+ $t0 = local[38]
+ $s4 = $t0
+ local[38] = $t0
+ $t0 = local[40]
$t0 = 1
+ local[40] = $t0
+ $t0 = local[39]
+ $t1 = local[40]
+ $t0 = $t1
+ local[40] = $t1
+ local[39] = $t0
+ $t0 = local[14]
+ $t1 = local[39]
+ $t0 = $t1
+ local[39] = $t1
local[14] = $t0
- $s7 = [$s5+20]
-if57_end:
-if53_end:
- $t7 = $s7
- $t0 = local[25]
+ $t0 = local[49]
+ $t0 = [$s6+20]
+ local[49] = $t0
+ $t0 = local[48]
+ $t1 = local[49]
+ $t0 = $t1
+ local[49] = $t1
+ local[48] = $t0
+ $t0 = local[48]
+ $s5 = $t0
+ local[48] = $t0
+if108_end:
+if101_end:
+ $t0 = local[50]
+ $t0 = $s5
+ local[50] = $t0
+ $t0 = local[43]
$t0 = 1
- local[25] = $t0
- $t0 = local[25]
- $t6 = Add($t7 $t0 )
- local[25] = $t0
- $s7 = $t6
- goto :while42_test
-while42_end:
+ local[43] = $t0
+ $t0 = local[52]
+ $t1 = local[50]
+ $t2 = local[43]
+ $t0 = Add($t1 $t2 )
+ local[43] = $t2
+ local[50] = $t1
+ local[52] = $t0
+ $t0 = local[41]
+ $t1 = local[52]
+ $t0 = $t1
+ local[52] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ $s5 = $t0
+ local[41] = $t0
+ goto :while83_test
+while83_end:
$t0 = local[14]
- $s3 = $t0
+ $t4 = $t0
local[14] = $t0
- $v0 = $s3
+ $t5 = $t4
+ $t4 = $t5
+ $v0 = $t4
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -385,7 +576,7 @@ while42_end:
$s6 = local[6]
$s7 = local[7]
ret
-func LS_Init [in 0, out 0, local 27]
+func LS_Init [in 0, out 0, local 37]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -394,16 +585,20 @@ func LS_Init [in 0, out 0, local 27]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+20] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s4 = $s7
+ [$s5+20] = $s4
+ $s4 = $s6
+ $s6 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s7
+ $a0 = $s6
call :AllocArray
$t3 = local[8]
$t4 = local[9]
@@ -411,99 +606,164 @@ func LS_Init [in 0, out 0, local 27]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- [$s6+16] = $s5
- $s5 = 1
- $s7 = [$s6+20]
+ $s4 = $v0
+ $s6 = $s4
+ $s4 = $s6
+ [$s5+16] = $s4
$s4 = 1
- $s3 = Add($s7 $s4 )
- $s4 = $s3
-while70_test:
- $s3 = $s5
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = [$s5+20]
+ $s7 = 1
+ $s3 = Add($s6 $s7 )
+ $s7 = $s3
+ $s3 = $s7
+while146_test:
+ $s7 = $s4
+ $t0 = local[34]
+ $t0 = [$s5+20]
+ local[34] = $t0
+ $t0 = local[35]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
+ local[35] = $t0
+ $t0 = local[31]
+ $t1 = local[35]
+ $t0 = $t1
+ local[35] = $t1
+ local[31] = $t0
+ $t0 = local[36]
+ $t1 = local[31]
+ $t0 = LtS($s7 $t1 )
+ local[31] = $t1
+ local[36] = $t0
+ $t0 = local[30]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[30] = $t0
+ $t0 = local[33]
+ $t1 = local[30]
+ $t0 = $t1
+ local[30] = $t1
+ local[33] = $t0
+ $t0 = local[33]
+ if0 $t0 goto :while146_end
+ local[33] = $t0
+while146_body:
$t0 = local[26]
- $t0 = [$s6+20]
+ $t0 = 2
local[26] = $t0
- $t0 = local[25]
+ $t0 = local[29]
+ $t0 = $s4
+ local[29] = $t0
+ $t0 = local[27]
$t1 = local[26]
- $t0 = LtS($s3 $t1 )
+ $t2 = local[29]
+ $t0 = MulS($t1 $t2 )
+ local[29] = $t2
local[26] = $t1
- local[25] = $t0
- $t0 = local[20]
- $t1 = local[25]
+ local[27] = $t0
+ $t0 = local[28]
+ $t1 = local[27]
$t0 = $t1
- local[25] = $t1
- local[20] = $t0
+ local[27] = $t1
+ local[28] = $t0
+ $t0 = local[32]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
+ local[32] = $t0
+ $t0 = local[15]
+ $t0 = $s3
+ local[15] = $t0
+ $t0 = local[21]
+ $t0 = 3
+ local[21] = $t0
+ $t0 = local[24]
+ $t1 = local[15]
+ $t2 = local[21]
+ $t0 = Sub($t1 $t2 )
+ local[21] = $t2
+ local[15] = $t1
+ local[24] = $t0
$t0 = local[20]
- if0 $t0 goto :while70_end
+ $t1 = local[24]
+ $t0 = $t1
+ local[24] = $t1
local[20] = $t0
-while70_body:
+ $t0 = local[25]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[25] = $t0
+ $t0 = local[23]
+ $t0 = [$s5+16]
+ local[23] = $t0
$t0 = local[17]
- $t0 = 2
+ $t0 = $s4
local[17] = $t0
$t0 = local[16]
- $t0 = $s5
- local[16] = $t0
- $t0 = local[21]
$t1 = local[17]
- $t2 = local[16]
- $t0 = MulS($t1 $t2 )
- local[16] = $t2
+ $t0 = $t1
local[17] = $t1
- local[21] = $t0
+ local[16] = $t0
$t0 = local[22]
- $t1 = local[21]
- $t0 = $t1
- local[21] = $t1
+ $t1 = local[16]
+ $t0 = MulS($t1 4 )
+ local[16] = $t1
+ local[22] = $t0
+ $t0 = local[22]
+ $t1 = local[22]
+ $t0 = Add($t1 4 )
+ local[22] = $t1
+ local[22] = $t0
+ $t0 = local[22]
+ $t1 = local[23]
+ $t2 = local[22]
+ $t0 = Add($t1 $t2 )
+ local[22] = $t2
+ local[23] = $t1
local[22] = $t0
- $t0 = local[14]
- $t0 = $s4
- local[14] = $t0
- $t3 = 3
$t0 = local[18]
- $t1 = local[14]
- $t0 = Sub($t1 $t3 )
- local[14] = $t1
+ $t1 = local[32]
+ $t0 = $t1
+ local[32] = $t1
local[18] = $t0
+ $t0 = local[14]
+ $t1 = local[25]
+ $t0 = $t1
+ local[25] = $t1
+ local[14] = $t0
$t0 = local[19]
$t1 = local[18]
- $t0 = $t1
+ $t2 = local[14]
+ $t0 = Add($t1 $t2 )
+ local[14] = $t2
local[18] = $t1
local[19] = $t0
- $t0 = local[15]
- $t0 = [$s6+16]
- local[15] = $t0
- $t6 = MulS($s5 4 )
- $t6 = Add($t6 4 )
- $t0 = local[15]
- $t6 = Add($t0 $t6 )
- local[15] = $t0
- $t0 = local[22]
- $t4 = $t0
- local[22] = $t0
$t0 = local[19]
- $t5 = $t0
+ $s2 = $t0
local[19] = $t0
- $t7 = Add($t4 $t5 )
- [$t6+0] = $t7
- $s7 = $s5
- $s0 = 1
- $s2 = Add($s7 $s0 )
- $s5 = $s2
- $t0 = local[24]
- $t0 = $s4
- local[24] = $t0
- $t0 = local[23]
- $t0 = 1
- local[23] = $t0
- $t0 = local[24]
- $t1 = local[23]
- $s1 = Sub($t0 $t1 )
- local[23] = $t1
- local[24] = $t0
- $s4 = $s1
- goto :while70_test
-while70_end:
+ $t0 = local[22]
+ [$t0+0] = $s2
+ local[22] = $t0
+ $t5 = $s4
+ $t6 = 1
+ $s6 = Add($t5 $t6 )
+ $t3 = $s6
+ $s4 = $t3
+ $s0 = $s3
+ $s1 = 1
+ $t4 = Sub($s0 $s1 )
+ $t7 = $t4
+ $s3 = $t7
+ goto :while146_test
+while146_end:
$t3 = 0
+ $t4 = $t3
+ $t3 = $t4
$v0 = $t3
$s0 = local[0]
$s1 = local[1]
diff --git a/output/LinkedList.s b/output/LinkedList.s
new file mode 100644
index 0000000..930d5a5
--- /dev/null
+++ b/output/LinkedList.s
@@ -0,0 +1,2617 @@
+.data
+functable_Element:
+ Element_Init
+ Element_GetAge
+ Element_GetSalary
+ Element_GetMarried
+ Element_Equal
+ Element_Compare
+functable_List:
+ List_Init
+ List_InitNew
+ List_Insert
+ List_SetNext
+ List_Delete
+ List_Search
+ List_GetEnd
+ List_GetElem
+ List_GetNext
+ List_Print
+functable_LL:
+ LL_Start
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_LL
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ move $s4 $s6
+ move $s6 $s4
+ sw $s6 0($s5)
+ move $s6 $s7
+ move $s7 $s6
+ sw $s7 0($s5)
+ move $s7 $s3
+ move $s3 $s7
+ sw $s3 0($s5)
+ li $s3 1
+ move $s5 $s3
+ move $s3 $s5
+ move $v0 $s3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_GetAge:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_GetSalary:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_GetMarried:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_Equal:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $s5 1
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s4 $s3
+ move $s3 $s6
+ lw $s3 0($s6)
+ move $s2 $s4
+ move $s4 $s2
+ lw $s2 0($s6)
+ move $s1 $s2
+ lw $s3 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ move $a2 $s1
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s1 $s2
+ move $a0 $s1
+ li $t9 0
+NULL $s2 $a0 $t9
+ move $s1 $s2
+ move $s2 $s1
+ move $s1 $s2
+ beqz $s1 if32_else
+if32_body:
+ li $s1 0
+ move $s2 $s1
+ move $s5 $s2
+ j if32_end
+if32_else:
+ move $s2 $s7
+ move $s7 $s2
+ lw $s2 0($s7)
+ lw $s1 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s1 $s2
+ move $s2 $s1
+ move $s1 $s6
+ lw $s1 0($s6)
+ move $s4 $s2
+ move $s2 $s4
+ lw $s4 0($s6)
+ move $s3 $s4
+ lw $s1 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s2
+ move $a2 $s3
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $a0 $s3
+ li $t9 0
+NULL $s4 $a0 $t9
+ move $s3 $s4
+ move $s4 $s3
+ move $s3 $s4
+ beqz $s3 if51_else
+if51_body:
+ li $s3 0
+ move $s4 $s3
+ move $s5 $s4
+ j if51_end
+if51_else:
+ lw $s4 0($s6)
+ move $s6 $s4
+ move $s4 $s6
+ beqz $s4 if65_else
+if65_body:
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s6 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $a0 $s6
+ li $t9 0
+NULL $s4 $a0 $t9
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ beqz $s6 if68_else
+if68_body:
+ li $s6 0
+ move $s4 $s6
+ move $s5 $s4
+ j if68_end
+if68_else:
+ li $s4 0
+ move $s6 $s4
+ move $s4 $s6
+if68_end:
+ j if65_end
+if65_else:
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s3 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s3 $s6
+ move $s6 $s3
+ beqz $s6 if81_else
+if81_body:
+ li $s6 0
+ move $s3 $s6
+ move $s5 $s3
+ j if81_end
+if81_else:
+ li $s3 0
+ move $s6 $s3
+ move $s4 $s6
+if81_end:
+if65_end:
+if51_end:
+if32_end:
+ move $s6 $s5
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Element_Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ li $s4 0
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s7
+ li $s3 1
+ move $a0 $s5
+ move $t9 $s3
+ add $s2 $a0 $t9
+ move $s3 $s2
+ move $s2 $s3
+ move $s3 $s6
+ move $s5 $s7
+ move $a0 $s3
+ move $t9 $s5
+ slt $s7 $a0 $t9
+ move $s5 $s7
+ move $s7 $s5
+ beqz $s7 if100_else
+if100_body:
+ li $s7 0
+ move $s5 $s7
+ move $s4 $s5
+ j if100_end
+if100_else:
+ move $s5 $s6
+ move $s6 $s2
+ move $a0 $s5
+ move $t9 $s6
+ slt $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ move $a0 $s6
+ li $t9 0
+NULL $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ beqz $s6 if107_else
+if107_body:
+ li $s6 0
+ move $s2 $s6
+ move $s4 $s2
+ j if107_end
+if107_else:
+ li $s2 1
+ move $s6 $s2
+ move $s4 $s6
+if107_end:
+if100_end:
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 1
+ move $s5 $s7
+ sw $s5 0($s6)
+ li $s5 1
+ move $s6 $s5
+ move $s5 $s6
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_InitNew:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ move $s4 $s3
+ move $s3 $s4
+ sw $s3 0($s5)
+ move $s3 $s6
+ move $s6 $s3
+ sw $s6 0($s5)
+ move $s6 $s7
+ move $s7 $s6
+ sw $s7 0($s5)
+ li $s7 1
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ li $a0 52
+ jal _heapAlloc
+ move $s6 $v0
+ la $t9 functable_List
+ sw $t9 0($s6)
+ move $s4 $s6
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ move $s4 $s6
+ lw $s6 0($s4)
+ lw $s3 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s5
+ move $s5 $s6
+ li $s6 0
+ move $s2 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s7
+ move $a2 $s5
+ move $a3 $s2
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s2 $s6
+ move $s6 $s2
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_SetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 396
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s4 $s5
+ lw $t0 -68($fp)
+ move $t0 $s4
+ sw $t0 -68($fp)
+ li $s4 0
+ move $s3 $s4
+ move $s4 $s3
+ li $s3 0
+ li $s2 1
+ move $a0 $s3
+ move $t9 $s2
+ sub $s1 $a0 $t9
+ move $s2 $s1
+ move $s1 $s2
+ move $s2 $s6
+ move $s3 $s2
+ move $s2 $s3
+ move $s3 $s6
+ move $s0 $s3
+ move $s3 $s0
+ lw $s0 0($s6)
+ move $t7 $s0
+ move $s0 $t7
+ lw $t7 0($s6)
+ move $s6 $t7
+ move $t7 $s6
+while178_test:
+ move $s6 $s0
+ lw $t0 -168($fp)
+ move $t0 $s6
+ sw $t0 -168($fp)
+ lw $t0 -332($fp)
+ lw $t1 -168($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -168($fp)
+ sw $t0 -332($fp)
+ lw $t0 -132($fp)
+ lw $t1 -332($fp)
+ move $t0 $t1
+ sw $t1 -332($fp)
+ sw $t0 -132($fp)
+ lw $t0 -156($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -156($fp)
+ lw $t0 -152($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -152($fp)
+ lw $t0 -160($fp)
+ move $t0 $s4
+ sw $t0 -160($fp)
+ lw $t0 -140($fp)
+ lw $t1 -160($fp)
+ move $t0 $t1
+ sw $t1 -160($fp)
+ sw $t0 -140($fp)
+ lw $t0 -164($fp)
+ lw $t1 -140($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -140($fp)
+ sw $t0 -164($fp)
+ lw $t0 -136($fp)
+ lw $t1 -164($fp)
+ move $t0 $t1
+ sw $t1 -164($fp)
+ sw $t0 -136($fp)
+ lw $t0 -148($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -148($fp)
+ lw $t0 -144($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -144($fp)
+ lw $t0 -128($fp)
+ lw $t1 -152($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -152($fp)
+ sw $t0 -128($fp)
+ lw $t0 -72($fp)
+ lw $t1 -144($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -144($fp)
+ sw $t0 -72($fp)
+ lw $t0 -336($fp)
+ lw $t1 -128($fp)
+ lw $t2 -72($fp)
+ move $a0 $t1
+ move $t9 $t2
+NULL $t0 $a0 $t9
+ sw $t2 -72($fp)
+ sw $t1 -128($fp)
+ sw $t0 -336($fp)
+ lw $t0 -336($fp)
+ move $t3 $t0
+ sw $t0 -336($fp)
+ lw $t0 -112($fp)
+ move $t0 $t3
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ beqz $t0 while178_end
+ sw $t0 -112($fp)
+while178_body:
+ lw $t0 -124($fp)
+ move $t0 $s7
+ sw $t0 -124($fp)
+ lw $t0 -124($fp)
+ move $s7 $t0
+ sw $t0 -124($fp)
+ lw $t0 -116($fp)
+ lw $t0 0($s7)
+ sw $t0 -116($fp)
+ lw $t0 -96($fp)
+ lw $t1 -116($fp)
+ lw $t0 0($t1)
+ sw $t1 -116($fp)
+ sw $t0 -96($fp)
+ lw $t0 -92($fp)
+ move $t0 $t7
+ sw $t0 -92($fp)
+ lw $t0 -104($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -104($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -104($fp)
+ move $a1 $t0
+ sw $t0 -104($fp)
+ lw $t0 -96($fp)
+ lw $t1 -96($fp)
+ jalr $t1
+ sw $t1 -96($fp)
+ sw $t0 -96($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -108($fp)
+ move $t0 $v0
+ sw $t0 -108($fp)
+ lw $t0 -100($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -100($fp)
+ lw $t0 -212($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -212($fp)
+ lw $t0 -212($fp)
+ beqz $t0 if196_else
+ sw $t0 -212($fp)
+if196_body:
+ lw $t0 -220($fp)
+ li $t0 1
+ sw $t0 -220($fp)
+ lw $t0 -216($fp)
+ lw $t1 -220($fp)
+ move $t0 $t1
+ sw $t1 -220($fp)
+ sw $t0 -216($fp)
+ lw $t0 -216($fp)
+ move $s4 $t0
+ sw $t0 -216($fp)
+ lw $t0 -236($fp)
+ move $t0 $s1
+ sw $t0 -236($fp)
+ lw $t0 -248($fp)
+ li $t0 0
+ sw $t0 -248($fp)
+ lw $t0 -240($fp)
+ lw $t1 -236($fp)
+ lw $t2 -248($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -248($fp)
+ sw $t1 -236($fp)
+ sw $t0 -240($fp)
+ lw $t0 -244($fp)
+ lw $t1 -240($fp)
+ move $t0 $t1
+ sw $t1 -240($fp)
+ sw $t0 -244($fp)
+ lw $t0 -228($fp)
+ lw $t1 -244($fp)
+ move $t0 $t1
+ sw $t1 -244($fp)
+ sw $t0 -228($fp)
+ lw $t0 -228($fp)
+ beqz $t0 if206_else
+ sw $t0 -228($fp)
+if206_body:
+ lw $t0 -232($fp)
+ move $t0 $s2
+ sw $t0 -232($fp)
+ lw $t0 -232($fp)
+ move $s2 $t0
+ sw $t0 -232($fp)
+ lw $t0 -176($fp)
+ lw $t0 0($s2)
+ sw $t0 -176($fp)
+ lw $t0 -172($fp)
+ lw $t1 -176($fp)
+ lw $t0 0($t1)
+ sw $t1 -176($fp)
+ sw $t0 -172($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -172($fp)
+ lw $t1 -172($fp)
+ jalr $t1
+ sw $t1 -172($fp)
+ sw $t0 -172($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -224($fp)
+ move $t0 $v0
+ sw $t0 -224($fp)
+ lw $t0 -184($fp)
+ lw $t1 -224($fp)
+ move $t0 $t1
+ sw $t1 -224($fp)
+ sw $t0 -184($fp)
+ lw $t0 -68($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -68($fp)
+ j if206_end
+if206_else:
+ lw $t0 -200($fp)
+ li $t0 0
+ sw $t0 -200($fp)
+ lw $t0 -196($fp)
+ li $t0 555
+ sw $t0 -196($fp)
+ lw $t0 -180($fp)
+ lw $t1 -200($fp)
+ lw $t2 -196($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -196($fp)
+ sw $t1 -200($fp)
+ sw $t0 -180($fp)
+ lw $t0 -208($fp)
+ lw $t1 -180($fp)
+ move $t0 $t1
+ sw $t1 -180($fp)
+ sw $t0 -208($fp)
+ lw $t0 -204($fp)
+ lw $t1 -208($fp)
+ move $t0 $t1
+ sw $t1 -208($fp)
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ move $a0 $t0
+ jal _print
+ sw $t0 -204($fp)
+ lw $t0 -308($fp)
+ move $t0 $s3
+ sw $t0 -308($fp)
+ lw $t0 -308($fp)
+ move $s3 $t0
+ sw $t0 -308($fp)
+ lw $t0 -296($fp)
+ lw $t0 0($s3)
+ sw $t0 -296($fp)
+ lw $t0 -292($fp)
+ lw $t1 -296($fp)
+ lw $t0 0($t1)
+ sw $t1 -296($fp)
+ sw $t0 -292($fp)
+ lw $t0 -300($fp)
+ move $t0 $s2
+ sw $t0 -300($fp)
+ lw $t0 -300($fp)
+ move $s2 $t0
+ sw $t0 -300($fp)
+ lw $t0 -320($fp)
+ lw $t0 0($s2)
+ sw $t0 -320($fp)
+ lw $t0 -316($fp)
+ lw $t1 -320($fp)
+ lw $t0 0($t1)
+ sw $t1 -320($fp)
+ sw $t0 -316($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -316($fp)
+ lw $t1 -316($fp)
+ jalr $t1
+ sw $t1 -316($fp)
+ sw $t0 -316($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -304($fp)
+ move $t0 $v0
+ sw $t0 -304($fp)
+ lw $t0 -328($fp)
+ lw $t1 -304($fp)
+ move $t0 $t1
+ sw $t1 -304($fp)
+ sw $t0 -328($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s3
+ lw $t0 -328($fp)
+ move $a1 $t0
+ sw $t0 -328($fp)
+ lw $t0 -292($fp)
+ lw $t1 -292($fp)
+ jalr $t1
+ sw $t1 -292($fp)
+ sw $t0 -292($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -188($fp)
+ move $t0 $v0
+ sw $t0 -188($fp)
+ lw $t0 -324($fp)
+ lw $t1 -188($fp)
+ move $t0 $t1
+ sw $t1 -188($fp)
+ sw $t0 -324($fp)
+ lw $t0 -192($fp)
+ lw $t1 -324($fp)
+ move $t0 $t1
+ sw $t1 -324($fp)
+ sw $t0 -192($fp)
+ lw $t0 -272($fp)
+ li $t0 0
+ sw $t0 -272($fp)
+ lw $t0 -268($fp)
+ li $t0 555
+ sw $t0 -268($fp)
+ lw $t0 -312($fp)
+ lw $t1 -272($fp)
+ lw $t2 -268($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -268($fp)
+ sw $t1 -272($fp)
+ sw $t0 -312($fp)
+ lw $t0 -256($fp)
+ lw $t1 -312($fp)
+ move $t0 $t1
+ sw $t1 -312($fp)
+ sw $t0 -256($fp)
+ lw $t0 -252($fp)
+ lw $t1 -256($fp)
+ move $t0 $t1
+ sw $t1 -256($fp)
+ sw $t0 -252($fp)
+ lw $t0 -252($fp)
+ move $a0 $t0
+ jal _print
+ sw $t0 -252($fp)
+if206_end:
+ j if196_end
+if196_else:
+ lw $t0 -260($fp)
+ li $t0 0
+ sw $t0 -260($fp)
+ lw $t0 -280($fp)
+ lw $t1 -260($fp)
+ move $t0 $t1
+ sw $t1 -260($fp)
+ sw $t0 -280($fp)
+ lw $t0 -264($fp)
+ lw $t1 -280($fp)
+ move $t0 $t1
+ sw $t1 -280($fp)
+ sw $t0 -264($fp)
+if196_end:
+ lw $t0 -288($fp)
+ move $t0 $s4
+ sw $t0 -288($fp)
+ lw $t0 -284($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -284($fp)
+ lw $t0 -276($fp)
+ lw $t1 -284($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -284($fp)
+ sw $t0 -276($fp)
+ lw $t0 -364($fp)
+ lw $t1 -276($fp)
+ move $t0 $t1
+ sw $t1 -276($fp)
+ sw $t0 -364($fp)
+ lw $t0 -372($fp)
+ lw $t1 -364($fp)
+ move $t0 $t1
+ sw $t1 -364($fp)
+ sw $t0 -372($fp)
+ lw $t0 -368($fp)
+ lw $t1 -372($fp)
+ move $t0 $t1
+ sw $t1 -372($fp)
+ sw $t0 -368($fp)
+ lw $t0 -368($fp)
+ beqz $t0 if238_else
+ sw $t0 -368($fp)
+if238_body:
+ lw $t0 -348($fp)
+ move $t0 $s2
+ sw $t0 -348($fp)
+ lw $t0 -340($fp)
+ lw $t1 -348($fp)
+ move $t0 $t1
+ sw $t1 -348($fp)
+ sw $t0 -340($fp)
+ lw $t0 -340($fp)
+ move $s3 $t0
+ sw $t0 -340($fp)
+ lw $t0 -356($fp)
+ move $t0 $s2
+ sw $t0 -356($fp)
+ lw $t0 -356($fp)
+ move $s2 $t0
+ sw $t0 -356($fp)
+ lw $t0 -380($fp)
+ lw $t0 0($s2)
+ sw $t0 -380($fp)
+ lw $t0 -376($fp)
+ lw $t1 -380($fp)
+ lw $t0 0($t1)
+ sw $t1 -380($fp)
+ sw $t0 -376($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -376($fp)
+ lw $t1 -376($fp)
+ jalr $t1
+ sw $t1 -376($fp)
+ sw $t0 -376($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -360($fp)
+ move $t0 $v0
+ sw $t0 -360($fp)
+ lw $t0 -392($fp)
+ lw $t1 -360($fp)
+ move $t0 $t1
+ sw $t1 -360($fp)
+ sw $t0 -392($fp)
+ lw $t0 -392($fp)
+ move $s2 $t0
+ sw $t0 -392($fp)
+ move $t6 $s2
+ move $s2 $t6
+ lw $t5 0($s2)
+ lw $t4 0($t5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -120($fp)
+ move $s5 $t0
+ sw $t0 -120($fp)
+ move $s0 $s5
+ lw $t0 -80($fp)
+ move $t0 $s2
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $s2 $t0
+ sw $t0 -80($fp)
+ lw $t0 -84($fp)
+ lw $t0 0($s2)
+ sw $t0 -84($fp)
+ lw $t0 -88($fp)
+ lw $t1 -84($fp)
+ lw $t0 0($t1)
+ sw $t1 -84($fp)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -88($fp)
+ lw $t1 -88($fp)
+ jalr $t1
+ sw $t1 -88($fp)
+ sw $t0 -88($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -76($fp)
+ move $t0 $v0
+ sw $t0 -76($fp)
+ lw $t0 -396($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -396($fp)
+ lw $t0 -396($fp)
+ move $t7 $t0
+ sw $t0 -396($fp)
+ lw $t0 -384($fp)
+ li $t0 1
+ sw $t0 -384($fp)
+ lw $t0 -388($fp)
+ lw $t1 -384($fp)
+ move $t0 $t1
+ sw $t1 -384($fp)
+ sw $t0 -388($fp)
+ lw $t0 -388($fp)
+ move $s1 $t0
+ sw $t0 -388($fp)
+ j if238_end
+if238_else:
+ lw $t0 -344($fp)
+ li $t0 0
+ sw $t0 -344($fp)
+ lw $t0 -352($fp)
+ lw $t1 -344($fp)
+ move $t0 $t1
+ sw $t1 -344($fp)
+ sw $t0 -352($fp)
+ lw $t0 -264($fp)
+ lw $t1 -352($fp)
+ move $t0 $t1
+ sw $t1 -352($fp)
+ sw $t0 -264($fp)
+if238_end:
+ j while178_test
+while178_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ move $t3 $s5
+ move $s5 $t3
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 396
+ jr $ra
+List_Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 168
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $s5 0
+ move $s4 $s5
+ lw $t0 -68($fp)
+ move $t0 $s4
+ sw $t0 -68($fp)
+ move $s4 $s6
+ move $s3 $s4
+ move $s4 $s3
+ lw $s3 0($s6)
+ move $s2 $s3
+ move $s3 $s2
+ lw $s2 0($s6)
+ move $s6 $s2
+ move $s2 $s6
+while276_test:
+ move $s6 $s3
+ lw $t0 -116($fp)
+ move $t0 $s6
+ sw $t0 -116($fp)
+ lw $t0 -144($fp)
+ lw $t1 -116($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -116($fp)
+ sw $t0 -144($fp)
+ lw $t0 -108($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -108($fp)
+ lw $t0 -120($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -120($fp)
+ lw $t0 -88($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ beqz $t0 while276_end
+ sw $t0 -88($fp)
+while276_body:
+ lw $t0 -104($fp)
+ move $t0 $s7
+ sw $t0 -104($fp)
+ lw $t0 -104($fp)
+ move $s7 $t0
+ sw $t0 -104($fp)
+ lw $t0 -96($fp)
+ lw $t0 0($s7)
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ lw $t4 0($t0)
+ sw $t0 -96($fp)
+ move $t6 $s2
+ lw $t0 -72($fp)
+ move $t0 $t6
+ sw $t0 -72($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -72($fp)
+ move $a1 $t0
+ sw $t0 -72($fp)
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -80($fp)
+ move $t0 $v0
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $t3 $t0
+ sw $t0 -80($fp)
+ lw $t0 -168($fp)
+ move $t0 $t3
+ sw $t0 -168($fp)
+ lw $t0 -168($fp)
+ beqz $t0 if283_else
+ sw $t0 -168($fp)
+if283_body:
+ lw $t0 -164($fp)
+ li $t0 1
+ sw $t0 -164($fp)
+ lw $t0 -124($fp)
+ lw $t1 -164($fp)
+ move $t0 $t1
+ sw $t1 -164($fp)
+ sw $t0 -124($fp)
+ lw $t0 -68($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -68($fp)
+ j if283_end
+if283_else:
+ lw $t0 -148($fp)
+ li $t0 0
+ sw $t0 -148($fp)
+ lw $t0 -160($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -160($fp)
+ lw $t0 -152($fp)
+ lw $t1 -160($fp)
+ move $t0 $t1
+ sw $t1 -160($fp)
+ sw $t0 -152($fp)
+if283_end:
+ lw $t0 -132($fp)
+ move $t0 $s4
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ move $s4 $t0
+ sw $t0 -132($fp)
+ lw $t0 -128($fp)
+ lw $t0 0($s4)
+ sw $t0 -128($fp)
+ lw $t0 -140($fp)
+ lw $t1 -128($fp)
+ lw $t0 0($t1)
+ sw $t1 -128($fp)
+ sw $t0 -140($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ lw $t0 -140($fp)
+ lw $t1 -140($fp)
+ jalr $t1
+ sw $t1 -140($fp)
+ sw $t0 -140($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -156($fp)
+ move $t0 $v0
+ sw $t0 -156($fp)
+ lw $t0 -136($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ move $s4 $t0
+ sw $t0 -136($fp)
+ move $s0 $s4
+ move $s4 $s0
+ lw $s1 0($s4)
+ lw $t0 -84($fp)
+ lw $t0 0($s1)
+ sw $t0 -84($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ lw $t0 -84($fp)
+ lw $t1 -84($fp)
+ jalr $t1
+ sw $t1 -84($fp)
+ sw $t0 -84($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -112($fp)
+ move $t0 $v0
+ sw $t0 -112($fp)
+ lw $t0 -76($fp)
+ lw $t1 -112($fp)
+ move $t0 $t1
+ sw $t1 -112($fp)
+ sw $t0 -76($fp)
+ lw $t0 -76($fp)
+ move $s3 $t0
+ sw $t0 -76($fp)
+ lw $t0 -92($fp)
+ move $t0 $s4
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s4 $t0
+ sw $t0 -92($fp)
+ lw $t5 0($s4)
+ lw $t7 0($t5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ jalr $t7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -100($fp)
+ move $t0 $v0
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s5 $t0
+ sw $t0 -100($fp)
+ move $s2 $s5
+ j while276_test
+while276_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ move $t3 $s5
+ move $s5 $t3
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 168
+ jr $ra
+List_GetEnd:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_GetElem:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_GetNext:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+List_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 132
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $s6 $s7
+ move $s5 $s6
+ move $s6 $s5
+ lw $s5 0($s7)
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s7)
+ move $s7 $s4
+ move $s4 $s7
+while328_test:
+ move $s7 $s5
+ lw $t0 -92($fp)
+ move $t0 $s7
+ sw $t0 -92($fp)
+ lw $t0 -124($fp)
+ lw $t1 -92($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -92($fp)
+ sw $t0 -124($fp)
+ lw $t0 -84($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -84($fp)
+ lw $t0 -104($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -104($fp)
+ lw $t0 -96($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ beqz $t0 while328_end
+ sw $t0 -96($fp)
+while328_body:
+ move $t3 $s4
+ move $s4 $t3
+ lw $t0 -72($fp)
+ lw $t0 0($s4)
+ sw $t0 -72($fp)
+ lw $t0 -72($fp)
+ lw $t6 0($t0)
+ sw $t0 -72($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ jalr $t6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $t0 $v0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t7 $t0
+ sw $t0 -68($fp)
+ move $t4 $t7
+ move $a0 $t4
+ jal _print
+ move $s2 $s6
+ move $s6 $s2
+ lw $s3 0($s6)
+ lw $s0 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t5 $v0
+ move $s1 $t5
+ move $s6 $s1
+ lw $t0 -128($fp)
+ move $t0 $s6
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ move $s6 $t0
+ sw $t0 -128($fp)
+ lw $t0 -76($fp)
+ lw $t0 0($s6)
+ sw $t0 -76($fp)
+ lw $t0 -112($fp)
+ lw $t1 -76($fp)
+ lw $t0 0($t1)
+ sw $t1 -76($fp)
+ sw $t0 -112($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ lw $t0 -112($fp)
+ lw $t1 -112($fp)
+ jalr $t1
+ sw $t1 -112($fp)
+ sw $t0 -112($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -132($fp)
+ move $t0 $v0
+ sw $t0 -132($fp)
+ lw $t0 -108($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -108($fp)
+ lw $t0 -108($fp)
+ move $s5 $t0
+ sw $t0 -108($fp)
+ lw $t0 -116($fp)
+ move $t0 $s6
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ move $s6 $t0
+ sw $t0 -116($fp)
+ lw $t0 -88($fp)
+ lw $t0 0($s6)
+ sw $t0 -88($fp)
+ lw $t0 -80($fp)
+ lw $t1 -88($fp)
+ lw $t0 0($t1)
+ sw $t1 -88($fp)
+ sw $t0 -80($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ lw $t0 -80($fp)
+ lw $t1 -80($fp)
+ jalr $t1
+ sw $t1 -80($fp)
+ sw $t0 -80($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -100($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s4 $t0
+ sw $t0 -100($fp)
+ j while328_test
+while328_end:
+ li $t3 1
+ move $t4 $t3
+ move $t3 $t4
+ move $v0 $t3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 132
+ jr $ra
+LL_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ li $a0 52
+ jal _heapAlloc
+ move $s6 $v0
+ la $t9 functable_List
+ sw $t9 0($s6)
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ move $s5 $s7
+ move $s7 $s5
+ move $s5 $s7
+ lw $s7 0($s5)
+ lw $s4 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s6 $s4
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s7 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s7 $s4
+ move $s6 $s7
+ li $a0 36
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Element
+ sw $t9 0($s7)
+ move $s4 $s7
+ move $s7 $s4
+ move $s4 $s7
+ move $s7 $s4
+ move $s4 $s7
+ lw $s7 0($s4)
+ lw $s3 0($s7)
+ li $s7 25
+ move $s2 $s7
+ li $s7 37000
+ move $s1 $s7
+ li $s7 0
+ move $s0 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s2
+ move $a2 $s1
+ move $a3 $s0
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s0 $s7
+ move $s6 $s0
+ move $s0 $s5
+ move $s5 $s0
+ lw $s0 0($s5)
+ lw $s7 0($s0)
+ move $s0 $s4
+ move $s1 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s1
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s1 $s0
+ move $s5 $s1
+ move $s1 $s5
+ move $s5 $s1
+ lw $s1 0($s5)
+ lw $s0 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $s0 $s1
+ move $s6 $s0
+ li $s0 10000000
+ move $s1 $s0
+ move $s0 $s1
+ move $a0 $s0
+ jal _print
+ li $a0 36
+ jal _heapAlloc
+ move $s0 $v0
+ la $t9 functable_Element
+ sw $t9 0($s0)
+ move $s1 $s0
+ move $s0 $s1
+ move $s4 $s0
+ move $s0 $s4
+ move $s4 $s0
+ lw $s0 0($s4)
+ lw $s1 0($s0)
+ li $s0 39
+ move $s7 $s0
+ li $s0 42000
+ move $s2 $s0
+ li $s0 1
+ move $s3 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s7
+ move $a2 $s2
+ move $a3 $s3
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s3 $s0
+ move $s6 $s3
+ move $s3 $s4
+ move $s0 $s3
+ move $s3 $s0
+ move $s0 $s5
+ move $s5 $s0
+ lw $s0 0($s5)
+ lw $s2 0($s0)
+ move $s0 $s4
+ move $s7 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s7 $s0
+ move $s5 $s7
+ move $s7 $s5
+ move $s5 $s7
+ lw $s7 0($s5)
+ lw $s0 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s0 $s7
+ move $s6 $s0
+ li $s0 10000000
+ move $s7 $s0
+ move $s0 $s7
+ move $a0 $s0
+ jal _print
+ li $a0 36
+ jal _heapAlloc
+ move $s0 $v0
+ la $t9 functable_Element
+ sw $t9 0($s0)
+ move $s7 $s0
+ move $s0 $s7
+ move $s4 $s0
+ move $s0 $s4
+ move $s4 $s0
+ lw $s0 0($s4)
+ lw $s7 0($s0)
+ li $s0 22
+ move $s2 $s0
+ li $s0 34000
+ move $s1 $s0
+ li $s0 0
+ move $t7 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s2
+ move $a2 $s1
+ move $a3 $t7
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $t7 $s0
+ move $s6 $t7
+ move $t7 $s5
+ move $s5 $t7
+ lw $t7 0($s5)
+ lw $s0 0($t7)
+ move $t7 $s4
+ move $s1 $t7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s1
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t7 $v0
+ move $s1 $t7
+ move $s5 $s1
+ move $s1 $s5
+ move $s5 $s1
+ lw $s1 0($s5)
+ lw $t7 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $t7 $s1
+ move $s6 $t7
+ li $a0 36
+ jal _heapAlloc
+ move $t7 $v0
+ la $t9 functable_Element
+ sw $t9 0($t7)
+ move $s1 $t7
+ move $t7 $s1
+ move $s1 $t7
+ move $t7 $s1
+ move $s1 $t7
+ lw $t7 0($s1)
+ lw $s0 0($t7)
+ li $t7 27
+ move $s2 $t7
+ li $t7 34000
+ move $s7 $t7
+ li $t7 0
+ move $t6 $t7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s1
+ move $a1 $s2
+ move $a2 $s7
+ move $a3 $t6
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t7 $v0
+ move $t6 $t7
+ move $s6 $t6
+ move $t6 $s5
+ move $s5 $t6
+ lw $t6 0($s5)
+ lw $t7 0($t6)
+ move $t6 $s3
+ move $s7 $t6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s7
+ jalr $t7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t6 $v0
+ move $s7 $t6
+ move $t6 $s7
+ move $a0 $t6
+ jal _print
+ move $t6 $s5
+ move $s5 $t6
+ lw $t6 0($s5)
+ lw $s7 0($t6)
+ move $t6 $s1
+ move $s1 $t6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s1
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t6 $v0
+ move $s1 $t6
+ move $t6 $s1
+ move $a0 $t6
+ jal _print
+ li $t6 10000000
+ move $s1 $t6
+ move $t6 $s1
+ move $a0 $t6
+ jal _print
+ li $a0 36
+ jal _heapAlloc
+ move $t6 $v0
+ la $t9 functable_Element
+ sw $t9 0($t6)
+ move $s1 $t6
+ move $t6 $s1
+ move $s4 $t6
+ move $t6 $s4
+ move $s4 $t6
+ lw $t6 0($s4)
+ lw $s1 0($t6)
+ li $t6 28
+ move $s7 $t6
+ li $t6 35000
+ move $t7 $t6
+ li $t6 0
+ move $s2 $t6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s7
+ move $a2 $t7
+ move $a3 $s2
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t6 $v0
+ move $s2 $t6
+ move $s6 $s2
+ move $s2 $s5
+ move $s5 $s2
+ lw $s2 0($s5)
+ lw $t6 0($s2)
+ move $s2 $s4
+ move $t7 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $t7
+ jalr $t6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $t7 $s2
+ move $s5 $t7
+ move $t7 $s5
+ move $s5 $t7
+ lw $t7 0($s5)
+ lw $s2 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t7 $v0
+ move $s2 $t7
+ move $s6 $s2
+ li $s2 2220000
+ move $t7 $s2
+ move $s2 $t7
+ move $a0 $s2
+ jal _print
+ move $s2 $s5
+ move $s5 $s2
+ lw $s2 0($s5)
+ lw $t7 0($s2)
+ move $s2 $s3
+ move $s3 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s3
+ jalr $t7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s3 $s2
+ move $s5 $s3
+ move $s3 $s5
+ move $s5 $s3
+ lw $s3 0($s5)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s6 $s2
+ li $s2 33300000
+ move $s3 $s2
+ move $s2 $s3
+ move $a0 $s2
+ jal _print
+ move $s2 $s5
+ move $s5 $s2
+ lw $s2 0($s5)
+ lw $s3 0($s2)
+ move $s2 $s4
+ move $s4 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s4 $s2
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s2 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s2 $s4
+ move $s6 $s2
+ li $s2 44440000
+ move $s6 $s2
+ move $s2 $s6
+ move $a0 $s2
+ jal _print
+ li $s2 0
+ move $s6 $s2
+ move $s2 $s6
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/LinkedList.vaporm b/output/LinkedList.vaporm
index 7a65181..1a1733d 100644
--- a/output/LinkedList.vaporm
+++ b/output/LinkedList.vaporm
@@ -30,15 +30,16 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_LL
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -46,9 +47,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s5 = $s7
- PrintIntS($s5 )
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -70,12 +72,20 @@ func Element_Init [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
- $s4 = $a3
+ $s3 = $a3
+ $s4 = $s6
+ $s6 = $s4
[$s5+24] = $s6
+ $s6 = $s7
+ $s7 = $s6
[$s5+28] = $s7
- [$s5+32] = $s4
- $s4 = 1
- $v0 = $s4
+ $s7 = $s3
+ $s3 = $s7
+ [$s5+32] = $s3
+ $s3 = 1
+ $s5 = $s3
+ $s3 = $s5
+ $v0 = $s3
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -96,6 +106,8 @@ func Element_GetAge [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+24]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -117,6 +129,8 @@ func Element_GetSalary [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+28]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -138,6 +152,8 @@ func Element_GetMarried [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+32]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -157,11 +173,14 @@ func Element_Equal [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s5 = $a0
- $s6 = $a1
- $s7 = 1
- $s6 = $s6
- $s4 = [$s6+0]
+ $s6 = $a0
+ $s7 = $a1
+ $s5 = 1
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
$s3 = [$s4+4]
local[8] = $t3
local[9] = $t4
@@ -169,7 +188,7 @@ func Element_Equal [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -179,56 +198,70 @@ func Element_Equal [in 0, out 0, local 14]
$t8 = local[13]
$s4 = $v0
$s3 = $s4
- $s4 = [$s5+0]
- $s2 = $s3
- $s3 = [$s5+24]
- $s4 = [$s4+20]
+ $s4 = $s3
+ $s3 = $s6
+ $s3 = [$s6+0]
+ $s2 = $s4
+ $s4 = $s2
+ $s2 = [$s6+24]
+ $s1 = $s2
+ $s3 = [$s3+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s5
- $a1 = $s2
- $a2 = $s3
- call $s4
+ $a0 = $s6
+ $a1 = $s4
+ $a2 = $s1
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s3 = Eq($s1 0 )
- $s1 = $s3
- if0 $s1 goto :if12_else
-if12_body:
- $s7 = 0
- goto :if12_end
-if12_else:
- $s6 = $s6
- $s1 = [$s6+0]
- $s3 = [$s1+8]
+ $s2 = $v0
+ $s1 = $s2
+ $s2 = Eq($s1 0 )
+ $s1 = $s2
+ $s2 = $s1
+ $s1 = $s2
+ if0 $s1 goto :if32_else
+if32_body:
+ $s1 = 0
+ $s2 = $s1
+ $s5 = $s2
+ goto :if32_end
+if32_else:
+ $s2 = $s7
+ $s7 = $s2
+ $s2 = [$s7+0]
+ $s1 = [$s2+8]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s3
+ $a0 = $s7
+ call $s1
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s3 = $s1
- $s1 = [$s5+0]
- $s2 = $s3
- $s3 = [$s5+28]
+ $s2 = $v0
+ $s1 = $s2
+ $s2 = $s1
+ $s1 = $s6
+ $s1 = [$s6+0]
+ $s4 = $s2
+ $s2 = $s4
+ $s4 = [$s6+28]
+ $s3 = $s4
$s1 = [$s1+20]
local[8] = $t3
local[9] = $t4
@@ -236,7 +269,7 @@ if12_else:
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s5
+ $a0 = $s6
$a1 = $s2
$a2 = $s3
call $s1
@@ -247,27 +280,35 @@ if12_else:
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s3 = Eq($s4 0 )
+ $s3 = $s4
+ $s4 = Eq($s3 0 )
+ $s3 = $s4
$s4 = $s3
- if0 $s4 goto :if21_else
-if21_body:
- $s7 = 0
- goto :if21_end
-if21_else:
- $s4 = [$s5+32]
- if0 $s4 goto :if27_else
-if27_body:
- $s6 = $s6
- $s4 = [$s6+0]
- $s5 = [$s4+12]
+ $s3 = $s4
+ if0 $s3 goto :if51_else
+if51_body:
+ $s3 = 0
+ $s4 = $s3
+ $s5 = $s4
+ goto :if51_end
+if51_else:
+ $s4 = [$s6+32]
+ $s6 = $s4
+ $s4 = $s6
+ if0 $s4 goto :if65_else
+if65_body:
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
+ $s6 = [$s4+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s5
+ $a0 = $s7
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -275,27 +316,35 @@ if27_body:
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s5 = Eq($s4 0 )
- $s4 = $s5
- if0 $s4 goto :if28_else
-if28_body:
- $s7 = 0
- goto :if28_end
-if28_else:
+ $s6 = $s4
+ $s4 = Eq($s6 0 )
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ if0 $s6 goto :if68_else
+if68_body:
+ $s6 = 0
+ $s4 = $s6
+ $s5 = $s4
+ goto :if68_end
+if68_else:
$s4 = 0
-if28_end:
- goto :if27_end
-if27_else:
- $s6 = $s6
- $s5 = [$s6+0]
- $s3 = [$s5+12]
+ $s6 = $s4
+ $s4 = $s6
+if68_end:
+ goto :if65_end
+if65_else:
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s3 = [$s6+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -303,20 +352,27 @@ if27_else:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s3 = $s5
- if0 $s3 goto :if33_else
-if33_body:
- $s7 = 0
- goto :if33_end
-if33_else:
- $s4 = 0
-if33_end:
-if27_end:
-if21_end:
-if12_end:
- $s4 = $s7
- $v0 = $s4
+ $s6 = $v0
+ $s3 = $s6
+ $s6 = $s3
+ if0 $s6 goto :if81_else
+if81_body:
+ $s6 = 0
+ $s3 = $s6
+ $s5 = $s3
+ goto :if81_end
+if81_else:
+ $s3 = 0
+ $s6 = $s3
+ $s4 = $s6
+if81_end:
+if65_end:
+if51_end:
+if32_end:
+ $s6 = $s5
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -339,34 +395,51 @@ func Element_Compare [in 0, out 0, local 14]
$s6 = $a1
$s7 = $a2
$s4 = 0
+ $s5 = $s4
+ $s4 = $s5
$s5 = $s7
$s3 = 1
$s2 = Add($s5 $s3 )
$s3 = $s2
- $s2 = $s6
+ $s2 = $s3
+ $s3 = $s6
$s5 = $s7
- $s7 = LtS($s2 $s5 )
+ $s7 = LtS($s3 $s5 )
$s5 = $s7
- if0 $s5 goto :if41_else
-if41_body:
- $s4 = 0
- goto :if41_end
-if41_else:
+ $s7 = $s5
+ if0 $s7 goto :if100_else
+if100_body:
+ $s7 = 0
+ $s5 = $s7
+ $s4 = $s5
+ goto :if100_end
+if100_else:
$s5 = $s6
- $s6 = $s3
- $s3 = LtS($s5 $s6 )
- $s6 = Eq($s3 0 )
- $s3 = $s6
- if0 $s3 goto :if45_else
-if45_body:
- $s4 = 0
- goto :if45_end
-if45_else:
- $s4 = 1
-if45_end:
-if41_end:
- $s3 = $s4
- $v0 = $s3
+ $s6 = $s2
+ $s2 = LtS($s5 $s6 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = Eq($s6 0 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ if0 $s6 goto :if107_else
+if107_body:
+ $s6 = 0
+ $s2 = $s6
+ $s4 = $s2
+ goto :if107_end
+if107_else:
+ $s2 = 1
+ $s6 = $s2
+ $s4 = $s6
+if107_end:
+if100_end:
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -385,10 +458,14 @@ func List_Init [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
- [$s7+48] = 1
+ $s6 = $a0
$s7 = 1
- $v0 = $s7
+ $s5 = $s7
+ [$s6+48] = $s5
+ $s5 = 1
+ $s6 = $s5
+ $s5 = $s6
+ $v0 = $s5
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -410,12 +487,20 @@ func List_InitNew [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
- $s4 = $a3
- [$s5+48] = $s4
+ $s3 = $a3
+ $s4 = $s3
+ $s3 = $s4
+ [$s5+48] = $s3
+ $s3 = $s6
+ $s6 = $s3
[$s5+40] = $s6
+ $s6 = $s7
+ $s7 = $s6
[$s5+44] = $s7
- $s5 = 1
- $v0 = $s5
+ $s7 = 1
+ $s5 = $s7
+ $s7 = $s5
+ $v0 = $s7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -437,15 +522,23 @@ func List_Insert [in 0, out 0, local 14]
$s6 = $a0
$s7 = $a1
$s5 = $s6
+ $s6 = $s5
+ $s5 = $s6
$s6 = HeapAllocZ(52 )
[$s6+0] = :functable_List
$s4 = $s6
- $s4 = $s4
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ $s4 = $s6
$s6 = [$s4+0]
$s3 = [$s6+4]
$s6 = $s7
- $s7 = $s5
- $s5 = 0
+ $s7 = $s6
+ $s6 = $s5
+ $s5 = $s6
+ $s6 = 0
+ $s2 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -453,9 +546,9 @@ func List_Insert [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $s6
- $a2 = $s7
- $a3 = $s5
+ $a1 = $s7
+ $a2 = $s5
+ $a3 = $s2
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -463,10 +556,13 @@ func List_Insert [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
- $s5 = $s4
- $v0 = $s5
+ $s6 = $v0
+ $s2 = $s6
+ $s6 = $s2
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -485,10 +581,14 @@ func List_SetNext [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+44] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+44] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -499,7 +599,7 @@ func List_SetNext [in 0, out 0, local 14]
$s6 = local[6]
$s7 = local[7]
ret
-func List_Delete [in 0, out 0, local 57]
+func List_Delete [in 0, out 0, local 97]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -510,69 +610,133 @@ func List_Delete [in 0, out 0, local 57]
local[7] = $s7
$s6 = $a0
$s7 = $a1
+ $s5 = $s6
+ $s4 = $s5
$t0 = local[14]
- $t0 = $s6
+ $t0 = $s4
local[14] = $t0
$s4 = 0
+ $s3 = $s4
+ $s4 = $s3
$s3 = 0
$s2 = 1
$s1 = Sub($s3 $s2 )
$s2 = $s1
- $s1 = $s6
+ $s1 = $s2
+ $s2 = $s6
+ $s3 = $s2
+ $s2 = $s3
$s3 = $s6
+ $s0 = $s3
+ $s3 = $s0
$s0 = [$s6+48]
+ $t7 = $s0
+ $s0 = $t7
$t7 = [$s6+40]
-while65_test:
- $s6 = Eq($s0 0 )
- $t0 = local[52]
+ $s6 = $t7
+ $t7 = $s6
+while178_test:
+ $s6 = $s0
+ $t0 = local[39]
$t0 = $s6
- local[52] = $t0
- $t0 = local[50]
- $t0 = Eq($s4 0 )
- local[50] = $t0
- $t0 = local[42]
- $t1 = local[50]
+ local[39] = $t0
+ $t0 = local[80]
+ $t1 = local[39]
+ $t0 = Eq($t1 0 )
+ local[39] = $t1
+ local[80] = $t0
+ $t0 = local[30]
+ $t1 = local[80]
$t0 = $t1
- local[50] = $t1
- local[42] = $t0
- $t0 = local[41]
- $t1 = local[52]
- $t0 = Eq(1 $t1 )
- local[52] = $t1
- local[41] = $t0
- $t0 = local[43]
- $t1 = local[42]
- $t0 = Eq(1 $t1 )
- local[42] = $t1
- local[43] = $t0
- $t0 = local[49]
- $t1 = local[41]
- $t2 = local[43]
- $t0 = Eq($t1 $t2 )
- local[43] = $t2
- local[41] = $t1
- local[49] = $t0
- $t0 = local[38]
- $t1 = local[49]
+ local[80] = $t1
+ local[30] = $t0
+ $t0 = local[36]
+ $t1 = local[30]
$t0 = $t1
- local[49] = $t1
- local[38] = $t0
+ local[30] = $t1
+ local[36] = $t0
+ $t0 = local[35]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[35] = $t0
+ $t0 = local[37]
+ $t0 = $s4
+ local[37] = $t0
+ $t0 = local[32]
+ $t1 = local[37]
+ $t0 = $t1
+ local[37] = $t1
+ local[32] = $t0
$t0 = local[38]
- if0 $t0 goto :while65_end
+ $t1 = local[32]
+ $t0 = Eq($t1 0 )
+ local[32] = $t1
local[38] = $t0
-while65_body:
- $s7 = $s7
- $t0 = local[40]
+ $t0 = local[31]
+ $t1 = local[38]
+ $t0 = $t1
+ local[38] = $t1
+ local[31] = $t0
+ $t0 = local[34]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[34] = $t0
+ $t0 = local[33]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
+ local[33] = $t0
+ $t0 = local[29]
+ $t1 = local[35]
+ $t0 = Eq(1 $t1 )
+ local[35] = $t1
+ local[29] = $t0
+ $t0 = local[15]
+ $t1 = local[33]
+ $t0 = Eq(1 $t1 )
+ local[33] = $t1
+ local[15] = $t0
+ $t0 = local[81]
+ $t1 = local[29]
+ $t2 = local[15]
+ $t0 = Eq($t1 $t2 )
+ local[15] = $t2
+ local[29] = $t1
+ local[81] = $t0
+ $t0 = local[81]
+ $t3 = $t0
+ local[81] = $t0
+ $t0 = local[25]
+ $t0 = $t3
+ local[25] = $t0
+ $t0 = local[25]
+ if0 $t0 goto :while178_end
+ local[25] = $t0
+while178_body:
+ $t0 = local[28]
+ $t0 = $s7
+ local[28] = $t0
+ $t0 = local[28]
+ $s7 = $t0
+ local[28] = $t0
+ $t0 = local[26]
$t0 = [$s7+0]
- local[40] = $t0
- $t0 = local[39]
- $t1 = local[40]
+ local[26] = $t0
+ $t0 = local[21]
+ $t1 = local[26]
$t0 = [$t1+16]
- local[40] = $t1
- local[39] = $t0
- $t0 = local[34]
+ local[26] = $t1
+ local[21] = $t0
+ $t0 = local[20]
$t0 = $t7
- local[34] = $t0
+ local[20] = $t0
+ $t0 = local[23]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[23] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -580,151 +744,202 @@ while65_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $t0 = local[34]
+ $t0 = local[23]
$a1 = $t0
- local[34] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[23] = $t0
+ $t0 = local[21]
+ $t1 = local[21]
call $t1
- local[39] = $t1
- local[39] = $t0
+ local[21] = $t1
+ local[21] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[37]
+ $t0 = local[24]
$t0 = $v0
- local[37] = $t0
- $t0 = local[33]
- $t1 = local[37]
+ local[24] = $t0
+ $t0 = local[22]
+ $t1 = local[24]
$t0 = $t1
- local[37] = $t1
- local[33] = $t0
- $t0 = local[33]
- if0 $t0 goto :if74_else
- local[33] = $t0
-if74_body:
- $s4 = 1
- $t0 = local[35]
- $t0 = $s2
- local[35] = $t0
- $t0 = local[31]
+ local[24] = $t1
+ local[22] = $t0
+ $t0 = local[50]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[50] = $t0
+ $t0 = local[50]
+ if0 $t0 goto :if196_else
+ local[50] = $t0
+if196_body:
+ $t0 = local[52]
+ $t0 = 1
+ local[52] = $t0
+ $t0 = local[51]
+ $t1 = local[52]
+ $t0 = $t1
+ local[52] = $t1
+ local[51] = $t0
+ $t0 = local[51]
+ $s4 = $t0
+ local[51] = $t0
+ $t0 = local[56]
+ $t0 = $s1
+ local[56] = $t0
+ $t0 = local[59]
$t0 = 0
- local[31] = $t0
- $t0 = local[36]
- $t1 = local[35]
- $t2 = local[31]
+ local[59] = $t0
+ $t0 = local[57]
+ $t1 = local[56]
+ $t2 = local[59]
$t0 = LtS($t1 $t2 )
- local[31] = $t2
- local[35] = $t1
- local[36] = $t0
- $t0 = local[30]
- $t1 = local[36]
+ local[59] = $t2
+ local[56] = $t1
+ local[57] = $t0
+ $t0 = local[58]
+ $t1 = local[57]
$t0 = $t1
- local[36] = $t1
- local[30] = $t0
- $t0 = local[30]
- if0 $t0 goto :if79_else
- local[30] = $t0
-if79_body:
- $s1 = $s1
- $t0 = local[27]
- $t0 = [$s1+0]
- local[27] = $t0
- $t0 = local[26]
- $t1 = local[27]
+ local[57] = $t1
+ local[58] = $t0
+ $t0 = local[54]
+ $t1 = local[58]
+ $t0 = $t1
+ local[58] = $t1
+ local[54] = $t0
+ $t0 = local[54]
+ if0 $t0 goto :if206_else
+ local[54] = $t0
+if206_body:
+ $t0 = local[55]
+ $t0 = $s2
+ local[55] = $t0
+ $t0 = local[55]
+ $s2 = $t0
+ local[55] = $t0
+ $t0 = local[41]
+ $t0 = [$s2+0]
+ local[41] = $t0
+ $t0 = local[40]
+ $t1 = local[41]
$t0 = [$t1+32]
- local[27] = $t1
- local[26] = $t0
+ local[41] = $t1
+ local[40] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s1
- $t0 = local[26]
- $t1 = local[26]
+ $a0 = $s2
+ $t0 = local[40]
+ $t1 = local[40]
call $t1
- local[26] = $t1
- local[26] = $t0
+ local[40] = $t1
+ local[40] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[21]
+ $t0 = local[53]
$t0 = $v0
- local[21] = $t0
+ local[53] = $t0
+ $t0 = local[43]
+ $t1 = local[53]
+ $t0 = $t1
+ local[53] = $t1
+ local[43] = $t0
$t0 = local[14]
- $t1 = local[21]
+ $t1 = local[43]
$t0 = $t1
- local[21] = $t1
+ local[43] = $t1
local[14] = $t0
- goto :if79_end
-if79_else:
- $t0 = local[28]
+ goto :if206_end
+if206_else:
+ $t0 = local[47]
$t0 = 0
- local[28] = $t0
- $t0 = local[23]
+ local[47] = $t0
+ $t0 = local[46]
$t0 = 555
- local[23] = $t0
- $t0 = local[29]
- $t1 = local[28]
- $t2 = local[23]
+ local[46] = $t0
+ $t0 = local[42]
+ $t1 = local[47]
+ $t2 = local[46]
$t0 = Sub($t1 $t2 )
- local[23] = $t2
- local[28] = $t1
- local[29] = $t0
- $t0 = local[22]
- $t1 = local[29]
+ local[46] = $t2
+ local[47] = $t1
+ local[42] = $t0
+ $t0 = local[49]
+ $t1 = local[42]
$t0 = $t1
- local[29] = $t1
- local[22] = $t0
- $t0 = local[22]
+ local[42] = $t1
+ local[49] = $t0
+ $t0 = local[48]
+ $t1 = local[49]
+ $t0 = $t1
+ local[49] = $t1
+ local[48] = $t0
+ $t0 = local[48]
PrintIntS($t0 )
- local[22] = $t0
- $s3 = $s3
- $t0 = local[20]
+ local[48] = $t0
+ $t0 = local[74]
+ $t0 = $s3
+ local[74] = $t0
+ $t0 = local[74]
+ $s3 = $t0
+ local[74] = $t0
+ $t0 = local[71]
$t0 = [$s3+0]
- local[20] = $t0
- $t0 = local[20]
- $t5 = [$t0+12]
- local[20] = $t0
- $s1 = $s1
- $t0 = local[17]
- $t0 = [$s1+0]
- local[17] = $t0
- $t0 = local[16]
- $t1 = local[17]
+ local[71] = $t0
+ $t0 = local[70]
+ $t1 = local[71]
+ $t0 = [$t1+12]
+ local[71] = $t1
+ local[70] = $t0
+ $t0 = local[72]
+ $t0 = $s2
+ local[72] = $t0
+ $t0 = local[72]
+ $s2 = $t0
+ local[72] = $t0
+ $t0 = local[77]
+ $t0 = [$s2+0]
+ local[77] = $t0
+ $t0 = local[76]
+ $t1 = local[77]
$t0 = [$t1+32]
- local[17] = $t1
- local[16] = $t0
+ local[77] = $t1
+ local[76] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s1
- $t0 = local[16]
- $t1 = local[16]
+ $a0 = $s2
+ $t0 = local[76]
+ $t1 = local[76]
call $t1
- local[16] = $t1
- local[16] = $t0
+ local[76] = $t1
+ local[76] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- $t0 = local[19]
- $t0 = $t6
- local[19] = $t0
+ $t0 = local[73]
+ $t0 = $v0
+ local[73] = $t0
+ $t0 = local[79]
+ $t1 = local[73]
+ $t0 = $t1
+ local[73] = $t1
+ local[79] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -732,164 +947,264 @@ if79_else:
local[12] = $t7
local[13] = $t8
$a0 = $s3
- $t0 = local[19]
+ $t0 = local[79]
$a1 = $t0
- local[19] = $t0
- call $t5
+ local[79] = $t0
+ $t0 = local[70]
+ $t1 = local[70]
+ call $t1
+ local[70] = $t1
+ local[70] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[24]
- $t0 = $v0
- local[24] = $t0
- $t0 = local[25]
- $t1 = local[24]
- $t0 = $t1
- local[24] = $t1
- local[25] = $t0
- $t3 = 0
- $t4 = 555
- $t0 = local[18]
- $t0 = Sub($t3 $t4 )
- local[18] = $t0
- $t0 = local[15]
- $t1 = local[18]
- $t0 = $t1
- local[18] = $t1
- local[15] = $t0
- $t0 = local[15]
- PrintIntS($t0 )
- local[15] = $t0
-if79_end:
- goto :if74_end
-if74_else:
- $s5 = 0
-if74_end:
$t0 = local[44]
- $t0 = Eq($s4 0 )
+ $t0 = $v0
local[44] = $t0
- $t0 = local[46]
+ $t0 = local[78]
$t1 = local[44]
$t0 = $t1
local[44] = $t1
- local[46] = $t0
- $t0 = local[46]
- if0 $t0 goto :if101_else
- local[46] = $t0
-if101_body:
- $s3 = $s1
- $s1 = $s1
- $t0 = local[54]
- $t0 = [$s1+0]
- local[54] = $t0
- $t0 = local[53]
- $t1 = local[54]
+ local[78] = $t0
+ $t0 = local[45]
+ $t1 = local[78]
+ $t0 = $t1
+ local[78] = $t1
+ local[45] = $t0
+ $t0 = local[65]
+ $t0 = 0
+ local[65] = $t0
+ $t0 = local[64]
+ $t0 = 555
+ local[64] = $t0
+ $t0 = local[75]
+ $t1 = local[65]
+ $t2 = local[64]
+ $t0 = Sub($t1 $t2 )
+ local[64] = $t2
+ local[65] = $t1
+ local[75] = $t0
+ $t0 = local[61]
+ $t1 = local[75]
+ $t0 = $t1
+ local[75] = $t1
+ local[61] = $t0
+ $t0 = local[60]
+ $t1 = local[61]
+ $t0 = $t1
+ local[61] = $t1
+ local[60] = $t0
+ $t0 = local[60]
+ PrintIntS($t0 )
+ local[60] = $t0
+if206_end:
+ goto :if196_end
+if196_else:
+ $t0 = local[62]
+ $t0 = 0
+ local[62] = $t0
+ $t0 = local[67]
+ $t1 = local[62]
+ $t0 = $t1
+ local[62] = $t1
+ local[67] = $t0
+ $t0 = local[63]
+ $t1 = local[67]
+ $t0 = $t1
+ local[67] = $t1
+ local[63] = $t0
+if196_end:
+ $t0 = local[69]
+ $t0 = $s4
+ local[69] = $t0
+ $t0 = local[68]
+ $t1 = local[69]
+ $t0 = $t1
+ local[69] = $t1
+ local[68] = $t0
+ $t0 = local[66]
+ $t1 = local[68]
+ $t0 = Eq($t1 0 )
+ local[68] = $t1
+ local[66] = $t0
+ $t0 = local[88]
+ $t1 = local[66]
+ $t0 = $t1
+ local[66] = $t1
+ local[88] = $t0
+ $t0 = local[90]
+ $t1 = local[88]
+ $t0 = $t1
+ local[88] = $t1
+ local[90] = $t0
+ $t0 = local[89]
+ $t1 = local[90]
+ $t0 = $t1
+ local[90] = $t1
+ local[89] = $t0
+ $t0 = local[89]
+ if0 $t0 goto :if238_else
+ local[89] = $t0
+if238_body:
+ $t0 = local[84]
+ $t0 = $s2
+ local[84] = $t0
+ $t0 = local[82]
+ $t1 = local[84]
+ $t0 = $t1
+ local[84] = $t1
+ local[82] = $t0
+ $t0 = local[82]
+ $s3 = $t0
+ local[82] = $t0
+ $t0 = local[86]
+ $t0 = $s2
+ local[86] = $t0
+ $t0 = local[86]
+ $s2 = $t0
+ local[86] = $t0
+ $t0 = local[92]
+ $t0 = [$s2+0]
+ local[92] = $t0
+ $t0 = local[91]
+ $t1 = local[92]
$t0 = [$t1+32]
- local[54] = $t1
- local[53] = $t0
+ local[92] = $t1
+ local[91] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s1
- $t0 = local[53]
- $t1 = local[53]
+ $a0 = $s2
+ $t0 = local[91]
+ $t1 = local[91]
call $t1
- local[53] = $t1
- local[53] = $t0
+ local[91] = $t1
+ local[91] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[45]
+ $t0 = local[87]
$t0 = $v0
- local[45] = $t0
- $t0 = local[45]
- $s1 = $t0
- local[45] = $t0
- $s1 = $s1
- $t0 = local[55]
- $t0 = [$s1+0]
- local[55] = $t0
- $t0 = local[48]
- $t1 = local[55]
- $t0 = [$t1+24]
- local[55] = $t1
- local[48] = $t0
+ local[87] = $t0
+ $t0 = local[95]
+ $t1 = local[87]
+ $t0 = $t1
+ local[87] = $t1
+ local[95] = $t0
+ $t0 = local[95]
+ $s2 = $t0
+ local[95] = $t0
+ $t6 = $s2
+ $s2 = $t6
+ $t5 = [$s2+0]
+ $t4 = [$t5+24]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s1
- $t0 = local[48]
- $t1 = local[48]
- call $t1
- local[48] = $t1
- local[48] = $t0
+ $a0 = $s2
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[56]
+ $t0 = local[27]
$t0 = $v0
- local[56] = $t0
- $t0 = local[56]
- $s0 = $t0
- local[56] = $t0
- $s1 = $s1
- $t0 = local[51]
- $t0 = [$s1+0]
- local[51] = $t0
- $t0 = local[32]
- $t1 = local[51]
+ local[27] = $t0
+ $t0 = local[27]
+ $s5 = $t0
+ local[27] = $t0
+ $s0 = $s5
+ $t0 = local[17]
+ $t0 = $s2
+ local[17] = $t0
+ $t0 = local[17]
+ $s2 = $t0
+ local[17] = $t0
+ $t0 = local[18]
+ $t0 = [$s2+0]
+ local[18] = $t0
+ $t0 = local[19]
+ $t1 = local[18]
$t0 = [$t1+28]
- local[51] = $t1
- local[32] = $t0
+ local[18] = $t1
+ local[19] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s1
- $t0 = local[32]
- $t1 = local[32]
+ $a0 = $s2
+ $t0 = local[19]
+ $t1 = local[19]
call $t1
- local[32] = $t1
- local[32] = $t0
+ local[19] = $t1
+ local[19] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[47]
+ $t0 = local[16]
$t0 = $v0
- local[47] = $t0
- $t0 = local[47]
+ local[16] = $t0
+ $t0 = local[96]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[96] = $t0
+ $t0 = local[96]
$t7 = $t0
- local[47] = $t0
- $s2 = 1
- goto :if101_end
-if101_else:
- $s5 = 0
-if101_end:
- goto :while65_test
-while65_end:
+ local[96] = $t0
+ $t0 = local[93]
+ $t0 = 1
+ local[93] = $t0
+ $t0 = local[94]
+ $t1 = local[93]
+ $t0 = $t1
+ local[93] = $t1
+ local[94] = $t0
+ $t0 = local[94]
+ $s1 = $t0
+ local[94] = $t0
+ goto :if238_end
+if238_else:
+ $t0 = local[83]
+ $t0 = 0
+ local[83] = $t0
+ $t0 = local[85]
+ $t1 = local[83]
+ $t0 = $t1
+ local[83] = $t1
+ local[85] = $t0
+ $t0 = local[63]
+ $t1 = local[85]
+ $t0 = $t1
+ local[85] = $t1
+ local[63] = $t0
+if238_end:
+ goto :while178_test
+while178_end:
$t0 = local[14]
$s5 = $t0
local[14] = $t0
+ $t3 = $s5
+ $s5 = $t3
$v0 = $s5
$s0 = local[0]
$s1 = local[1]
@@ -900,7 +1215,7 @@ while65_end:
$s6 = local[6]
$s7 = local[7]
ret
-func List_Search [in 0, out 0, local 23]
+func List_Search [in 0, out 0, local 40]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -911,28 +1226,64 @@ func List_Search [in 0, out 0, local 23]
local[7] = $s7
$s6 = $a0
$s7 = $a1
+ $s5 = 0
+ $s4 = $s5
$t0 = local[14]
- $t0 = 0
+ $t0 = $s4
local[14] = $t0
$s4 = $s6
+ $s3 = $s4
+ $s4 = $s3
$s3 = [$s6+48]
+ $s2 = $s3
+ $s3 = $s2
$s2 = [$s6+40]
-while113_test:
- $s6 = Eq($s3 0 )
- $t0 = local[22]
+ $s6 = $s2
+ $s2 = $s6
+while276_test:
+ $s6 = $s3
+ $t0 = local[26]
$t0 = $s6
- local[22] = $t0
- $t0 = local[22]
- if0 $t0 goto :while113_end
- local[22] = $t0
-while113_body:
- $s7 = $s7
- $t4 = [$s7+0]
- $t0 = local[17]
- $t0 = [$t4+16]
- local[17] = $t0
+ local[26] = $t0
+ $t0 = local[33]
+ $t1 = local[26]
+ $t0 = Eq($t1 0 )
+ local[26] = $t1
+ local[33] = $t0
+ $t0 = local[24]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[24] = $t0
+ $t0 = local[27]
+ $t1 = local[24]
+ $t0 = $t1
+ local[24] = $t1
+ local[27] = $t0
+ $t0 = local[19]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ if0 $t0 goto :while276_end
+ local[19] = $t0
+while276_body:
+ $t0 = local[23]
+ $t0 = $s7
+ local[23] = $t0
+ $t0 = local[23]
+ $s7 = $t0
+ local[23] = $t0
+ $t0 = local[21]
+ $t0 = [$s7+0]
+ local[21] = $t0
+ $t0 = local[21]
+ $t4 = [$t0+16]
+ local[21] = $t0
+ $t6 = $s2
$t0 = local[15]
- $t0 = $s2
+ $t0 = $t6
local[15] = $t0
local[8] = $t3
local[9] = $t4
@@ -944,37 +1295,69 @@ while113_body:
$t0 = local[15]
$a1 = $t0
local[15] = $t0
- $t0 = local[17]
- $t1 = local[17]
- call $t1
- local[17] = $t1
- local[17] = $t0
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[21]
+ $t0 = local[17]
$t0 = $v0
- local[21] = $t0
- $t0 = local[21]
- $s0 = $t0
- local[21] = $t0
- if0 $s0 goto :if116_else
-if116_body:
- $t0 = local[14]
+ local[17] = $t0
+ $t0 = local[17]
+ $t3 = $t0
+ local[17] = $t0
+ $t0 = local[39]
+ $t0 = $t3
+ local[39] = $t0
+ $t0 = local[39]
+ if0 $t0 goto :if283_else
+ local[39] = $t0
+if283_body:
+ $t0 = local[38]
$t0 = 1
+ local[38] = $t0
+ $t0 = local[28]
+ $t1 = local[38]
+ $t0 = $t1
+ local[38] = $t1
+ local[28] = $t0
+ $t0 = local[14]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
local[14] = $t0
- goto :if116_end
-if116_else:
- $s1 = 0
-if116_end:
- $s4 = $s4
- $t7 = [$s4+0]
- $t0 = local[19]
- $t0 = [$t7+32]
- local[19] = $t0
+ goto :if283_end
+if283_else:
+ $t0 = local[34]
+ $t0 = 0
+ local[34] = $t0
+ $t0 = local[37]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
+ local[37] = $t0
+ $t0 = local[35]
+ $t1 = local[37]
+ $t0 = $t1
+ local[37] = $t1
+ local[35] = $t0
+if283_end:
+ $t0 = local[30]
+ $t0 = $s4
+ local[30] = $t0
+ $t0 = local[30]
+ $s4 = $t0
+ local[30] = $t0
+ $t0 = local[29]
+ $t0 = [$s4+0]
+ local[29] = $t0
+ $t0 = local[32]
+ $t1 = local[29]
+ $t0 = [$t1+32]
+ local[29] = $t1
+ local[32] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -982,26 +1365,34 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $t0 = local[19]
- $t1 = local[19]
+ $t0 = local[32]
+ $t1 = local[32]
call $t1
- local[19] = $t1
- local[19] = $t0
+ local[32] = $t1
+ local[32] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- $s4 = $t6
- $s4 = $s4
- $t0 = local[20]
- $t0 = [$s4+0]
- local[20] = $t0
- $t0 = local[20]
- $t3 = [$t0+24]
- local[20] = $t0
+ $t0 = local[36]
+ $t0 = $v0
+ local[36] = $t0
+ $t0 = local[31]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ $s4 = $t0
+ local[31] = $t0
+ $s0 = $s4
+ $s4 = $s0
+ $s1 = [$s4+0]
+ $t0 = local[18]
+ $t0 = [$s1+24]
+ local[18] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1009,26 +1400,36 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- call $t3
+ $t0 = local[18]
+ $t1 = local[18]
+ call $t1
+ local[18] = $t1
+ local[18] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[18]
+ $t0 = local[25]
$t0 = $v0
- local[18] = $t0
- $t0 = local[18]
- $s3 = $t0
- local[18] = $t0
- $s4 = $s4
+ local[25] = $t0
$t0 = local[16]
- $t0 = [$s4+0]
+ $t1 = local[25]
+ $t0 = $t1
+ local[25] = $t1
local[16] = $t0
$t0 = local[16]
- $s5 = [$t0+28]
+ $s3 = $t0
local[16] = $t0
+ $t0 = local[20]
+ $t0 = $s4
+ local[20] = $t0
+ $t0 = local[20]
+ $s4 = $t0
+ local[20] = $t0
+ $t5 = [$s4+0]
+ $t7 = [$t5+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1036,20 +1437,27 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- call $s5
+ call $t7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s2 = $t5
- goto :while113_test
-while113_end:
+ $t0 = local[22]
+ $t0 = $v0
+ local[22] = $t0
+ $t0 = local[22]
+ $s5 = $t0
+ local[22] = $t0
+ $s2 = $s5
+ goto :while276_test
+while276_end:
$t0 = local[14]
$s5 = $t0
local[14] = $t0
+ $t3 = $s5
+ $s5 = $t3
$v0 = $s5
$s0 = local[0]
$s1 = local[1]
@@ -1071,6 +1479,8 @@ func List_GetEnd [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+48]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -1092,6 +1502,8 @@ func List_GetElem [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+40]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -1113,6 +1525,8 @@ func List_GetNext [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+44]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -1123,7 +1537,7 @@ func List_GetNext [in 0, out 0, local 14]
$s6 = local[6]
$s7 = local[7]
ret
-func List_Print [in 0, out 0, local 19]
+func List_Print [in 0, out 0, local 31]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -1134,26 +1548,51 @@ func List_Print [in 0, out 0, local 19]
local[7] = $s7
$s7 = $a0
$s6 = $s7
+ $s5 = $s6
+ $s6 = $s5
$s5 = [$s7+48]
+ $s4 = $s5
+ $s5 = $s4
$s4 = [$s7+40]
-while134_test:
- $s7 = Eq($s5 0 )
- $t0 = local[16]
+ $s7 = $s4
+ $s4 = $s7
+while328_test:
+ $s7 = $s5
+ $t0 = local[20]
$t0 = $s7
- local[16] = $t0
- $t0 = local[16]
- if0 $t0 goto :while134_end
- local[16] = $t0
-while134_body:
- $s4 = $s4
+ local[20] = $t0
+ $t0 = local[28]
+ $t1 = local[20]
+ $t0 = Eq($t1 0 )
+ local[20] = $t1
+ local[28] = $t0
$t0 = local[18]
- $t0 = [$s4+0]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
local[18] = $t0
- $t0 = local[17]
+ $t0 = local[23]
$t1 = local[18]
- $t0 = [$t1+4]
+ $t0 = $t1
local[18] = $t1
- local[17] = $t0
+ local[23] = $t0
+ $t0 = local[21]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[21] = $t0
+ $t0 = local[21]
+ if0 $t0 goto :while328_end
+ local[21] = $t0
+while328_body:
+ $t3 = $s4
+ $s4 = $t3
+ $t0 = local[15]
+ $t0 = [$s4+0]
+ local[15] = $t0
+ $t0 = local[15]
+ $t6 = [$t0+4]
+ local[15] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1161,27 +1600,25 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $t0 = local[17]
- $t1 = local[17]
- call $t1
- local[17] = $t1
- local[17] = $t0
+ call $t6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[15]
+ $t0 = local[14]
$t0 = $v0
- local[15] = $t0
- $t0 = local[15]
+ local[14] = $t0
+ $t0 = local[14]
$t7 = $t0
- local[15] = $t0
- PrintIntS($t7 )
- $s6 = $s6
- $t6 = [$s6+0]
- $s2 = [$t6+32]
+ local[14] = $t0
+ $t4 = $t7
+ PrintIntS($t4 )
+ $s2 = $s6
+ $s6 = $s2
+ $s3 = [$s6+0]
+ $s0 = [$s3+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1189,7 +1626,7 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $s2
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1197,10 +1634,22 @@ while134_body:
$t7 = local[12]
$t8 = local[13]
$t5 = $v0
- $s6 = $t5
- $s6 = $s6
- $s0 = [$s6+0]
- $s1 = [$s0+24]
+ $s1 = $t5
+ $s6 = $s1
+ $t0 = local[29]
+ $t0 = $s6
+ local[29] = $t0
+ $t0 = local[29]
+ $s6 = $t0
+ local[29] = $t0
+ $t0 = local[16]
+ $t0 = [$s6+0]
+ local[16] = $t0
+ $t0 = local[25]
+ $t1 = local[16]
+ $t0 = [$t1+24]
+ local[16] = $t1
+ local[25] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1208,20 +1657,42 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $s1
+ $t0 = local[25]
+ $t1 = local[25]
+ call $t1
+ local[25] = $t1
+ local[25] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s5 = $s3
- $s6 = $s6
- $t4 = [$s6+0]
- $t0 = local[14]
- $t0 = [$t4+28]
- local[14] = $t0
+ $t0 = local[30]
+ $t0 = $v0
+ local[30] = $t0
+ $t0 = local[24]
+ $t1 = local[30]
+ $t0 = $t1
+ local[30] = $t1
+ local[24] = $t0
+ $t0 = local[24]
+ $s5 = $t0
+ local[24] = $t0
+ $t0 = local[26]
+ $t0 = $s6
+ local[26] = $t0
+ $t0 = local[26]
+ $s6 = $t0
+ local[26] = $t0
+ $t0 = local[19]
+ $t0 = [$s6+0]
+ local[19] = $t0
+ $t0 = local[17]
+ $t1 = local[19]
+ $t0 = [$t1+28]
+ local[19] = $t1
+ local[17] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1229,22 +1700,33 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $t0 = local[14]
- $t1 = local[14]
+ $t0 = local[17]
+ $t1 = local[17]
call $t1
- local[14] = $t1
- local[14] = $t0
+ local[17] = $t1
+ local[17] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- $s4 = $t3
- goto :while134_test
-while134_end:
+ $t0 = local[27]
+ $t0 = $v0
+ local[27] = $t0
+ $t0 = local[22]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
+ local[22] = $t0
+ $t0 = local[22]
+ $s4 = $t0
+ local[22] = $t0
+ goto :while328_test
+while328_end:
$t3 = 1
+ $t4 = $t3
+ $t3 = $t4
$v0 = $t3
$s0 = local[0]
$s1 = local[1]
@@ -1268,7 +1750,10 @@ func LL_Start [in 0, out 0, local 14]
$s6 = HeapAllocZ(52 )
[$s6+0] = :functable_List
$s7 = $s6
- $s7 = $s7
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
$s6 = [$s7+0]
$s5 = [$s6+0]
local[8] = $t3
@@ -1287,9 +1772,13 @@ func LL_Start [in 0, out 0, local 14]
$t8 = local[13]
$s6 = $v0
$s5 = $s6
- $s6 = $s7
- $s6 = $s6
- $s7 = [$s6+0]
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = $s7
+ $s7 = [$s5+0]
$s4 = [$s7+0]
local[8] = $t3
local[9] = $t4
@@ -1297,7 +1786,7 @@ func LL_Start [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -1306,35 +1795,44 @@ func LL_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s7 = $v0
- $s5 = $s7
- $s6 = $s6
- $s7 = [$s6+0]
- $s4 = [$s7+36]
+ $s4 = $s7
+ $s6 = $s4
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s7 = [$s4+36]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s4
+ $a0 = $s5
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s5 = $s7
+ $s4 = $v0
+ $s7 = $s4
+ $s6 = $s7
$s7 = HeapAllocZ(36 )
[$s7+0] = :functable_Element
$s4 = $s7
- $s4 = $s4
+ $s7 = $s4
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = $s7
$s7 = [$s4+0]
$s3 = [$s7+0]
$s7 = 25
- $s2 = 37000
- $s1 = 0
+ $s2 = $s7
+ $s7 = 37000
+ $s1 = $s7
+ $s7 = 0
+ $s0 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1342,9 +1840,9 @@ func LL_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $s7
- $a2 = $s2
- $a3 = $s1
+ $a1 = $s2
+ $a2 = $s1
+ $a3 = $s0
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -1352,39 +1850,44 @@ func LL_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
+ $s7 = $v0
+ $s0 = $s7
+ $s6 = $s0
+ $s0 = $s5
$s5 = $s0
- $s6 = $s6
- $s0 = [$s6+0]
- $s1 = [$s0+8]
+ $s0 = [$s5+0]
+ $s7 = [$s0+8]
$s0 = $s4
+ $s1 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s0
- call $s1
+ $a0 = $s5
+ $a1 = $s1
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s6 = $s2
- $s6 = $s6
- $s2 = [$s6+0]
- $s0 = [$s2+36]
+ $s0 = $v0
+ $s1 = $s0
+ $s5 = $s1
+ $s1 = $s5
+ $s5 = $s1
+ $s1 = [$s5+0]
+ $s0 = [$s1+36]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s5
call $s0
$t3 = local[8]
$t4 = local[9]
@@ -1392,19 +1895,28 @@ func LL_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
- $s2 = 10000000
- PrintIntS($s2 )
- $s2 = HeapAllocZ(36 )
- [$s2+0] = :functable_Element
- $s4 = $s2
- $s4 = $s4
- $s2 = [$s4+0]
- $s0 = [$s2+0]
- $s2 = 39
- $s1 = 42000
- $s7 = 1
+ $s1 = $v0
+ $s0 = $s1
+ $s6 = $s0
+ $s0 = 10000000
+ $s1 = $s0
+ $s0 = $s1
+ PrintIntS($s0 )
+ $s0 = HeapAllocZ(36 )
+ [$s0+0] = :functable_Element
+ $s1 = $s0
+ $s0 = $s1
+ $s4 = $s0
+ $s0 = $s4
+ $s4 = $s0
+ $s0 = [$s4+0]
+ $s1 = [$s0+0]
+ $s0 = 39
+ $s7 = $s0
+ $s0 = 42000
+ $s2 = $s0
+ $s0 = 1
+ $s3 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1412,70 +1924,86 @@ func LL_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $s2
- $a2 = $s1
- $a3 = $s7
- call $s0
+ $a1 = $s7
+ $a2 = $s2
+ $a3 = $s3
+ call $s1
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s5 = $s3
+ $s0 = $v0
+ $s3 = $s0
+ $s6 = $s3
$s3 = $s4
- $s6 = $s6
- $s7 = [$s6+0]
- $s1 = [$s7+8]
- $s7 = $s4
+ $s0 = $s3
+ $s3 = $s0
+ $s0 = $s5
+ $s5 = $s0
+ $s0 = [$s5+0]
+ $s2 = [$s0+8]
+ $s0 = $s4
+ $s7 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s5
$a1 = $s7
- call $s1
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s6 = $s2
- $s6 = $s6
- $s2 = [$s6+0]
- $s7 = [$s2+36]
+ $s0 = $v0
+ $s7 = $s0
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = $s7
+ $s7 = [$s5+0]
+ $s0 = [$s7+36]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s7
+ $a0 = $s5
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
- $s2 = 10000000
- PrintIntS($s2 )
- $s2 = HeapAllocZ(36 )
- [$s2+0] = :functable_Element
- $s4 = $s2
- $s4 = $s4
- $s2 = [$s4+0]
- $s7 = [$s2+0]
- $s2 = 22
- $s1 = 34000
+ $s7 = $v0
+ $s0 = $s7
+ $s6 = $s0
+ $s0 = 10000000
+ $s7 = $s0
+ $s0 = $s7
+ PrintIntS($s0 )
+ $s0 = HeapAllocZ(36 )
+ [$s0+0] = :functable_Element
+ $s7 = $s0
+ $s0 = $s7
+ $s4 = $s0
+ $s0 = $s4
+ $s4 = $s0
+ $s0 = [$s4+0]
+ $s7 = [$s0+0]
+ $s0 = 22
+ $s2 = $s0
+ $s0 = 34000
+ $s1 = $s0
$s0 = 0
+ $t7 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1485,7 +2013,7 @@ func LL_Start [in 0, out 0, local 14]
$a0 = $s4
$a1 = $s2
$a2 = $s1
- $a3 = $s0
+ $a3 = $t7
call $s7
$t3 = local[8]
$t4 = local[9]
@@ -1493,20 +2021,23 @@ func LL_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
+ $s0 = $v0
+ $t7 = $s0
+ $s6 = $t7
+ $t7 = $s5
$s5 = $t7
- $s6 = $s6
- $t7 = [$s6+0]
+ $t7 = [$s5+0]
$s0 = [$t7+8]
$t7 = $s4
+ $s1 = $t7
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $t7
+ $a0 = $s5
+ $a1 = $s1
call $s0
$t3 = local[8]
$t4 = local[9]
@@ -1514,10 +2045,12 @@ func LL_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s6 = $s1
- $s6 = $s6
- $s1 = [$s6+0]
+ $t7 = $v0
+ $s1 = $t7
+ $s5 = $s1
+ $s1 = $s5
+ $s5 = $s1
+ $s1 = [$s5+0]
$t7 = [$s1+36]
local[8] = $t3
local[9] = $t4
@@ -1525,7 +2058,7 @@ func LL_Start [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s5
call $t7
$t3 = local[8]
$t4 = local[9]
@@ -1534,26 +2067,33 @@ func LL_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s1 = $v0
- $s5 = $s1
- $s1 = HeapAllocZ(36 )
- [$s1+0] = :functable_Element
$t7 = $s1
- $t7 = $t7
- $s1 = [$t7+0]
- $s0 = [$s1+0]
- $s1 = 27
- $s2 = 34000
- $s7 = 0
+ $s6 = $t7
+ $t7 = HeapAllocZ(36 )
+ [$t7+0] = :functable_Element
+ $s1 = $t7
+ $t7 = $s1
+ $s1 = $t7
+ $t7 = $s1
+ $s1 = $t7
+ $t7 = [$s1+0]
+ $s0 = [$t7+0]
+ $t7 = 27
+ $s2 = $t7
+ $t7 = 34000
+ $s7 = $t7
+ $t7 = 0
+ $t6 = $t7
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $t7
- $a1 = $s1
- $a2 = $s2
- $a3 = $s7
+ $a0 = $s1
+ $a1 = $s2
+ $a2 = $s7
+ $a3 = $t6
call $s0
$t3 = local[8]
$t4 = local[9]
@@ -1561,63 +2101,78 @@ func LL_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
+ $t7 = $v0
+ $t6 = $t7
+ $s6 = $t6
+ $t6 = $s5
$s5 = $t6
- $s6 = $s6
- $t6 = [$s6+0]
- $s7 = [$t6+20]
+ $t6 = [$s5+0]
+ $t7 = [$t6+20]
$t6 = $s3
+ $s7 = $t6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $t6
- call $s7
+ $a0 = $s5
+ $a1 = $s7
+ call $t7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $t6 = $s2
+ $t6 = $v0
+ $s7 = $t6
+ $t6 = $s7
PrintIntS($t6 )
- $s6 = $s6
- $t6 = [$s6+0]
- $s2 = [$t6+20]
- $t6 = $t7
+ $t6 = $s5
+ $s5 = $t6
+ $t6 = [$s5+0]
+ $s7 = [$t6+20]
+ $t6 = $s1
+ $s1 = $t6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $t6
- call $s2
+ $a0 = $s5
+ $a1 = $s1
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
- $t6 = $t7
+ $t6 = $v0
+ $s1 = $t6
+ $t6 = $s1
PrintIntS($t6 )
$t6 = 10000000
+ $s1 = $t6
+ $t6 = $s1
PrintIntS($t6 )
$t6 = HeapAllocZ(36 )
[$t6+0] = :functable_Element
+ $s1 = $t6
+ $t6 = $s1
+ $s4 = $t6
+ $t6 = $s4
$s4 = $t6
- $s4 = $s4
$t6 = [$s4+0]
- $t7 = [$t6+0]
+ $s1 = [$t6+0]
$t6 = 28
- $s2 = 35000
- $s7 = 0
+ $s7 = $t6
+ $t6 = 35000
+ $t7 = $t6
+ $t6 = 0
+ $s2 = $t6
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1625,31 +2180,34 @@ func LL_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $t6
- $a2 = $s2
- $a3 = $s7
- call $t7
+ $a1 = $s7
+ $a2 = $t7
+ $a3 = $s2
+ call $s1
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s5 = $s1
- $s6 = $s6
- $s1 = [$s6+0]
- $s7 = [$s1+8]
- $s1 = $s4
+ $t6 = $v0
+ $s2 = $t6
+ $s6 = $s2
+ $s2 = $s5
+ $s5 = $s2
+ $s2 = [$s5+0]
+ $t6 = [$s2+8]
+ $s2 = $s4
+ $t7 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s1
- call $s7
+ $a0 = $s5
+ $a1 = $t7
+ call $t6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1657,51 +2215,60 @@ func LL_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s2 = $v0
- $s6 = $s2
- $s6 = $s6
- $s2 = [$s6+0]
- $s1 = [$s2+36]
+ $t7 = $s2
+ $s5 = $t7
+ $t7 = $s5
+ $s5 = $t7
+ $t7 = [$s5+0]
+ $s2 = [$t7+36]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s1
+ $a0 = $s5
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
+ $t7 = $v0
+ $s2 = $t7
+ $s6 = $s2
$s2 = 2220000
+ $t7 = $s2
+ $s2 = $t7
PrintIntS($s2 )
- $s6 = $s6
- $s2 = [$s6+0]
- $s1 = [$s2+16]
+ $s2 = $s5
+ $s5 = $s2
+ $s2 = [$s5+0]
+ $t7 = [$s2+16]
$s2 = $s3
+ $s3 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s2
- call $s1
+ $a0 = $s5
+ $a1 = $s3
+ call $t7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s6 = $s3
- $s6 = $s6
- $s3 = [$s6+0]
+ $s2 = $v0
+ $s3 = $s2
+ $s5 = $s3
+ $s3 = $s5
+ $s5 = $s3
+ $s3 = [$s5+0]
$s2 = [$s3+36]
local[8] = $t3
local[9] = $t4
@@ -1709,7 +2276,7 @@ func LL_Start [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s5
call $s2
$t3 = local[8]
$t4 = local[9]
@@ -1718,41 +2285,48 @@ func LL_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s3 = $v0
- $s5 = $s3
- $s3 = 33300000
- PrintIntS($s3 )
- $s6 = $s6
- $s3 = [$s6+0]
- $s2 = [$s3+16]
- $s3 = $s4
+ $s2 = $s3
+ $s6 = $s2
+ $s2 = 33300000
+ $s3 = $s2
+ $s2 = $s3
+ PrintIntS($s2 )
+ $s2 = $s5
+ $s5 = $s2
+ $s2 = [$s5+0]
+ $s3 = [$s2+16]
+ $s2 = $s4
+ $s4 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s3
- call $s2
+ $a0 = $s5
+ $a1 = $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s6 = $s4
- $s6 = $s6
- $s4 = [$s6+0]
- $s3 = [$s4+36]
+ $s2 = $v0
+ $s4 = $s2
+ $s5 = $s4
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s2 = [$s4+36]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- call $s3
+ $a0 = $s5
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1760,11 +2334,16 @@ func LL_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s5 = $s4
- $s4 = 44440000
- PrintIntS($s4 )
- $s4 = 0
- $v0 = $s4
+ $s2 = $s4
+ $s6 = $s2
+ $s2 = 44440000
+ $s6 = $s2
+ $s2 = $s6
+ PrintIntS($s2 )
+ $s2 = 0
+ $s6 = $s2
+ $s2 = $s6
+ $v0 = $s2
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/MoreThan4.s b/output/MoreThan4.s
new file mode 100644
index 0000000..7fe496f
--- /dev/null
+++ b/output/MoreThan4.s
@@ -0,0 +1,306 @@
+.data
+functable_MT4:
+ MT4_Start
+ MT4_Change
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 76
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_MT4
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 1
+ move $s4 $s6
+ li $s6 2
+ move $s3 $s6
+ li $s6 3
+ move $s2 $s6
+ li $s6 4
+ move $s1 $s6
+ li $s6 5
+ move $s0 $s6
+ li $s6 6
+ move $t7 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ move $a2 $s3
+ move $a3 $s2
+ sw $s1 -76($fp)
+ sw $s0 -72($fp)
+ sw $t7 -68($fp)
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $t7 $s6
+ move $s6 $t7
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 76
+ jr $ra
+MT4_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 76
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ lw $s4 0($fp)
+ lw $s1 4($fp)
+ lw $s2 8($fp)
+ move $s0 $s6
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s7
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s3
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s4
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s1
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s2
+ move $t7 $s0
+ move $s0 $t7
+ move $a0 $s0
+ jal _print
+ move $s0 $s5
+ lw $s0 0($s5)
+ move $t7 $s2
+ move $s2 $t7
+ move $t7 $s1
+ move $s1 $t7
+ move $t7 $s4
+ move $s4 $t7
+ move $t7 $s3
+ move $s3 $t7
+ move $t7 $s7
+ move $s7 $t7
+ move $t7 $s6
+ move $s6 $t7
+ lw $s0 0($s0)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s2
+ move $a2 $s1
+ move $a3 $s4
+ sw $s3 -76($fp)
+ sw $s7 -72($fp)
+ sw $s6 -68($fp)
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t7 $v0
+ move $s6 $t7
+ move $t7 $s6
+ move $s6 $t7
+ move $t7 $s6
+ move $s6 $t7
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 76
+ jr $ra
+MT4_Change:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ lw $s4 0($fp)
+ lw $s1 4($fp)
+ lw $s2 8($fp)
+ move $s0 $s6
+ move $s5 $s0
+ move $s0 $s5
+ move $a0 $s0
+ jal _print
+ move $s0 $s7
+ move $s7 $s0
+ move $s0 $s7
+ move $a0 $s0
+ jal _print
+ move $s0 $s3
+ move $s3 $s0
+ move $s0 $s3
+ move $a0 $s0
+ jal _print
+ move $s0 $s4
+ move $s4 $s0
+ move $s0 $s4
+ move $a0 $s0
+ jal _print
+ move $s0 $s1
+ move $s1 $s0
+ move $s0 $s1
+ move $a0 $s0
+ jal _print
+ move $s0 $s2
+ move $s2 $s0
+ move $s0 $s2
+ move $a0 $s0
+ jal _print
+ li $s0 0
+ move $s2 $s0
+ move $s0 $s2
+ move $v0 $s0
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/MoreThan4.vaporm b/output/MoreThan4.vaporm
index 7ce53e2..611fb31 100644
--- a/output/MoreThan4.vaporm
+++ b/output/MoreThan4.vaporm
@@ -13,27 +13,34 @@ func Main [in 0, out 3, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_MT4
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
- $s7 = 1
- $s4 = 2
- $s3 = 3
- $s2 = 4
- $s1 = 5
- $s0 = 6
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 1
+ $s4 = $s6
+ $s6 = 2
+ $s3 = $s6
+ $s6 = 3
+ $s2 = $s6
+ $s6 = 4
+ $s1 = $s6
+ $s6 = 5
+ $s0 = $s6
+ $s6 = 6
+ $t7 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s7
- $a2 = $s4
- $a3 = $s3
- out[0] = $s2
- out[1] = $s1
- out[2] = $s0
+ $a0 = $s7
+ $a1 = $s4
+ $a2 = $s3
+ $a3 = $s2
+ out[0] = $s1
+ out[1] = $s0
+ out[2] = $t7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -41,9 +48,10 @@ func Main [in 0, out 3, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
- $s0 = $t7
- PrintIntS($s0 )
+ $s6 = $v0
+ $t7 = $s6
+ $s6 = $t7
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -70,24 +78,43 @@ func MT4_Start [in 3, out 3, local 14]
$s1 = in[1]
$s2 = in[2]
$s0 = $s6
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
$s0 = $s7
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
$s0 = $s3
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
$s0 = $s4
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
$s0 = $s1
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
$s0 = $s2
+ $t7 = $s0
+ $s0 = $t7
PrintIntS($s0 )
+ $s0 = $s5
$s0 = [$s5+0]
$t7 = $s2
- $s2 = $s1
- $s1 = $s4
- $s4 = $s3
- $s3 = $s7
- $s7 = $s6
+ $s2 = $t7
+ $t7 = $s1
+ $s1 = $t7
+ $t7 = $s4
+ $s4 = $t7
+ $t7 = $s3
+ $s3 = $t7
+ $t7 = $s7
+ $s7 = $t7
+ $t7 = $s6
+ $s6 = $t7
$s0 = [$s0+4]
local[8] = $t3
local[9] = $t4
@@ -96,12 +123,12 @@ func MT4_Start [in 3, out 3, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $t7
- $a2 = $s2
- $a3 = $s1
- out[0] = $s4
- out[1] = $s3
- out[2] = $s7
+ $a1 = $s2
+ $a2 = $s1
+ $a3 = $s4
+ out[0] = $s3
+ out[1] = $s7
+ out[2] = $s6
call $s0
$t3 = local[8]
$t4 = local[9]
@@ -109,9 +136,12 @@ func MT4_Start [in 3, out 3, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $s7 = $s6
- $s6 = $s7
+ $t7 = $v0
+ $s6 = $t7
+ $t7 = $s6
+ $s6 = $t7
+ $t7 = $s6
+ $s6 = $t7
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -139,18 +169,32 @@ func MT4_Change [in 3, out 0, local 14]
$s1 = in[1]
$s2 = in[2]
$s0 = $s6
+ $s5 = $s0
+ $s0 = $s5
PrintIntS($s0 )
$s0 = $s7
+ $s7 = $s0
+ $s0 = $s7
PrintIntS($s0 )
$s0 = $s3
+ $s3 = $s0
+ $s0 = $s3
PrintIntS($s0 )
$s0 = $s4
+ $s4 = $s0
+ $s0 = $s4
PrintIntS($s0 )
$s0 = $s1
+ $s1 = $s0
+ $s0 = $s1
PrintIntS($s0 )
$s0 = $s2
+ $s2 = $s0
+ $s0 = $s2
PrintIntS($s0 )
$s0 = 0
+ $s2 = $s0
+ $s0 = $s2
$v0 = $s0
$s0 = local[0]
$s1 = local[1]
diff --git a/output/QuickSort.s b/output/QuickSort.s
new file mode 100644
index 0000000..8e0e216
--- /dev/null
+++ b/output/QuickSort.s
@@ -0,0 +1,1420 @@
+.data
+functable_QS:
+ QS_Start
+ QS_Sort
+ QS_Print
+ QS_Init
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 24
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_QS
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 10
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+QS_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s4 $s7
+ move $s7 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s7 $s4
+ move $s4 $s7
+ move $s7 $s6
+ lw $s7 0($s6)
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s4 $s7
+ li $s7 9999
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s7 0($s6)
+ li $s5 1
+ move $a0 $s7
+ move $t9 $s5
+ sub $s3 $a0 $t9
+ move $s5 $s3
+ move $s4 $s5
+ move $s5 $s6
+ lw $s5 0($s6)
+ li $s3 0
+ move $s7 $s3
+ move $s3 $s4
+ move $s2 $s3
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ move $a2 $s2
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s4 $s2
+ move $s2 $s6
+ lw $s2 0($s6)
+ lw $s2 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s4 $s2
+ li $s2 0
+ move $s4 $s2
+ move $s2 $s4
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+QS_Sort:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 384
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -68($fp)
+ sw $a1 -80($fp)
+ sw $a2 -72($fp)
+ li $s4 0
+ move $s3 $s4
+ lw $t0 -84($fp)
+ move $t0 $s3
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ move $s3 $t0
+ sw $t0 -80($fp)
+ lw $t0 -72($fp)
+ move $s2 $t0
+ sw $t0 -72($fp)
+ move $a0 $s3
+ move $t9 $s2
+ slt $s1 $a0 $t9
+ move $s2 $s1
+ move $s1 $s2
+ beqz $s1 if43_else
+if43_body:
+ lw $t0 -68($fp)
+ lw $s1 0($t0)
+ sw $t0 -68($fp)
+ move $s2 $s1
+ lw $t0 -72($fp)
+ move $s1 $t0
+ sw $t0 -72($fp)
+ move $a0 $s1
+ li $t9 4
+ mul $s3 $a0 $t9
+ move $a0 $s3
+ li $t9 4
+ add $s3 $a0 $t9
+ move $a0 $s2
+ move $t9 $s3
+ add $s3 $a0 $t9
+ lw $s2 0($s3)
+ move $s3 $s2
+ lw $t0 -292($fp)
+ move $t0 $s3
+ sw $t0 -292($fp)
+ lw $t0 -80($fp)
+ move $s3 $t0
+ sw $t0 -80($fp)
+ li $s1 1
+ move $a0 $s3
+ move $t9 $s1
+ sub $s0 $a0 $t9
+ move $s1 $s0
+ lw $t0 -76($fp)
+ move $t0 $s1
+ sw $t0 -76($fp)
+ lw $t0 -72($fp)
+ move $s1 $t0
+ sw $t0 -72($fp)
+ move $s3 $s1
+ lw $t0 -88($fp)
+ move $t0 $s3
+ sw $t0 -88($fp)
+ li $s3 1
+ move $t7 $s3
+ lw $t0 -288($fp)
+ move $t0 $t7
+ sw $t0 -288($fp)
+while62_test:
+ lw $t0 -284($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -284($fp)
+ lw $t0 -116($fp)
+ lw $t1 -284($fp)
+ move $t0 $t1
+ sw $t1 -284($fp)
+ sw $t0 -116($fp)
+ lw $t0 -244($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -244($fp)
+ lw $t0 -244($fp)
+ beqz $t0 while62_end
+ sw $t0 -244($fp)
+while62_body:
+ lw $t0 -100($fp)
+ li $t0 1
+ sw $t0 -100($fp)
+ lw $t0 -112($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -112($fp)
+ lw $t0 -104($fp)
+ lw $t1 -112($fp)
+ move $t0 $t1
+ sw $t1 -112($fp)
+ sw $t0 -104($fp)
+while68_test:
+ lw $t0 -108($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -108($fp)
+ lw $t0 -96($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -96($fp)
+ lw $t0 -92($fp)
+ lw $t1 -96($fp)
+ move $t0 $t1
+ sw $t1 -96($fp)
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ beqz $t0 while68_end
+ sw $t0 -92($fp)
+while68_body:
+ lw $t0 -76($fp)
+ move $s3 $t0
+ sw $t0 -76($fp)
+ li $t7 1
+ move $a0 $s3
+ move $t9 $t7
+ add $s2 $a0 $t9
+ move $s4 $s2
+ lw $t0 -76($fp)
+ move $t0 $s4
+ sw $t0 -76($fp)
+ lw $t0 -68($fp)
+ lw $t6 0($t0)
+ sw $t0 -68($fp)
+ move $t3 $t6
+ lw $t0 -76($fp)
+ move $s0 $t0
+ sw $t0 -76($fp)
+ move $a0 $s0
+ li $t9 4
+ mul $t5 $a0 $t9
+ move $a0 $t5
+ li $t9 4
+ add $t5 $a0 $t9
+ move $a0 $t3
+ move $t9 $t5
+ add $t5 $a0 $t9
+ lw $t4 0($t5)
+ move $s6 $t4
+ lw $t0 -296($fp)
+ move $t0 $s6
+ sw $t0 -296($fp)
+ lw $t0 -304($fp)
+ lw $t1 -296($fp)
+ move $t0 $t1
+ sw $t1 -296($fp)
+ sw $t0 -304($fp)
+ lw $t0 -312($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -312($fp)
+ lw $t0 -304($fp)
+ lw $t1 -312($fp)
+ move $a0 $t0
+ move $t9 $t1
+ slt $s7 $a0 $t9
+ sw $t1 -312($fp)
+ sw $t0 -304($fp)
+ lw $t0 -308($fp)
+ move $t0 $s7
+ sw $t0 -308($fp)
+ lw $t0 -332($fp)
+ lw $t1 -308($fp)
+ move $t0 $t1
+ sw $t1 -308($fp)
+ sw $t0 -332($fp)
+ lw $t0 -328($fp)
+ lw $t1 -332($fp)
+ move $t0 $t1
+ sw $t1 -332($fp)
+ sw $t0 -328($fp)
+ lw $t0 -328($fp)
+ move $a0 $t0
+ li $t9 0
+NULL $s5 $a0 $t9
+ sw $t0 -328($fp)
+ lw $t0 -340($fp)
+ move $t0 $s5
+ sw $t0 -340($fp)
+ lw $t0 -336($fp)
+ lw $t1 -340($fp)
+ move $t0 $t1
+ sw $t1 -340($fp)
+ sw $t0 -336($fp)
+ lw $t0 -320($fp)
+ lw $t1 -336($fp)
+ move $t0 $t1
+ sw $t1 -336($fp)
+ sw $t0 -320($fp)
+ lw $t0 -320($fp)
+ beqz $t0 if82_else
+ sw $t0 -320($fp)
+if82_body:
+ lw $t0 -316($fp)
+ li $t0 0
+ sw $t0 -316($fp)
+ lw $t0 -324($fp)
+ lw $t1 -316($fp)
+ move $t0 $t1
+ sw $t1 -316($fp)
+ sw $t0 -324($fp)
+ lw $t0 -104($fp)
+ lw $t1 -324($fp)
+ move $t0 $t1
+ sw $t1 -324($fp)
+ sw $t0 -104($fp)
+ j if82_end
+if82_else:
+ lw $t0 -300($fp)
+ li $t0 1
+ sw $t0 -300($fp)
+ lw $t0 -300($fp)
+ move $s1 $t0
+ sw $t0 -300($fp)
+ lw $t0 -104($fp)
+ move $t0 $s1
+ sw $t0 -104($fp)
+if82_end:
+ j while68_test
+while68_end:
+ lw $t0 -136($fp)
+ li $t0 1
+ sw $t0 -136($fp)
+ lw $t0 -128($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -128($fp)
+ lw $t0 -104($fp)
+ lw $t1 -128($fp)
+ move $t0 $t1
+ sw $t1 -128($fp)
+ sw $t0 -104($fp)
+while98_test:
+ lw $t0 -148($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -148($fp)
+ lw $t0 -140($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -140($fp)
+ lw $t0 -160($fp)
+ lw $t1 -140($fp)
+ move $t0 $t1
+ sw $t1 -140($fp)
+ sw $t0 -160($fp)
+ lw $t0 -160($fp)
+ beqz $t0 while98_end
+ sw $t0 -160($fp)
+while98_body:
+ lw $t0 -376($fp)
+ lw $t1 -88($fp)
+ move $t0 $t1
+ sw $t1 -88($fp)
+ sw $t0 -376($fp)
+ lw $t0 -372($fp)
+ li $t0 1
+ sw $t0 -372($fp)
+ lw $t0 -380($fp)
+ lw $t1 -376($fp)
+ lw $t2 -372($fp)
+ move $a0 $t1
+ move $t9 $t2
+ sub $t0 $a0 $t9
+ sw $t2 -372($fp)
+ sw $t1 -376($fp)
+ sw $t0 -380($fp)
+ lw $t0 -348($fp)
+ lw $t1 -380($fp)
+ move $t0 $t1
+ sw $t1 -380($fp)
+ sw $t0 -348($fp)
+ lw $t0 -88($fp)
+ lw $t1 -348($fp)
+ move $t0 $t1
+ sw $t1 -348($fp)
+ sw $t0 -88($fp)
+ lw $t0 -344($fp)
+ lw $t1 -68($fp)
+ lw $t0 0($t1)
+ sw $t1 -68($fp)
+ sw $t0 -344($fp)
+ lw $t0 -344($fp)
+ move $s0 $t0
+ sw $t0 -344($fp)
+ lw $t0 -360($fp)
+ lw $t1 -88($fp)
+ move $t0 $t1
+ sw $t1 -88($fp)
+ sw $t0 -360($fp)
+ lw $t0 -360($fp)
+ move $a0 $t0
+ li $t9 4
+ mul $s4 $a0 $t9
+ sw $t0 -360($fp)
+ move $a0 $s4
+ li $t9 4
+ add $s4 $a0 $t9
+ move $a0 $s0
+ move $t9 $s4
+ add $s4 $a0 $t9
+ lw $s6 0($s4)
+ lw $t0 -356($fp)
+ move $t0 $s6
+ sw $t0 -356($fp)
+ lw $t0 -296($fp)
+ lw $t1 -356($fp)
+ move $t0 $t1
+ sw $t1 -356($fp)
+ sw $t0 -296($fp)
+ lw $t0 -352($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -352($fp)
+ lw $t0 -296($fp)
+ move $t5 $t0
+ sw $t0 -296($fp)
+ lw $t0 -364($fp)
+ lw $t1 -352($fp)
+ move $a0 $t1
+ move $t9 $t5
+ slt $t0 $a0 $t9
+ sw $t1 -352($fp)
+ sw $t0 -364($fp)
+ lw $t0 -364($fp)
+ move $t6 $t0
+ sw $t0 -364($fp)
+ move $s2 $t6
+ move $s1 $s2
+ lw $t0 -368($fp)
+ move $a0 $s1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t0 -368($fp)
+ lw $t0 -368($fp)
+ move $t7 $t0
+ sw $t0 -368($fp)
+ move $s3 $t7
+ move $t3 $s3
+ beqz $t3 if112_else
+if112_body:
+ li $t4 0
+ move $s7 $t4
+ lw $t0 -104($fp)
+ move $t0 $s7
+ sw $t0 -104($fp)
+ j if112_end
+if112_else:
+ li $s5 1
+ lw $t0 -384($fp)
+ move $t0 $s5
+ sw $t0 -384($fp)
+ lw $t0 -104($fp)
+ lw $t1 -384($fp)
+ move $t0 $t1
+ sw $t1 -384($fp)
+ sw $t0 -104($fp)
+if112_end:
+ j while98_test
+while98_end:
+ lw $t0 -176($fp)
+ lw $t1 -68($fp)
+ lw $t0 0($t1)
+ sw $t1 -68($fp)
+ sw $t0 -176($fp)
+ lw $t0 -208($fp)
+ lw $t1 -176($fp)
+ move $t0 $t1
+ sw $t1 -176($fp)
+ sw $t0 -208($fp)
+ lw $t0 -192($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -192($fp)
+ lw $t0 -168($fp)
+ lw $t1 -192($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -192($fp)
+ sw $t0 -168($fp)
+ lw $t0 -168($fp)
+ lw $t1 -168($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -168($fp)
+ sw $t0 -168($fp)
+ lw $t0 -168($fp)
+ lw $t1 -208($fp)
+ lw $t2 -168($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -168($fp)
+ sw $t1 -208($fp)
+ sw $t0 -168($fp)
+ lw $t0 -216($fp)
+ lw $t1 -168($fp)
+ lw $t0 0($t1)
+ sw $t1 -168($fp)
+ sw $t0 -216($fp)
+ lw $t0 -184($fp)
+ lw $t1 -216($fp)
+ move $t0 $t1
+ sw $t1 -216($fp)
+ sw $t0 -184($fp)
+ lw $t0 -84($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -84($fp)
+ lw $t0 -224($fp)
+ lw $t1 -68($fp)
+ lw $t0 0($t1)
+ sw $t1 -68($fp)
+ sw $t0 -224($fp)
+ lw $t0 -236($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -236($fp)
+ lw $t0 -248($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -248($fp)
+ lw $t0 -220($fp)
+ lw $t1 -248($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -248($fp)
+ sw $t0 -220($fp)
+ lw $t0 -220($fp)
+ lw $t1 -220($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -220($fp)
+ sw $t0 -220($fp)
+ lw $t0 -220($fp)
+ lw $t1 -224($fp)
+ lw $t2 -220($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -220($fp)
+ sw $t1 -224($fp)
+ sw $t0 -220($fp)
+ lw $t0 -272($fp)
+ lw $t1 -68($fp)
+ lw $t0 0($t1)
+ sw $t1 -68($fp)
+ sw $t0 -272($fp)
+ lw $t0 -276($fp)
+ lw $t1 -272($fp)
+ move $t0 $t1
+ sw $t1 -272($fp)
+ sw $t0 -276($fp)
+ lw $t0 -264($fp)
+ lw $t1 -88($fp)
+ move $t0 $t1
+ sw $t1 -88($fp)
+ sw $t0 -264($fp)
+ lw $t0 -268($fp)
+ lw $t1 -264($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -264($fp)
+ sw $t0 -268($fp)
+ lw $t0 -268($fp)
+ lw $t1 -268($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -268($fp)
+ sw $t0 -268($fp)
+ lw $t0 -268($fp)
+ lw $t1 -276($fp)
+ lw $t2 -268($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -268($fp)
+ sw $t1 -276($fp)
+ sw $t0 -268($fp)
+ lw $t0 -280($fp)
+ lw $t1 -268($fp)
+ lw $t0 0($t1)
+ sw $t1 -268($fp)
+ sw $t0 -280($fp)
+ lw $t0 -260($fp)
+ lw $t1 -280($fp)
+ move $t0 $t1
+ sw $t1 -280($fp)
+ sw $t0 -260($fp)
+ lw $t0 -220($fp)
+ lw $t1 -260($fp)
+ sw $t1 0($t0)
+ sw $t1 -260($fp)
+ sw $t0 -220($fp)
+ lw $t0 -256($fp)
+ lw $t1 -68($fp)
+ lw $t0 0($t1)
+ sw $t1 -68($fp)
+ sw $t0 -256($fp)
+ lw $t0 -240($fp)
+ lw $t1 -88($fp)
+ move $t0 $t1
+ sw $t1 -88($fp)
+ sw $t0 -240($fp)
+ lw $t0 -228($fp)
+ lw $t1 -240($fp)
+ move $t0 $t1
+ sw $t1 -240($fp)
+ sw $t0 -228($fp)
+ lw $t0 -252($fp)
+ lw $t1 -228($fp)
+ move $a0 $t1
+ li $t9 4
+ mul $t0 $a0 $t9
+ sw $t1 -228($fp)
+ sw $t0 -252($fp)
+ lw $t0 -252($fp)
+ lw $t1 -252($fp)
+ move $a0 $t1
+ li $t9 4
+ add $t0 $a0 $t9
+ sw $t1 -252($fp)
+ sw $t0 -252($fp)
+ lw $t0 -252($fp)
+ lw $t1 -256($fp)
+ lw $t2 -252($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -252($fp)
+ sw $t1 -256($fp)
+ sw $t0 -252($fp)
+ lw $t0 -232($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -232($fp)
+ lw $t0 -164($fp)
+ lw $t1 -232($fp)
+ move $t0 $t1
+ sw $t1 -232($fp)
+ sw $t0 -164($fp)
+ lw $t0 -252($fp)
+ lw $t1 -164($fp)
+ sw $t1 0($t0)
+ sw $t1 -164($fp)
+ sw $t0 -252($fp)
+ lw $t0 -180($fp)
+ lw $t1 -88($fp)
+ move $t0 $t1
+ sw $t1 -88($fp)
+ sw $t0 -180($fp)
+ lw $t0 -196($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -196($fp)
+ lw $t0 -200($fp)
+ li $t0 1
+ sw $t0 -200($fp)
+ lw $t0 -188($fp)
+ lw $t1 -196($fp)
+ lw $t2 -200($fp)
+ move $a0 $t1
+ move $t9 $t2
+ add $t0 $a0 $t9
+ sw $t2 -200($fp)
+ sw $t1 -196($fp)
+ sw $t0 -188($fp)
+ lw $t0 -204($fp)
+ lw $t1 -188($fp)
+ move $t0 $t1
+ sw $t1 -188($fp)
+ sw $t0 -204($fp)
+ lw $t0 -212($fp)
+ lw $t1 -204($fp)
+ move $t0 $t1
+ sw $t1 -204($fp)
+ sw $t0 -212($fp)
+ lw $t0 -172($fp)
+ lw $t1 -180($fp)
+ lw $t2 -212($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -212($fp)
+ sw $t1 -180($fp)
+ sw $t0 -172($fp)
+ lw $t0 -144($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -144($fp)
+ lw $t0 -152($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -152($fp)
+ lw $t0 -152($fp)
+ beqz $t0 if148_else
+ sw $t0 -152($fp)
+if148_body:
+ lw $t0 -156($fp)
+ li $t0 0
+ sw $t0 -156($fp)
+ lw $t0 -120($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -120($fp)
+ lw $t0 -288($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -288($fp)
+ j if148_end
+if148_else:
+ lw $t0 -124($fp)
+ li $t0 1
+ sw $t0 -124($fp)
+ lw $t0 -132($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -132($fp)
+ lw $t0 -288($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -288($fp)
+if148_end:
+ j while62_test
+while62_end:
+ lw $t0 -68($fp)
+ lw $s4 0($t0)
+ sw $t0 -68($fp)
+ lw $t0 -88($fp)
+ move $s6 $t0
+ sw $t0 -88($fp)
+ move $s0 $s6
+ move $a0 $s0
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ lw $t0 -68($fp)
+ lw $s4 0($t0)
+ sw $t0 -68($fp)
+ move $s0 $s4
+ lw $t0 -76($fp)
+ move $s4 $t0
+ sw $t0 -76($fp)
+ move $a0 $s4
+ li $t9 4
+ mul $s7 $a0 $t9
+ move $a0 $s7
+ li $t9 4
+ add $s7 $a0 $t9
+ move $a0 $s0
+ move $t9 $s7
+ add $s7 $a0 $t9
+ lw $s0 0($s7)
+ move $s7 $s0
+ sw $s7 0($s6)
+ lw $t0 -68($fp)
+ lw $s7 0($t0)
+ sw $t0 -68($fp)
+ lw $t0 -76($fp)
+ move $s6 $t0
+ sw $t0 -76($fp)
+ move $s0 $s6
+ move $a0 $s0
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ lw $t0 -68($fp)
+ lw $s7 0($t0)
+ sw $t0 -68($fp)
+ move $s0 $s7
+ lw $t0 -72($fp)
+ move $s7 $t0
+ sw $t0 -72($fp)
+ move $a0 $s7
+ li $t9 4
+ mul $s4 $a0 $t9
+ move $a0 $s4
+ li $t9 4
+ add $s4 $a0 $t9
+ move $a0 $s0
+ move $t9 $s4
+ add $s4 $a0 $t9
+ lw $s0 0($s4)
+ move $s4 $s0
+ sw $s4 0($s6)
+ lw $t0 -68($fp)
+ lw $s4 0($t0)
+ sw $t0 -68($fp)
+ lw $t0 -72($fp)
+ move $s6 $t0
+ sw $t0 -72($fp)
+ move $s0 $s6
+ move $a0 $s0
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ lw $t0 -84($fp)
+ move $s4 $t0
+ sw $t0 -84($fp)
+ move $s0 $s4
+ sw $s0 0($s6)
+ lw $t0 -68($fp)
+ move $s0 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s0 0($t0)
+ sw $t0 -68($fp)
+ lw $t0 -80($fp)
+ move $s6 $t0
+ sw $t0 -80($fp)
+ move $s4 $s6
+ lw $t0 -76($fp)
+ move $s6 $t0
+ sw $t0 -76($fp)
+ li $s7 1
+ move $a0 $s6
+ move $t9 $s7
+ sub $s5 $a0 $t9
+ move $s7 $s5
+ lw $s0 0($s0)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s4
+ move $a2 $s7
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s7 $s5
+ move $s5 $s7
+ lw $t0 -68($fp)
+ move $s7 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s7 0($t0)
+ sw $t0 -68($fp)
+ lw $t0 -76($fp)
+ move $s4 $t0
+ sw $t0 -76($fp)
+ li $s0 1
+ move $a0 $s4
+ move $t9 $s0
+ add $s6 $a0 $t9
+ move $s0 $s6
+ lw $t0 -72($fp)
+ move $s6 $t0
+ sw $t0 -72($fp)
+ move $s4 $s6
+ lw $s7 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s0
+ move $a2 $s4
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s5 $s4
+ j if43_end
+if43_else:
+ li $s4 0
+ move $s6 $s4
+ move $s5 $s6
+if43_end:
+ li $s6 0
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 384
+ jr $ra
+QS_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 92
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s5 $s7
+ move $s7 $s5
+while214_test:
+ move $s5 $s7
+ lw $t0 -76($fp)
+ lw $t0 0($s6)
+ sw $t0 -76($fp)
+ lw $t0 -84($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ lw $t0 -72($fp)
+ lw $t1 -80($fp)
+ move $a0 $s5
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -80($fp)
+ sw $t0 -72($fp)
+ lw $t0 -92($fp)
+ lw $t1 -72($fp)
+ move $t0 $t1
+ sw $t1 -72($fp)
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ beqz $t0 while214_end
+ sw $t0 -88($fp)
+while214_body:
+ lw $t6 0($s6)
+ move $t5 $t6
+ move $s4 $s7
+ move $a0 $s4
+ li $t9 4
+ mul $s3 $a0 $t9
+ move $a0 $s3
+ li $t9 4
+ add $s3 $a0 $t9
+ move $a0 $t5
+ move $t9 $s3
+ add $s3 $a0 $t9
+ lw $s0 0($s3)
+ move $s1 $s0
+ move $s2 $s1
+ move $a0 $s2
+ jal _print
+ move $t4 $s7
+ lw $t0 -68($fp)
+ li $t0 1
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $a0 $t4
+ move $t9 $t0
+ add $t3 $a0 $t9
+ sw $t0 -68($fp)
+ move $t7 $t3
+ move $s7 $t7
+ j while214_test
+while214_end:
+ li $t3 0
+ move $t4 $t3
+ move $t3 $t4
+ move $v0 $t3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 92
+ jr $ra
+QS_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s4 $s7
+ sw $s4 0($s5)
+ move $s4 $s6
+ move $s6 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s4 $s6
+ sw $s4 0($s5)
+ lw $s4 0($s5)
+ li $s6 0
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 20
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 1
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 7
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 2
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 12
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 3
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 18
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 4
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 2
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 5
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 11
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 6
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 6
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s6 7
+ move $s4 $s6
+ move $a0 $s4
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s7
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s7 9
+ move $s4 $s7
+ sw $s4 0($s6)
+ lw $s4 0($s5)
+ li $s6 8
+ move $s7 $s6
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+ add $s6 $a0 $t9
+ li $s4 19
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s5)
+ li $s5 9
+ move $s6 $s5
+ move $a0 $s6
+ li $t9 4
+ mul $s5 $a0 $t9
+ move $a0 $s5
+ li $t9 4
+ add $s5 $a0 $t9
+ move $a0 $s7
+ move $t9 $s5
+ add $s5 $a0 $t9
+ li $s7 5
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 0
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/QuickSort.vaporm b/output/QuickSort.vaporm
index 5c53340..99f5af1 100644
--- a/output/QuickSort.vaporm
+++ b/output/QuickSort.vaporm
@@ -15,17 +15,19 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(24 )
[$s7+0] = :functable_QS
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
- $s7 = 10
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 10
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s7
+ $a0 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -33,9 +35,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s7 = $s4
- PrintIntS($s7 )
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -56,8 +59,10 @@ func QS_Start [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
+ $s5 = $s6
$s5 = [$s6+0]
$s4 = $s7
+ $s7 = $s4
$s5 = [$s5+12]
local[8] = $t3
local[9] = $t4
@@ -66,7 +71,7 @@ func QS_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s4
+ $a1 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -74,8 +79,10 @@ func QS_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
+ $s4 = $v0
+ $s7 = $s4
$s4 = $s7
+ $s7 = $s6
$s7 = [$s6+0]
$s7 = [$s7+8]
local[8] = $t3
@@ -93,17 +100,24 @@ func QS_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
+ $s7 = $s5
+ $s4 = $s7
+ $s7 = 9999
+ $s5 = $s7
+ $s7 = $s5
+ PrintIntS($s7 )
+ $s7 = [$s6+20]
+ $s5 = 1
+ $s3 = Sub($s7 $s5 )
+ $s5 = $s3
$s4 = $s5
- $s5 = 9999
- PrintIntS($s5 )
- $s5 = [$s6+20]
- $s7 = 1
- $s3 = Sub($s5 $s7 )
- $s4 = $s3
- $s3 = [$s6+0]
- $s7 = 0
- $s5 = $s4
- $s3 = [$s3+4]
+ $s5 = $s6
+ $s5 = [$s6+0]
+ $s3 = 0
+ $s7 = $s3
+ $s3 = $s4
+ $s2 = $s3
+ $s5 = [$s5+4]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -112,16 +126,18 @@ func QS_Start [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s6
$a1 = $s7
- $a2 = $s5
- call $s3
+ $a2 = $s2
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s3 = $v0
+ $s2 = $s3
$s4 = $s2
+ $s2 = $s6
$s2 = [$s6+0]
$s2 = [$s2+8]
local[8] = $t3
@@ -138,10 +154,13 @@ func QS_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s4 = $s5
- $s5 = 0
- $v0 = $s5
+ $s3 = $v0
+ $s2 = $s3
+ $s4 = $s2
+ $s2 = 0
+ $s4 = $s2
+ $s2 = $s4
+ $v0 = $s2
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -151,7 +170,7 @@ func QS_Start [in 0, out 0, local 14]
$s6 = local[6]
$s7 = local[7]
ret
-func QS_Sort [in 0, out 0, local 42]
+func QS_Sort [in 0, out 0, local 94]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -163,8 +182,10 @@ func QS_Sort [in 0, out 0, local 42]
local[14] = $a0
local[17] = $a1
local[15] = $a2
+ $s4 = 0
+ $s3 = $s4
$t0 = local[18]
- $t0 = 0
+ $t0 = $s3
local[18] = $t0
$t0 = local[17]
$s3 = $t0
@@ -174,366 +195,661 @@ func QS_Sort [in 0, out 0, local 42]
local[15] = $t0
$s1 = LtS($s3 $s2 )
$s2 = $s1
- if0 $s2 goto :if22_else
-if22_body:
+ $s1 = $s2
+ if0 $s1 goto :if43_else
+if43_body:
$t0 = local[14]
- $s2 = [$t0+16]
+ $s1 = [$t0+16]
local[14] = $t0
+ $s2 = $s1
$t0 = local[15]
- $s1 = MulS($t0 4 )
+ $s1 = $t0
local[15] = $t0
- $s1 = Add($s1 4 )
- $s1 = Add($s2 $s1 )
- $s2 = [$s1+0]
- $s1 = $s2
+ $s3 = MulS($s1 4 )
+ $s3 = Add($s3 4 )
+ $s3 = Add($s2 $s3 )
+ $s2 = [$s3+0]
+ $s3 = $s2
+ $t0 = local[70]
+ $t0 = $s3
+ local[70] = $t0
$t0 = local[17]
- $s2 = $t0
+ $s3 = $t0
local[17] = $t0
- $s3 = 1
- $s0 = Sub($s2 $s3 )
+ $s1 = 1
+ $s0 = Sub($s3 $s1 )
+ $s1 = $s0
$t0 = local[16]
- $t0 = $s0
+ $t0 = $s1
local[16] = $t0
+ $t0 = local[15]
+ $s1 = $t0
+ local[15] = $t0
+ $s3 = $s1
$t0 = local[19]
- $t1 = local[15]
- $t0 = $t1
- local[15] = $t1
+ $t0 = $s3
local[19] = $t0
- $t0 = local[41]
- $t0 = 1
- local[41] = $t0
-while32_test:
- $t0 = local[40]
- $t1 = local[41]
+ $s3 = 1
+ $t7 = $s3
+ $t0 = local[69]
+ $t0 = $t7
+ local[69] = $t0
+while62_test:
+ $t0 = local[68]
+ $t1 = local[69]
$t0 = $t1
- local[41] = $t1
- local[40] = $t0
- $t0 = local[40]
- if0 $t0 goto :while32_end
- local[40] = $t0
-while32_body:
- $t0 = local[32]
+ local[69] = $t1
+ local[68] = $t0
+ $t0 = local[26]
+ $t1 = local[68]
+ $t0 = $t1
+ local[68] = $t1
+ local[26] = $t0
+ $t0 = local[58]
+ $t1 = local[26]
+ $t0 = $t1
+ local[26] = $t1
+ local[58] = $t0
+ $t0 = local[58]
+ if0 $t0 goto :while62_end
+ local[58] = $t0
+while62_body:
+ $t0 = local[22]
$t0 = 1
- local[32] = $t0
-while34_test:
- $t0 = local[31]
- $t1 = local[32]
+ local[22] = $t0
+ $t0 = local[25]
+ $t1 = local[22]
$t0 = $t1
- local[32] = $t1
- local[31] = $t0
- $t0 = local[31]
- if0 $t0 goto :while34_end
- local[31] = $t0
-while34_body:
+ local[22] = $t1
+ local[25] = $t0
+ $t0 = local[23]
+ $t1 = local[25]
+ $t0 = $t1
+ local[25] = $t1
+ local[23] = $t0
+while68_test:
+ $t0 = local[24]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[24] = $t0
+ $t0 = local[21]
+ $t1 = local[24]
+ $t0 = $t1
+ local[24] = $t1
+ local[21] = $t0
+ $t0 = local[20]
+ $t1 = local[21]
+ $t0 = $t1
+ local[21] = $t1
+ local[20] = $t0
+ $t0 = local[20]
+ if0 $t0 goto :while68_end
+ local[20] = $t0
+while68_body:
$t0 = local[16]
- $s7 = $t0
+ $s3 = $t0
local[16] = $t0
- $t4 = 1
- $s5 = Add($s7 $t4 )
+ $t7 = 1
+ $s2 = Add($s3 $t7 )
+ $s4 = $s2
$t0 = local[16]
- $t0 = $s5
+ $t0 = $s4
local[16] = $t0
$t0 = local[14]
- $s0 = [$t0+16]
+ $t6 = [$t0+16]
local[14] = $t0
+ $t3 = $t6
$t0 = local[16]
- $s3 = MulS($t0 4 )
+ $s0 = $t0
local[16] = $t0
- $s3 = Add($s3 4 )
- $s3 = Add($s0 $s3 )
- $s4 = [$s3+0]
- $t3 = $s4
- $t7 = $t3
- $t5 = $s1
- $s2 = LtS($t7 $t5 )
- $s6 = Eq($s2 0 )
- $t6 = $s6
- if0 $t6 goto :if42_else
-if42_body:
- $t0 = local[32]
+ $t5 = MulS($s0 4 )
+ $t5 = Add($t5 4 )
+ $t5 = Add($t3 $t5 )
+ $t4 = [$t5+0]
+ $s6 = $t4
+ $t0 = local[71]
+ $t0 = $s6
+ local[71] = $t0
+ $t0 = local[73]
+ $t1 = local[71]
+ $t0 = $t1
+ local[71] = $t1
+ local[73] = $t0
+ $t0 = local[75]
+ $t1 = local[70]
+ $t0 = $t1
+ local[70] = $t1
+ local[75] = $t0
+ $t0 = local[73]
+ $t1 = local[75]
+ $s7 = LtS($t0 $t1 )
+ local[75] = $t1
+ local[73] = $t0
+ $t0 = local[74]
+ $t0 = $s7
+ local[74] = $t0
+ $t0 = local[80]
+ $t1 = local[74]
+ $t0 = $t1
+ local[74] = $t1
+ local[80] = $t0
+ $t0 = local[79]
+ $t1 = local[80]
+ $t0 = $t1
+ local[80] = $t1
+ local[79] = $t0
+ $t0 = local[79]
+ $s5 = Eq($t0 0 )
+ local[79] = $t0
+ $t0 = local[82]
+ $t0 = $s5
+ local[82] = $t0
+ $t0 = local[81]
+ $t1 = local[82]
+ $t0 = $t1
+ local[82] = $t1
+ local[81] = $t0
+ $t0 = local[77]
+ $t1 = local[81]
+ $t0 = $t1
+ local[81] = $t1
+ local[77] = $t0
+ $t0 = local[77]
+ if0 $t0 goto :if82_else
+ local[77] = $t0
+if82_body:
+ $t0 = local[76]
$t0 = 0
- local[32] = $t0
- goto :if42_end
-if42_else:
- $t0 = local[32]
+ local[76] = $t0
+ $t0 = local[78]
+ $t1 = local[76]
+ $t0 = $t1
+ local[76] = $t1
+ local[78] = $t0
+ $t0 = local[23]
+ $t1 = local[78]
+ $t0 = $t1
+ local[78] = $t1
+ local[23] = $t0
+ goto :if82_end
+if82_else:
+ $t0 = local[72]
$t0 = 1
- local[32] = $t0
-if42_end:
- goto :while34_test
-while34_end:
- $t0 = local[32]
+ local[72] = $t0
+ $t0 = local[72]
+ $s1 = $t0
+ local[72] = $t0
+ $t0 = local[23]
+ $t0 = $s1
+ local[23] = $t0
+if82_end:
+ goto :while68_test
+while68_end:
+ $t0 = local[31]
$t0 = 1
+ local[31] = $t0
+ $t0 = local[29]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[29] = $t0
+ $t0 = local[23]
+ $t1 = local[29]
+ $t0 = $t1
+ local[29] = $t1
+ local[23] = $t0
+while98_test:
+ $t0 = local[34]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[34] = $t0
+ $t0 = local[32]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
local[32] = $t0
-while47_test:
- $t0 = local[26]
+ $t0 = local[37]
$t1 = local[32]
$t0 = $t1
local[32] = $t1
- local[26] = $t0
- $t0 = local[26]
- if0 $t0 goto :while47_end
- local[26] = $t0
-while47_body:
- $t0 = local[19]
- $s4 = $t0
- local[19] = $t0
- $s7 = 1
- $s0 = Sub($s4 $s7 )
- $t0 = local[19]
- $t0 = $s0
- local[19] = $t0
- $t0 = local[14]
- $s6 = [$t0+16]
- local[14] = $t0
+ local[37] = $t0
+ $t0 = local[37]
+ if0 $t0 goto :while98_end
+ local[37] = $t0
+while98_body:
+ $t0 = local[91]
+ $t1 = local[19]
+ $t0 = $t1
+ local[19] = $t1
+ local[91] = $t0
+ $t0 = local[90]
+ $t0 = 1
+ local[90] = $t0
+ $t0 = local[92]
+ $t1 = local[91]
+ $t2 = local[90]
+ $t0 = Sub($t1 $t2 )
+ local[90] = $t2
+ local[91] = $t1
+ local[92] = $t0
+ $t0 = local[84]
+ $t1 = local[92]
+ $t0 = $t1
+ local[92] = $t1
+ local[84] = $t0
$t0 = local[19]
- $s3 = MulS($t0 4 )
+ $t1 = local[84]
+ $t0 = $t1
+ local[84] = $t1
local[19] = $t0
- $s3 = Add($s3 4 )
- $s3 = Add($s6 $s3 )
- $s5 = [$s3+0]
- $t3 = $s5
- $s2 = $s1
- $t5 = $t3
- $t7 = LtS($s2 $t5 )
- $t4 = Eq($t7 0 )
- $t6 = $t4
- if0 $t6 goto :if55_else
-if55_body:
- $t0 = local[32]
- $t0 = 0
- local[32] = $t0
- goto :if55_end
-if55_else:
- $t0 = local[32]
- $t0 = 1
- local[32] = $t0
-if55_end:
- goto :while47_test
-while47_end:
- $t0 = local[34]
+ $t0 = local[83]
$t1 = local[14]
$t0 = [$t1+16]
local[14] = $t1
- local[34] = $t0
- $t0 = local[37]
+ local[83] = $t0
+ $t0 = local[83]
+ $s0 = $t0
+ local[83] = $t0
+ $t0 = local[87]
+ $t1 = local[19]
+ $t0 = $t1
+ local[19] = $t1
+ local[87] = $t0
+ $t0 = local[87]
+ $s4 = MulS($t0 4 )
+ local[87] = $t0
+ $s4 = Add($s4 4 )
+ $s4 = Add($s0 $s4 )
+ $s6 = [$s4+0]
+ $t0 = local[86]
+ $t0 = $s6
+ local[86] = $t0
+ $t0 = local[71]
+ $t1 = local[86]
+ $t0 = $t1
+ local[86] = $t1
+ local[71] = $t0
+ $t0 = local[85]
+ $t1 = local[70]
+ $t0 = $t1
+ local[70] = $t1
+ local[85] = $t0
+ $t0 = local[71]
+ $t5 = $t0
+ local[71] = $t0
+ $t0 = local[88]
+ $t1 = local[85]
+ $t0 = LtS($t1 $t5 )
+ local[85] = $t1
+ local[88] = $t0
+ $t0 = local[88]
+ $t6 = $t0
+ local[88] = $t0
+ $s2 = $t6
+ $s1 = $s2
+ $t0 = local[89]
+ $t0 = Eq($s1 0 )
+ local[89] = $t0
+ $t0 = local[89]
+ $t7 = $t0
+ local[89] = $t0
+ $s3 = $t7
+ $t3 = $s3
+ if0 $t3 goto :if112_else
+if112_body:
+ $t4 = 0
+ $s7 = $t4
+ $t0 = local[23]
+ $t0 = $s7
+ local[23] = $t0
+ goto :if112_end
+if112_else:
+ $s5 = 1
+ $t0 = local[93]
+ $t0 = $s5
+ local[93] = $t0
+ $t0 = local[23]
+ $t1 = local[93]
+ $t0 = $t1
+ local[93] = $t1
+ local[23] = $t0
+if112_end:
+ goto :while98_test
+while98_end:
+ $t0 = local[41]
+ $t1 = local[14]
+ $t0 = [$t1+16]
+ local[14] = $t1
+ local[41] = $t0
+ $t0 = local[49]
+ $t1 = local[41]
+ $t0 = $t1
+ local[41] = $t1
+ local[49] = $t0
+ $t0 = local[45]
$t1 = local[16]
- $t0 = MulS($t1 4 )
+ $t0 = $t1
local[16] = $t1
- local[37] = $t0
- $t0 = local[37]
- $t1 = local[37]
+ local[45] = $t0
+ $t0 = local[39]
+ $t1 = local[45]
+ $t0 = MulS($t1 4 )
+ local[45] = $t1
+ local[39] = $t0
+ $t0 = local[39]
+ $t1 = local[39]
$t0 = Add($t1 4 )
- local[37] = $t1
- local[37] = $t0
- $t0 = local[37]
- $t1 = local[34]
- $t2 = local[37]
+ local[39] = $t1
+ local[39] = $t0
+ $t0 = local[39]
+ $t1 = local[49]
+ $t2 = local[39]
$t0 = Add($t1 $t2 )
- local[37] = $t2
- local[34] = $t1
- local[37] = $t0
- $t0 = local[33]
- $t1 = local[37]
+ local[39] = $t2
+ local[49] = $t1
+ local[39] = $t0
+ $t0 = local[51]
+ $t1 = local[39]
$t0 = [$t1+0]
- local[37] = $t1
- local[33] = $t0
+ local[39] = $t1
+ local[51] = $t0
+ $t0 = local[43]
+ $t1 = local[51]
+ $t0 = $t1
+ local[51] = $t1
+ local[43] = $t0
$t0 = local[18]
- $t1 = local[33]
+ $t1 = local[43]
$t0 = $t1
- local[33] = $t1
+ local[43] = $t1
local[18] = $t0
- $t0 = local[38]
+ $t0 = local[53]
$t1 = local[14]
$t0 = [$t1+16]
local[14] = $t1
- local[38] = $t0
- $t0 = local[35]
+ local[53] = $t0
+ $t0 = local[56]
$t1 = local[16]
- $t0 = MulS($t1 4 )
+ $t0 = $t1
local[16] = $t1
- local[35] = $t0
- $t0 = local[35]
- $t1 = local[35]
+ local[56] = $t0
+ $t0 = local[59]
+ $t1 = local[56]
+ $t0 = $t1
+ local[56] = $t1
+ local[59] = $t0
+ $t0 = local[52]
+ $t1 = local[59]
+ $t0 = MulS($t1 4 )
+ local[59] = $t1
+ local[52] = $t0
+ $t0 = local[52]
+ $t1 = local[52]
$t0 = Add($t1 4 )
- local[35] = $t1
- local[35] = $t0
- $t0 = local[35]
- $t1 = local[38]
- $t2 = local[35]
+ local[52] = $t1
+ local[52] = $t0
+ $t0 = local[52]
+ $t1 = local[53]
+ $t2 = local[52]
$t0 = Add($t1 $t2 )
- local[35] = $t2
- local[38] = $t1
- local[35] = $t0
- $t0 = local[30]
+ local[52] = $t2
+ local[53] = $t1
+ local[52] = $t0
+ $t0 = local[65]
$t1 = local[14]
$t0 = [$t1+16]
local[14] = $t1
- local[30] = $t0
- $t0 = local[21]
+ local[65] = $t0
+ $t0 = local[66]
+ $t1 = local[65]
+ $t0 = $t1
+ local[65] = $t1
+ local[66] = $t0
+ $t0 = local[63]
$t1 = local[19]
- $t0 = MulS($t1 4 )
+ $t0 = $t1
local[19] = $t1
- local[21] = $t0
- $t0 = local[21]
- $t1 = local[21]
+ local[63] = $t0
+ $t0 = local[64]
+ $t1 = local[63]
+ $t0 = MulS($t1 4 )
+ local[63] = $t1
+ local[64] = $t0
+ $t0 = local[64]
+ $t1 = local[64]
$t0 = Add($t1 4 )
- local[21] = $t1
- local[21] = $t0
- $t0 = local[21]
- $t1 = local[30]
- $t2 = local[21]
+ local[64] = $t1
+ local[64] = $t0
+ $t0 = local[64]
+ $t1 = local[66]
+ $t2 = local[64]
$t0 = Add($t1 $t2 )
- local[21] = $t2
- local[30] = $t1
- local[21] = $t0
- $t0 = local[36]
- $t1 = local[21]
+ local[64] = $t2
+ local[66] = $t1
+ local[64] = $t0
+ $t0 = local[67]
+ $t1 = local[64]
$t0 = [$t1+0]
- local[21] = $t1
- local[36] = $t0
- $t0 = local[35]
- $t1 = local[36]
+ local[64] = $t1
+ local[67] = $t0
+ $t0 = local[62]
+ $t1 = local[67]
+ $t0 = $t1
+ local[67] = $t1
+ local[62] = $t0
+ $t0 = local[52]
+ $t1 = local[62]
[$t0+0] = $t1
- local[36] = $t1
- local[35] = $t0
- $t0 = local[20]
+ local[62] = $t1
+ local[52] = $t0
+ $t0 = local[61]
$t1 = local[14]
$t0 = [$t1+16]
local[14] = $t1
- local[20] = $t0
- $t0 = local[27]
+ local[61] = $t0
+ $t0 = local[57]
$t1 = local[19]
- $t0 = MulS($t1 4 )
+ $t0 = $t1
local[19] = $t1
- local[27] = $t0
- $t0 = local[27]
- $t1 = local[27]
+ local[57] = $t0
+ $t0 = local[54]
+ $t1 = local[57]
+ $t0 = $t1
+ local[57] = $t1
+ local[54] = $t0
+ $t0 = local[60]
+ $t1 = local[54]
+ $t0 = MulS($t1 4 )
+ local[54] = $t1
+ local[60] = $t0
+ $t0 = local[60]
+ $t1 = local[60]
$t0 = Add($t1 4 )
- local[27] = $t1
- local[27] = $t0
- $t0 = local[27]
- $t1 = local[20]
- $t2 = local[27]
+ local[60] = $t1
+ local[60] = $t0
+ $t0 = local[60]
+ $t1 = local[61]
+ $t2 = local[60]
$t0 = Add($t1 $t2 )
- local[27] = $t2
- local[20] = $t1
- local[27] = $t0
- $t0 = local[27]
+ local[60] = $t2
+ local[61] = $t1
+ local[60] = $t0
+ $t0 = local[55]
$t1 = local[18]
- [$t0+0] = $t1
+ $t0 = $t1
local[18] = $t1
- local[27] = $t0
- $t0 = local[29]
+ local[55] = $t0
+ $t0 = local[38]
+ $t1 = local[55]
+ $t0 = $t1
+ local[55] = $t1
+ local[38] = $t0
+ $t0 = local[60]
+ $t1 = local[38]
+ [$t0+0] = $t1
+ local[38] = $t1
+ local[60] = $t0
+ $t0 = local[42]
$t1 = local[19]
$t0 = $t1
local[19] = $t1
- local[29] = $t0
- $t0 = local[23]
+ local[42] = $t0
+ $t0 = local[46]
$t1 = local[16]
$t0 = $t1
local[16] = $t1
- local[23] = $t0
- $t0 = local[22]
+ local[46] = $t0
+ $t0 = local[47]
$t0 = 1
- local[22] = $t0
- $t0 = local[28]
- $t1 = local[23]
- $t2 = local[22]
+ local[47] = $t0
+ $t0 = local[44]
+ $t1 = local[46]
+ $t2 = local[47]
$t0 = Add($t1 $t2 )
- local[22] = $t2
- local[23] = $t1
- local[28] = $t0
- $t0 = local[24]
- $t1 = local[28]
+ local[47] = $t2
+ local[46] = $t1
+ local[44] = $t0
+ $t0 = local[48]
+ $t1 = local[44]
$t0 = $t1
- local[28] = $t1
- local[24] = $t0
- $t0 = local[25]
- $t1 = local[29]
- $t2 = local[24]
+ local[44] = $t1
+ local[48] = $t0
+ $t0 = local[50]
+ $t1 = local[48]
+ $t0 = $t1
+ local[48] = $t1
+ local[50] = $t0
+ $t0 = local[40]
+ $t1 = local[42]
+ $t2 = local[50]
$t0 = LtS($t1 $t2 )
- local[24] = $t2
- local[29] = $t1
- local[25] = $t0
- $t0 = local[39]
- $t1 = local[25]
+ local[50] = $t2
+ local[42] = $t1
+ local[40] = $t0
+ $t0 = local[33]
+ $t1 = local[40]
$t0 = $t1
- local[25] = $t1
- local[39] = $t0
- $t0 = local[39]
- if0 $t0 goto :if70_else
- local[39] = $t0
-if70_body:
- $t0 = local[41]
+ local[40] = $t1
+ local[33] = $t0
+ $t0 = local[35]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[35] = $t0
+ $t0 = local[35]
+ if0 $t0 goto :if148_else
+ local[35] = $t0
+if148_body:
+ $t0 = local[36]
$t0 = 0
- local[41] = $t0
- goto :if70_end
-if70_else:
- $t0 = local[41]
+ local[36] = $t0
+ $t0 = local[27]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[27] = $t0
+ $t0 = local[69]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
+ local[69] = $t0
+ goto :if148_end
+if148_else:
+ $t0 = local[28]
$t0 = 1
- local[41] = $t0
-if70_end:
- goto :while32_test
-while32_end:
+ local[28] = $t0
+ $t0 = local[30]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
+ local[30] = $t0
+ $t0 = local[69]
+ $t1 = local[30]
+ $t0 = $t1
+ local[30] = $t1
+ local[69] = $t0
+if148_end:
+ goto :while62_test
+while62_end:
$t0 = local[14]
- $s1 = [$t0+16]
+ $s4 = [$t0+16]
local[14] = $t0
$t0 = local[19]
- $s0 = MulS($t0 4 )
+ $s6 = $t0
local[19] = $t0
- $s0 = Add($s0 4 )
- $s0 = Add($s1 $s0 )
+ $s0 = $s6
+ $s6 = MulS($s0 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
$t0 = local[14]
- $s1 = [$t0+16]
+ $s4 = [$t0+16]
local[14] = $t0
+ $s0 = $s4
$t0 = local[16]
- $s4 = MulS($t0 4 )
+ $s4 = $t0
local[16] = $t0
- $s4 = Add($s4 4 )
- $s4 = Add($s1 $s4 )
- $s1 = [$s4+0]
- [$s0+0] = $s1
+ $s7 = MulS($s4 4 )
+ $s7 = Add($s7 4 )
+ $s7 = Add($s0 $s7 )
+ $s0 = [$s7+0]
+ $s7 = $s0
+ [$s6+0] = $s7
$t0 = local[14]
- $s1 = [$t0+16]
+ $s7 = [$t0+16]
local[14] = $t0
$t0 = local[16]
- $s0 = MulS($t0 4 )
+ $s6 = $t0
local[16] = $t0
- $s0 = Add($s0 4 )
- $s0 = Add($s1 $s0 )
+ $s0 = $s6
+ $s6 = MulS($s0 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
$t0 = local[14]
- $s1 = [$t0+16]
+ $s7 = [$t0+16]
local[14] = $t0
+ $s0 = $s7
$t0 = local[15]
- $s4 = MulS($t0 4 )
+ $s7 = $t0
local[15] = $t0
+ $s4 = MulS($s7 4 )
$s4 = Add($s4 4 )
- $s4 = Add($s1 $s4 )
- $s1 = [$s4+0]
- [$s0+0] = $s1
+ $s4 = Add($s0 $s4 )
+ $s0 = [$s4+0]
+ $s4 = $s0
+ [$s6+0] = $s4
$t0 = local[14]
- $s1 = [$t0+16]
+ $s4 = [$t0+16]
local[14] = $t0
$t0 = local[15]
- $s0 = MulS($t0 4 )
+ $s6 = $t0
local[15] = $t0
- $s0 = Add($s0 4 )
- $s0 = Add($s1 $s0 )
+ $s0 = $s6
+ $s6 = MulS($s0 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
$t0 = local[18]
- [$s0+0] = $t0
+ $s4 = $t0
local[18] = $t0
+ $s0 = $s4
+ [$s6+0] = $s0
+ $t0 = local[14]
+ $s0 = $t0
+ local[14] = $t0
$t0 = local[14]
$s0 = [$t0+0]
local[14] = $t0
- $t0 = local[16]
- $s1 = $t0
- local[16] = $t0
- $s4 = 1
- $s6 = Sub($s1 $s4 )
$t0 = local[17]
- $s1 = $t0
+ $s6 = $t0
local[17] = $t0
- $s1 = $s6
+ $s4 = $s6
+ $t0 = local[16]
+ $s6 = $t0
+ local[16] = $t0
+ $s7 = 1
+ $s5 = Sub($s6 $s7 )
+ $s7 = $s5
$s0 = [$s0+4]
local[8] = $t3
local[9] = $t4
@@ -545,7 +861,7 @@ while32_end:
$a0 = $t0
local[14] = $t0
$a1 = $s4
- $a2 = $s1
+ $a2 = $s7
call $s0
$t3 = local[8]
$t4 = local[9]
@@ -553,21 +869,26 @@ while32_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $s1 = $s6
+ $s5 = $v0
+ $s7 = $s5
+ $s5 = $s7
+ $t0 = local[14]
+ $s7 = $t0
+ local[14] = $t0
$t0 = local[14]
- $s6 = [$t0+0]
+ $s7 = [$t0+0]
local[14] = $t0
$t0 = local[16]
$s4 = $t0
local[16] = $t0
$s0 = 1
- $s3 = Add($s4 $s0 )
- $s0 = $s3
+ $s6 = Add($s4 $s0 )
+ $s0 = $s6
$t0 = local[15]
- $s3 = $t0
+ $s6 = $t0
local[15] = $t0
- $s6 = [$s6+4]
+ $s4 = $s6
+ $s7 = [$s7+4]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -578,22 +899,27 @@ while32_end:
$a0 = $t0
local[14] = $t0
$a1 = $s0
- $a2 = $s3
- call $s6
+ $a2 = $s4
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s1 = $s4
- goto :if22_end
-if22_else:
- $s1 = 0
-if22_end:
- $s1 = 0
- $v0 = $s1
+ $s6 = $v0
+ $s4 = $s6
+ $s5 = $s4
+ goto :if43_end
+if43_else:
+ $s4 = 0
+ $s6 = $s4
+ $s5 = $s6
+if43_end:
+ $s6 = 0
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -603,7 +929,7 @@ if22_end:
$s6 = local[6]
$s7 = local[7]
ret
-func QS_Print [in 0, out 0, local 14]
+func QS_Print [in 0, out 0, local 21]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -614,27 +940,66 @@ func QS_Print [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = 0
-while104_test:
$s5 = $s7
- $s1 = [$s6+20]
- $s2 = LtS($s5 $s1 )
- $t7 = $s2
- if0 $t7 goto :while104_end
-while104_body:
- $t5 = [$s6+16]
- $t6 = MulS($s7 4 )
- $t6 = Add($t6 4 )
- $t6 = Add($t5 $t6 )
- $s0 = [$t6+0]
- $t3 = $s0
- PrintIntS($t3 )
+ $s7 = $s5
+while214_test:
+ $s5 = $s7
+ $t0 = local[16]
+ $t0 = [$s6+20]
+ local[16] = $t0
+ $t0 = local[18]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[18] = $t0
+ $t0 = local[17]
+ $t1 = local[18]
+ $t0 = $t1
+ local[18] = $t1
+ local[17] = $t0
+ $t0 = local[15]
+ $t1 = local[17]
+ $t0 = LtS($s5 $t1 )
+ local[17] = $t1
+ local[15] = $t0
+ $t0 = local[20]
+ $t1 = local[15]
+ $t0 = $t1
+ local[15] = $t1
+ local[20] = $t0
+ $t0 = local[19]
+ $t1 = local[20]
+ $t0 = $t1
+ local[20] = $t1
+ local[19] = $t0
+ $t0 = local[19]
+ if0 $t0 goto :while214_end
+ local[19] = $t0
+while214_body:
+ $t6 = [$s6+16]
+ $t5 = $t6
$s4 = $s7
- $s3 = 1
- $t4 = Add($s4 $s3 )
- $s7 = $t4
- goto :while104_test
-while104_end:
+ $s3 = MulS($s4 4 )
+ $s3 = Add($s3 4 )
+ $s3 = Add($t5 $s3 )
+ $s0 = [$s3+0]
+ $s1 = $s0
+ $s2 = $s1
+ PrintIntS($s2 )
+ $t4 = $s7
+ $t0 = local[14]
+ $t0 = 1
+ local[14] = $t0
+ $t0 = local[14]
+ $t3 = Add($t4 $t0 )
+ local[14] = $t0
+ $t7 = $t3
+ $s7 = $t7
+ goto :while214_test
+while214_end:
$t3 = 0
+ $t4 = $t3
+ $t3 = $t4
$v0 = $t3
$s0 = local[0]
$s1 = local[1]
@@ -654,16 +1019,20 @@ func QS_Init [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+20] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s4 = $s7
+ [$s5+20] = $s4
+ $s4 = $s6
+ $s6 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s7
+ $a0 = $s6
call :AllocArray
$t3 = local[8]
$t4 = local[9]
@@ -671,59 +1040,103 @@ func QS_Init [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- [$s6+16] = $s5
- $s5 = [$s6+16]
- $s7 = MulS(0 4 )
- $s7 = Add($s7 4 )
- $s7 = Add($s5 $s7 )
- [$s7+0] = 20
- $s7 = [$s6+16]
- $s5 = MulS(1 4 )
- $s5 = Add($s5 4 )
- $s5 = Add($s7 $s5 )
- [$s5+0] = 7
- $s5 = [$s6+16]
- $s7 = MulS(2 4 )
- $s7 = Add($s7 4 )
- $s7 = Add($s5 $s7 )
- [$s7+0] = 12
- $s7 = [$s6+16]
- $s5 = MulS(3 4 )
- $s5 = Add($s5 4 )
- $s5 = Add($s7 $s5 )
- [$s5+0] = 18
- $s5 = [$s6+16]
- $s7 = MulS(4 4 )
- $s7 = Add($s7 4 )
- $s7 = Add($s5 $s7 )
- [$s7+0] = 2
- $s7 = [$s6+16]
- $s5 = MulS(5 4 )
- $s5 = Add($s5 4 )
- $s5 = Add($s7 $s5 )
- [$s5+0] = 11
- $s5 = [$s6+16]
- $s7 = MulS(6 4 )
- $s7 = Add($s7 4 )
- $s7 = Add($s5 $s7 )
- [$s7+0] = 6
- $s7 = [$s6+16]
- $s5 = MulS(7 4 )
- $s5 = Add($s5 4 )
- $s5 = Add($s7 $s5 )
- [$s5+0] = 9
- $s5 = [$s6+16]
- $s7 = MulS(8 4 )
- $s7 = Add($s7 4 )
- $s7 = Add($s5 $s7 )
- [$s7+0] = 19
- $s7 = [$s6+16]
- $s6 = MulS(9 4 )
+ $s4 = $v0
+ $s6 = $s4
+ $s4 = $s6
+ [$s5+16] = $s4
+ $s4 = [$s5+16]
+ $s6 = 0
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 20
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 1
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 7
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 2
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 12
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 3
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 18
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 4
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 2
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 5
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s7 $s6 )
+ $s7 = 11
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 6
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 6
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s6 = 7
+ $s4 = $s6
+ $s6 = MulS($s4 4 )
$s6 = Add($s6 4 )
$s6 = Add($s7 $s6 )
- [$s6+0] = 5
+ $s7 = 9
+ $s4 = $s7
+ [$s6+0] = $s4
+ $s4 = [$s5+16]
+ $s6 = 8
+ $s7 = $s6
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s6 = Add($s4 $s6 )
+ $s4 = 19
+ $s7 = $s4
+ [$s6+0] = $s7
+ $s7 = [$s5+16]
+ $s5 = 9
+ $s6 = $s5
+ $s5 = MulS($s6 4 )
+ $s5 = Add($s5 4 )
+ $s5 = Add($s7 $s5 )
+ $s7 = 5
+ $s6 = $s7
+ [$s5+0] = $s6
$s6 = 0
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
diff --git a/output/TreeVisitor.s b/output/TreeVisitor.s
new file mode 100644
index 0000000..eeaeaec
--- /dev/null
+++ b/output/TreeVisitor.s
@@ -0,0 +1,4253 @@
+.data
+functable_TV:
+ TV_Start
+functable_Tree:
+ Tree_Init
+ Tree_SetRight
+ Tree_SetLeft
+ Tree_GetRight
+ Tree_GetLeft
+ Tree_GetKey
+ Tree_SetKey
+ Tree_GetHas_Right
+ Tree_GetHas_Left
+ Tree_SetHas_Left
+ Tree_SetHas_Right
+ Tree_Compare
+ Tree_Insert
+ Tree_Delete
+ Tree_Remove
+ Tree_RemoveRight
+ Tree_RemoveLeft
+ Tree_Search
+ Tree_Print
+ Tree_RecPrint
+ Tree_accept
+functable_Visitor:
+ Visitor_visit
+functable_MyVisitor:
+ MyVisitor_visit
+ Visitor_visit
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_TV
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+TV_Start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ li $a0 108
+ jal _heapAlloc
+ move $s6 $v0
+ la $t9 functable_Tree
+ sw $t9 0($s6)
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 16
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s5 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s6 $s5
+ li $s5 100000000
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 8
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ li $s3 24
+ move $s4 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s4 $s3
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ li $s4 4
+ move $s5 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 12
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ li $s3 20
+ move $s4 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s4 $s3
+ move $s6 $s4
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ li $s4 28
+ move $s5 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s5
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s5 $s4
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 14
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ li $s5 100000000
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ li $a0 16
+ jal _heapAlloc
+ move $s5 $v0
+ la $t9 functable_MyVisitor
+ sw $t9 0($s5)
+ move $s3 $s5
+ move $s5 $s3
+ move $s3 $s5
+ li $s5 50000000
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ move $s5 $s3
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ li $s5 100000000
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ li $s5 24
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 12
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ li $s5 16
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 50
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ li $s5 12
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ li $s5 12
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s6 $s3
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s5 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s5 $s3
+ move $s6 $s5
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s6 0($s5)
+ li $s5 12
+ move $s3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s3
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ li $s5 0
+ move $s3 $s5
+ move $s5 $s3
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 0
+ move $s7 $s6
+ sw $s7 0($s5)
+ li $s7 0
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetKey:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_GetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetHas_Left:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_SetHas_Right:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ li $s6 1
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Compare:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ li $s4 0
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s7
+ li $s3 1
+ move $a0 $s5
+ move $t9 $s3
+ add $s2 $a0 $t9
+ move $s3 $s2
+ move $s2 $s3
+ move $s3 $s6
+ move $s5 $s7
+ move $a0 $s3
+ move $t9 $s5
+ slt $s7 $a0 $t9
+ move $s5 $s7
+ move $s7 $s5
+ beqz $s7 if216_else
+if216_body:
+ li $s7 0
+ move $s5 $s7
+ move $s4 $s5
+ j if216_end
+if216_else:
+ move $s5 $s6
+ move $s6 $s2
+ move $a0 $s5
+ move $t9 $s6
+ slt $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ move $a0 $s6
+ li $t9 0
+NULL $s2 $a0 $t9
+ move $s6 $s2
+ move $s2 $s6
+ move $s6 $s2
+ beqz $s6 if223_else
+if223_body:
+ li $s6 0
+ move $s2 $s6
+ move $s4 $s2
+ j if223_end
+if223_else:
+ li $s2 1
+ move $s6 $s2
+ move $s4 $s6
+if223_end:
+if216_end:
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_Insert:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 292
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $a0 108
+ jal _heapAlloc
+ move $s5 $v0
+ la $t9 functable_Tree
+ sw $t9 0($s5)
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s5
+ lw $s5 0($s4)
+ lw $s3 0($s5)
+ move $s5 $s7
+ move $s2 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ move $a1 $s2
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s2 $s5
+ move $s5 $s2
+ move $s2 $s6
+ move $s6 $s2
+ move $s2 $s6
+ li $s6 1
+ move $s3 $s6
+ move $s6 $s3
+while254_test:
+ move $s3 $s6
+ lw $t0 -224($fp)
+ move $t0 $s3
+ sw $t0 -224($fp)
+ lw $t0 -240($fp)
+ lw $t1 -224($fp)
+ move $t0 $t1
+ sw $t1 -224($fp)
+ sw $t0 -240($fp)
+ lw $t0 -240($fp)
+ beqz $t0 while254_end
+ sw $t0 -240($fp)
+while254_body:
+ lw $t0 -208($fp)
+ move $t0 $s2
+ sw $t0 -208($fp)
+ lw $t0 -208($fp)
+ move $s2 $t0
+ sw $t0 -208($fp)
+ lw $t0 -220($fp)
+ lw $t0 0($s2)
+ sw $t0 -220($fp)
+ lw $t0 -216($fp)
+ lw $t1 -220($fp)
+ lw $t0 0($t1)
+ sw $t1 -220($fp)
+ sw $t0 -216($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -216($fp)
+ lw $t1 -216($fp)
+ jalr $t1
+ sw $t1 -216($fp)
+ sw $t0 -216($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -212($fp)
+ move $t0 $v0
+ sw $t0 -212($fp)
+ lw $t0 -188($fp)
+ lw $t1 -212($fp)
+ move $t0 $t1
+ sw $t1 -212($fp)
+ sw $t0 -188($fp)
+ lw $t0 -236($fp)
+ lw $t1 -188($fp)
+ move $t0 $t1
+ sw $t1 -188($fp)
+ sw $t0 -236($fp)
+ lw $t0 -120($fp)
+ move $t0 $s7
+ sw $t0 -120($fp)
+ lw $t0 -160($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -160($fp)
+ lw $t0 -184($fp)
+ lw $t1 -120($fp)
+ lw $t2 -160($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -160($fp)
+ sw $t1 -120($fp)
+ sw $t0 -184($fp)
+ lw $t0 -152($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -152($fp)
+ lw $t0 -176($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if263_else
+ sw $t0 -176($fp)
+if263_body:
+ lw $t0 -136($fp)
+ move $t0 $s2
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ move $s2 $t0
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t0 0($s2)
+ sw $t0 -132($fp)
+ lw $t0 -148($fp)
+ lw $t1 -132($fp)
+ lw $t0 0($t1)
+ sw $t1 -132($fp)
+ sw $t0 -148($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -148($fp)
+ lw $t1 -148($fp)
+ jalr $t1
+ sw $t1 -148($fp)
+ sw $t0 -148($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -168($fp)
+ move $t0 $v0
+ sw $t0 -168($fp)
+ lw $t0 -144($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -144($fp)
+ lw $t0 -112($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ beqz $t0 if268_else
+ sw $t0 -112($fp)
+if268_body:
+ move $t7 $s2
+ move $s2 $t7
+ lw $t0 -96($fp)
+ lw $t0 0($s2)
+ sw $t0 -96($fp)
+ lw $t0 -88($fp)
+ lw $t1 -96($fp)
+ lw $t0 0($t1)
+ sw $t1 -96($fp)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -88($fp)
+ lw $t1 -88($fp)
+ jalr $t1
+ sw $t1 -88($fp)
+ sw $t0 -88($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t5 $v0
+ lw $t0 -108($fp)
+ move $t0 $t5
+ sw $t0 -108($fp)
+ lw $t0 -108($fp)
+ move $s2 $t0
+ sw $t0 -108($fp)
+ j if268_end
+if268_else:
+ lw $t0 -104($fp)
+ li $t0 0
+ sw $t0 -104($fp)
+ lw $t0 -76($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -76($fp)
+ lw $t0 -76($fp)
+ move $s6 $t0
+ sw $t0 -76($fp)
+ lw $t0 -84($fp)
+ move $t0 $s2
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $s2 $t0
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t0 0($s2)
+ sw $t0 -80($fp)
+ lw $t0 -248($fp)
+ lw $t1 -80($fp)
+ lw $t0 0($t1)
+ sw $t1 -80($fp)
+ sw $t0 -248($fp)
+ lw $t0 -256($fp)
+ li $t0 1
+ sw $t0 -256($fp)
+ lw $t0 -252($fp)
+ lw $t1 -256($fp)
+ move $t0 $t1
+ sw $t1 -256($fp)
+ sw $t0 -252($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -252($fp)
+ move $a1 $t0
+ sw $t0 -252($fp)
+ lw $t0 -248($fp)
+ lw $t1 -248($fp)
+ jalr $t1
+ sw $t1 -248($fp)
+ sw $t0 -248($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -72($fp)
+ move $t0 $v0
+ sw $t0 -72($fp)
+ lw $t0 -276($fp)
+ lw $t1 -72($fp)
+ move $t0 $t1
+ sw $t1 -72($fp)
+ sw $t0 -276($fp)
+ lw $t0 -276($fp)
+ move $s5 $t0
+ sw $t0 -276($fp)
+ lw $t0 -284($fp)
+ move $t0 $s2
+ sw $t0 -284($fp)
+ lw $t0 -284($fp)
+ move $s2 $t0
+ sw $t0 -284($fp)
+ lw $t0 -280($fp)
+ lw $t0 0($s2)
+ sw $t0 -280($fp)
+ lw $t0 -264($fp)
+ lw $t1 -280($fp)
+ lw $t0 0($t1)
+ sw $t1 -280($fp)
+ sw $t0 -264($fp)
+ lw $t0 -260($fp)
+ move $t0 $s4
+ sw $t0 -260($fp)
+ lw $t0 -268($fp)
+ lw $t1 -260($fp)
+ move $t0 $t1
+ sw $t1 -260($fp)
+ sw $t0 -268($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -268($fp)
+ move $a1 $t0
+ sw $t0 -268($fp)
+ lw $t0 -264($fp)
+ lw $t1 -264($fp)
+ jalr $t1
+ sw $t1 -264($fp)
+ sw $t0 -264($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -272($fp)
+ move $t0 $v0
+ sw $t0 -272($fp)
+ lw $t0 -196($fp)
+ lw $t1 -272($fp)
+ move $t0 $t1
+ sw $t1 -272($fp)
+ sw $t0 -196($fp)
+ lw $t0 -196($fp)
+ move $s5 $t0
+ sw $t0 -196($fp)
+if268_end:
+ j if263_end
+if263_else:
+ lw $t0 -204($fp)
+ move $t0 $s2
+ sw $t0 -204($fp)
+ lw $t0 -204($fp)
+ move $s2 $t0
+ sw $t0 -204($fp)
+ lw $t0 -200($fp)
+ lw $t0 0($s2)
+ sw $t0 -200($fp)
+ lw $t0 -232($fp)
+ lw $t1 -200($fp)
+ lw $t0 0($t1)
+ sw $t1 -200($fp)
+ sw $t0 -232($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -232($fp)
+ lw $t1 -232($fp)
+ jalr $t1
+ sw $t1 -232($fp)
+ sw $t0 -232($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -192($fp)
+ move $t0 $v0
+ sw $t0 -192($fp)
+ lw $t0 -228($fp)
+ lw $t1 -192($fp)
+ move $t0 $t1
+ sw $t1 -192($fp)
+ sw $t0 -228($fp)
+ lw $t0 -244($fp)
+ lw $t1 -228($fp)
+ move $t0 $t1
+ sw $t1 -228($fp)
+ sw $t0 -244($fp)
+ lw $t0 -244($fp)
+ beqz $t0 if295_else
+ sw $t0 -244($fp)
+if295_body:
+ move $t3 $s2
+ move $s2 $t3
+ lw $t3 0($s2)
+ lw $t4 0($t3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $t4 $t3
+ move $s2 $t4
+ j if295_end
+if295_else:
+ lw $t0 -116($fp)
+ li $t0 0
+ sw $t0 -116($fp)
+ lw $t0 -128($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ move $s6 $t0
+ sw $t0 -128($fp)
+ lw $t0 -164($fp)
+ move $t0 $s2
+ sw $t0 -164($fp)
+ lw $t0 -164($fp)
+ move $s2 $t0
+ sw $t0 -164($fp)
+ lw $t0 -156($fp)
+ lw $t0 0($s2)
+ sw $t0 -156($fp)
+ lw $t0 -180($fp)
+ lw $t1 -156($fp)
+ lw $t0 0($t1)
+ sw $t1 -156($fp)
+ sw $t0 -180($fp)
+ lw $t0 -172($fp)
+ li $t0 1
+ sw $t0 -172($fp)
+ lw $t0 -140($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -140($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -140($fp)
+ move $a1 $t0
+ sw $t0 -140($fp)
+ lw $t0 -180($fp)
+ lw $t1 -180($fp)
+ jalr $t1
+ sw $t1 -180($fp)
+ sw $t0 -180($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -124($fp)
+ move $t0 $v0
+ sw $t0 -124($fp)
+ lw $t0 -68($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ move $s0 $s2
+ move $s2 $s0
+ lw $s1 0($s2)
+ lw $t0 -292($fp)
+ lw $t0 0($s1)
+ sw $t0 -292($fp)
+ move $t6 $s4
+ lw $t0 -100($fp)
+ move $t0 $t6
+ sw $t0 -100($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s2
+ lw $t0 -100($fp)
+ move $a1 $t0
+ sw $t0 -100($fp)
+ lw $t0 -292($fp)
+ lw $t1 -292($fp)
+ jalr $t1
+ sw $t1 -292($fp)
+ sw $t0 -292($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -288($fp)
+ move $t0 $v0
+ sw $t0 -288($fp)
+ lw $t0 -92($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s5 $t0
+ sw $t0 -92($fp)
+if295_end:
+if263_end:
+ j while254_test
+while254_end:
+ li $t5 1
+ move $t6 $t5
+ move $t5 $t6
+ move $v0 $t5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 292
+ jr $ra
+Tree_Delete:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 372
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s6
+ move $s3 $s4
+ move $s4 $s3
+ li $s3 1
+ move $s2 $s3
+ move $s3 $s2
+ li $s2 0
+ move $s1 $s2
+ lw $t0 -68($fp)
+ move $t0 $s1
+ sw $t0 -68($fp)
+ li $s1 1
+ move $s0 $s1
+ move $s1 $s0
+while335_test:
+ move $s0 $s3
+ lw $t0 -304($fp)
+ move $t0 $s0
+ sw $t0 -304($fp)
+ lw $t0 -308($fp)
+ lw $t1 -304($fp)
+ move $t0 $t1
+ sw $t1 -304($fp)
+ sw $t0 -308($fp)
+ lw $t0 -308($fp)
+ beqz $t0 while335_end
+ sw $t0 -308($fp)
+while335_body:
+ lw $t0 -300($fp)
+ move $t0 $s5
+ sw $t0 -300($fp)
+ lw $t0 -300($fp)
+ move $s5 $t0
+ sw $t0 -300($fp)
+ lw $t0 -296($fp)
+ lw $t0 0($s5)
+ sw $t0 -296($fp)
+ lw $t0 -276($fp)
+ lw $t1 -296($fp)
+ lw $t0 0($t1)
+ sw $t1 -296($fp)
+ sw $t0 -276($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -276($fp)
+ lw $t1 -276($fp)
+ jalr $t1
+ sw $t1 -276($fp)
+ sw $t0 -276($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -288($fp)
+ move $t0 $v0
+ sw $t0 -288($fp)
+ lw $t0 -272($fp)
+ lw $t1 -288($fp)
+ move $t0 $t1
+ sw $t1 -288($fp)
+ sw $t0 -272($fp)
+ lw $t0 -292($fp)
+ lw $t1 -272($fp)
+ move $t0 $t1
+ sw $t1 -272($fp)
+ sw $t0 -292($fp)
+ lw $t0 -280($fp)
+ move $t0 $s7
+ sw $t0 -280($fp)
+ lw $t0 -168($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -168($fp)
+ lw $t0 -284($fp)
+ lw $t1 -280($fp)
+ lw $t2 -168($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -168($fp)
+ sw $t1 -280($fp)
+ sw $t0 -284($fp)
+ lw $t0 -164($fp)
+ lw $t1 -284($fp)
+ move $t0 $t1
+ sw $t1 -284($fp)
+ sw $t0 -164($fp)
+ lw $t0 -128($fp)
+ lw $t1 -164($fp)
+ move $t0 $t1
+ sw $t1 -164($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ beqz $t0 if344_else
+ sw $t0 -128($fp)
+if344_body:
+ lw $t0 -148($fp)
+ move $t0 $s5
+ sw $t0 -148($fp)
+ lw $t0 -148($fp)
+ move $s5 $t0
+ sw $t0 -148($fp)
+ lw $t0 -160($fp)
+ lw $t0 0($s5)
+ sw $t0 -160($fp)
+ lw $t0 -156($fp)
+ lw $t1 -160($fp)
+ lw $t0 0($t1)
+ sw $t1 -160($fp)
+ sw $t0 -156($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -156($fp)
+ lw $t1 -156($fp)
+ jalr $t1
+ sw $t1 -156($fp)
+ sw $t0 -156($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -152($fp)
+ move $t0 $v0
+ sw $t0 -152($fp)
+ lw $t0 -136($fp)
+ lw $t1 -152($fp)
+ move $t0 $t1
+ sw $t1 -152($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 if349_else
+ sw $t0 -132($fp)
+if349_body:
+ lw $t0 -144($fp)
+ move $t0 $s5
+ sw $t0 -144($fp)
+ lw $t0 -140($fp)
+ lw $t1 -144($fp)
+ move $t0 $t1
+ sw $t1 -144($fp)
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s4 $t0
+ sw $t0 -140($fp)
+ lw $t0 -372($fp)
+ move $t0 $s5
+ sw $t0 -372($fp)
+ lw $t0 -372($fp)
+ move $s5 $t0
+ sw $t0 -372($fp)
+ lw $t5 0($s5)
+ lw $t0 -108($fp)
+ lw $t0 0($t5)
+ sw $t0 -108($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -108($fp)
+ lw $t1 -108($fp)
+ jalr $t1
+ sw $t1 -108($fp)
+ sw $t0 -108($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -124($fp)
+ move $t0 $v0
+ sw $t0 -124($fp)
+ lw $t0 -104($fp)
+ lw $t1 -124($fp)
+ move $t0 $t1
+ sw $t1 -124($fp)
+ sw $t0 -104($fp)
+ lw $t0 -104($fp)
+ move $s5 $t0
+ sw $t0 -104($fp)
+ j if349_end
+if349_else:
+ lw $t0 -116($fp)
+ li $t0 0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t1 -116($fp)
+ move $t0 $t1
+ sw $t1 -116($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ move $s3 $t0
+ sw $t0 -112($fp)
+if349_end:
+ j if344_end
+if344_else:
+ lw $t0 -88($fp)
+ lw $t1 -292($fp)
+ move $t0 $t1
+ sw $t1 -292($fp)
+ sw $t0 -88($fp)
+ lw $t0 -100($fp)
+ move $t0 $s7
+ sw $t0 -100($fp)
+ lw $t0 -92($fp)
+ lw $t1 -88($fp)
+ lw $t2 -100($fp)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t0 $a0 $t9
+ sw $t2 -100($fp)
+ sw $t1 -88($fp)
+ sw $t0 -92($fp)
+ lw $t0 -96($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -96($fp)
+ lw $t0 -188($fp)
+ lw $t1 -96($fp)
+ move $t0 $t1
+ sw $t1 -96($fp)
+ sw $t0 -188($fp)
+ lw $t0 -188($fp)
+ beqz $t0 if364_else
+ sw $t0 -188($fp)
+if364_body:
+ move $s2 $s5
+ move $s5 $s2
+ lw $s2 0($s5)
+ lw $t3 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $t3 $s2
+ move $s2 $t3
+ beqz $s2 if369_else
+if369_body:
+ move $s2 $s5
+ move $t3 $s2
+ move $s4 $t3
+ move $t3 $s5
+ move $s5 $t3
+ lw $t3 0($s5)
+ lw $s2 0($t3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s2 $t3
+ move $s5 $s2
+ j if369_end
+if369_else:
+ li $s2 0
+ move $t3 $s2
+ move $s3 $t3
+if369_end:
+ j if364_end
+if364_else:
+ lw $t0 -184($fp)
+ move $t0 $s1
+ sw $t0 -184($fp)
+ lw $t0 -180($fp)
+ lw $t1 -184($fp)
+ move $t0 $t1
+ sw $t1 -184($fp)
+ sw $t0 -180($fp)
+ lw $t0 -176($fp)
+ lw $t1 -180($fp)
+ move $t0 $t1
+ sw $t1 -180($fp)
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if384_else
+ sw $t0 -176($fp)
+if384_body:
+ lw $t0 -232($fp)
+ move $t0 $s5
+ sw $t0 -232($fp)
+ lw $t0 -232($fp)
+ move $s5 $t0
+ sw $t0 -232($fp)
+ lw $t0 -244($fp)
+ lw $t0 0($s5)
+ sw $t0 -244($fp)
+ lw $t0 -240($fp)
+ lw $t1 -244($fp)
+ lw $t0 0($t1)
+ sw $t1 -244($fp)
+ sw $t0 -240($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -240($fp)
+ lw $t1 -240($fp)
+ jalr $t1
+ sw $t1 -240($fp)
+ sw $t0 -240($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -236($fp)
+ move $t0 $v0
+ sw $t0 -236($fp)
+ lw $t0 -260($fp)
+ lw $t1 -236($fp)
+ move $t0 $t1
+ sw $t1 -236($fp)
+ sw $t0 -260($fp)
+ lw $t0 -248($fp)
+ lw $t1 -260($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -260($fp)
+ sw $t0 -248($fp)
+ lw $t0 -256($fp)
+ lw $t1 -248($fp)
+ move $t0 $t1
+ sw $t1 -248($fp)
+ sw $t0 -256($fp)
+ lw $t0 -252($fp)
+ move $t0 $s5
+ sw $t0 -252($fp)
+ lw $t0 -252($fp)
+ move $s5 $t0
+ sw $t0 -252($fp)
+ lw $t0 -212($fp)
+ lw $t0 0($s5)
+ sw $t0 -212($fp)
+ lw $t0 -208($fp)
+ lw $t1 -212($fp)
+ lw $t0 0($t1)
+ sw $t1 -212($fp)
+ sw $t0 -208($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -208($fp)
+ lw $t1 -208($fp)
+ jalr $t1
+ sw $t1 -208($fp)
+ sw $t0 -208($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -264($fp)
+ move $t0 $v0
+ sw $t0 -264($fp)
+ lw $t0 -196($fp)
+ lw $t1 -264($fp)
+ move $t0 $t1
+ sw $t1 -264($fp)
+ sw $t0 -196($fp)
+ lw $t0 -268($fp)
+ lw $t1 -196($fp)
+ move $a0 $t1
+ li $t9 0
+NULL $t0 $a0 $t9
+ sw $t1 -196($fp)
+ sw $t0 -268($fp)
+ lw $t0 -192($fp)
+ lw $t1 -268($fp)
+ move $t0 $t1
+ sw $t1 -268($fp)
+ sw $t0 -192($fp)
+ lw $t0 -204($fp)
+ lw $t1 -256($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -256($fp)
+ sw $t0 -204($fp)
+ lw $t0 -200($fp)
+ lw $t1 -192($fp)
+ li $a0 1
+ move $t9 $t1
+NULL $t0 $a0 $t9
+ sw $t1 -192($fp)
+ sw $t0 -200($fp)
+ lw $t0 -172($fp)
+ lw $t1 -204($fp)
+ lw $t2 -200($fp)
+ move $a0 $t1
+ move $t9 $t2
+NULL $t0 $a0 $t9
+ sw $t2 -200($fp)
+ sw $t1 -204($fp)
+ sw $t0 -172($fp)
+ lw $t0 -220($fp)
+ lw $t1 -172($fp)
+ move $t0 $t1
+ sw $t1 -172($fp)
+ sw $t0 -220($fp)
+ lw $t0 -216($fp)
+ lw $t1 -220($fp)
+ move $t0 $t1
+ sw $t1 -220($fp)
+ sw $t0 -216($fp)
+ lw $t0 -216($fp)
+ beqz $t0 if387_else
+ sw $t0 -216($fp)
+if387_body:
+ lw $t0 -224($fp)
+ li $t0 1
+ sw $t0 -224($fp)
+ lw $t0 -332($fp)
+ lw $t1 -224($fp)
+ move $t0 $t1
+ sw $t1 -224($fp)
+ sw $t0 -332($fp)
+ lw $t0 -228($fp)
+ lw $t1 -332($fp)
+ move $t0 $t1
+ sw $t1 -332($fp)
+ sw $t0 -228($fp)
+ j if387_end
+if387_else:
+ lw $t0 -336($fp)
+ move $t0 $s6
+ sw $t0 -336($fp)
+ lw $t0 -320($fp)
+ lw $t0 0($s6)
+ sw $t0 -320($fp)
+ lw $t0 -316($fp)
+ move $t0 $s4
+ sw $t0 -316($fp)
+ lw $t0 -328($fp)
+ lw $t1 -316($fp)
+ move $t0 $t1
+ sw $t1 -316($fp)
+ sw $t0 -328($fp)
+ lw $t0 -324($fp)
+ move $t0 $s5
+ sw $t0 -324($fp)
+ lw $t0 -348($fp)
+ lw $t1 -324($fp)
+ move $t0 $t1
+ sw $t1 -324($fp)
+ sw $t0 -348($fp)
+ lw $t0 -320($fp)
+ lw $t1 -320($fp)
+ lw $t0 0($t1)
+ sw $t1 -320($fp)
+ sw $t0 -320($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ lw $t0 -328($fp)
+ move $a1 $t0
+ sw $t0 -328($fp)
+ lw $t0 -348($fp)
+ move $a2 $t0
+ sw $t0 -348($fp)
+ lw $t0 -320($fp)
+ lw $t1 -320($fp)
+ jalr $t1
+ sw $t1 -320($fp)
+ sw $t0 -320($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -340($fp)
+ move $t0 $v0
+ sw $t0 -340($fp)
+ lw $t0 -344($fp)
+ lw $t1 -340($fp)
+ move $t0 $t1
+ sw $t1 -340($fp)
+ sw $t0 -344($fp)
+ lw $t0 -228($fp)
+ lw $t1 -344($fp)
+ move $t0 $t1
+ sw $t1 -344($fp)
+ sw $t0 -228($fp)
+if387_end:
+ j if384_end
+if384_else:
+ lw $t0 -120($fp)
+ move $t0 $s6
+ sw $t0 -120($fp)
+ lw $t7 0($s6)
+ move $t6 $s4
+ move $t4 $t6
+ lw $t0 -368($fp)
+ move $t0 $s5
+ sw $t0 -368($fp)
+ lw $t0 -72($fp)
+ lw $t1 -368($fp)
+ move $t0 $t1
+ sw $t1 -368($fp)
+ sw $t0 -72($fp)
+ lw $t7 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $t4
+ lw $t0 -72($fp)
+ move $a2 $t0
+ sw $t0 -72($fp)
+ jalr $t7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -360($fp)
+ move $t0 $v0
+ sw $t0 -360($fp)
+ lw $t0 -76($fp)
+ lw $t1 -360($fp)
+ move $t0 $t1
+ sw $t1 -360($fp)
+ sw $t0 -76($fp)
+ lw $t0 -228($fp)
+ lw $t1 -76($fp)
+ move $t0 $t1
+ sw $t1 -76($fp)
+ sw $t0 -228($fp)
+if384_end:
+ lw $t0 -80($fp)
+ li $t0 1
+ sw $t0 -80($fp)
+ lw $t0 -84($fp)
+ lw $t1 -80($fp)
+ move $t0 $t1
+ sw $t1 -80($fp)
+ sw $t0 -84($fp)
+ lw $t0 -68($fp)
+ lw $t1 -84($fp)
+ move $t0 $t1
+ sw $t1 -84($fp)
+ sw $t0 -68($fp)
+ lw $t0 -364($fp)
+ li $t0 0
+ sw $t0 -364($fp)
+ lw $t0 -352($fp)
+ lw $t1 -364($fp)
+ move $t0 $t1
+ sw $t1 -364($fp)
+ sw $t0 -352($fp)
+ lw $t0 -352($fp)
+ move $s3 $t0
+ sw $t0 -352($fp)
+if364_end:
+if344_end:
+ lw $t0 -356($fp)
+ li $t0 0
+ sw $t0 -356($fp)
+ lw $t0 -312($fp)
+ lw $t1 -356($fp)
+ move $t0 $t1
+ sw $t1 -356($fp)
+ sw $t0 -312($fp)
+ lw $t0 -312($fp)
+ move $s1 $t0
+ sw $t0 -312($fp)
+ j while335_test
+while335_end:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ move $t5 $t4
+ move $t4 $t5
+ move $v0 $t4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 372
+ jr $ra
+Tree_Remove:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s4 $s3
+ beqz $s4 if433_else
+if433_body:
+ move $s4 $s5
+ lw $s4 0($s5)
+ move $s3 $s6
+ move $s2 $s3
+ move $s3 $s7
+ move $s1 $s3
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s2
+ move $a2 $s1
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s1 $s3
+ move $s3 $s1
+ j if433_end
+if433_else:
+ move $s1 $s7
+ move $s7 $s1
+ lw $s1 0($s7)
+ lw $s2 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $s2 $s1
+ move $s1 $s2
+ beqz $s1 if447_else
+if447_body:
+ move $s1 $s5
+ lw $s1 0($s5)
+ move $s2 $s6
+ move $s4 $s2
+ move $s2 $s7
+ move $s0 $s2
+ lw $s1 0($s1)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s4
+ move $a2 $s0
+ jalr $s1
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s0 $s2
+ move $s3 $s0
+ j if447_end
+if447_else:
+ move $s0 $s7
+ move $s7 $s0
+ lw $s0 0($s7)
+ lw $s2 0($s0)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s2 $s0
+ move $s0 $s2
+ move $s2 $s6
+ move $s6 $s2
+ lw $s2 0($s6)
+ lw $s7 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s7 $s2
+ move $s2 $s7
+ move $s7 $s2
+ lw $s2 0($s7)
+ lw $s4 0($s2)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s4 $s2
+ move $s2 $s4
+ move $s4 $s5
+ lw $s4 0($s5)
+ move $s7 $s0
+ move $s0 $s7
+ move $s7 $s2
+ move $s2 $s7
+ lw $s4 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s0
+ move $a2 $s2
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s2 $s7
+ move $s7 $s2
+ beqz $s7 if477_else
+if477_body:
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s2 0($s7)
+ lw $s7 0($s5)
+ move $s0 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s0
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s0 $s7
+ move $s3 $s0
+ move $s0 $s6
+ move $s6 $s0
+ lw $s0 0($s6)
+ lw $s7 0($s0)
+ li $s0 0
+ move $s2 $s0
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s2
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s2 $s0
+ move $s3 $s2
+ j if477_end
+if477_else:
+ move $s2 $s6
+ move $s6 $s2
+ lw $s2 0($s6)
+ lw $s0 0($s2)
+ lw $s2 0($s5)
+ move $s5 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ jalr $s0
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s5 $s2
+ move $s3 $s5
+ move $s5 $s6
+ move $s6 $s5
+ lw $s5 0($s6)
+ lw $s2 0($s5)
+ li $s5 0
+ move $s0 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s0
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s0 $s5
+ move $s3 $s0
+if477_end:
+if447_end:
+if433_end:
+ li $s0 1
+ move $s3 $s0
+ move $s0 $s3
+ move $v0 $s0
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_RemoveRight:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 144
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -72($fp)
+ sw $a1 -68($fp)
+ move $s7 $a2
+while517_test:
+ move $s4 $s7
+ move $s7 $s4
+ lw $t0 -128($fp)
+ lw $t0 0($s7)
+ sw $t0 -128($fp)
+ lw $t0 -124($fp)
+ lw $t1 -128($fp)
+ lw $t0 0($t1)
+ sw $t1 -128($fp)
+ sw $t0 -124($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -124($fp)
+ lw $t1 -124($fp)
+ jalr $t1
+ sw $t1 -124($fp)
+ sw $t0 -124($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -136($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 while517_end
+ sw $t0 -132($fp)
+while517_body:
+ lw $t0 -96($fp)
+ move $t0 $s7
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ move $s7 $t0
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t0 0($s7)
+ sw $t0 -108($fp)
+ lw $t0 -104($fp)
+ lw $t1 -108($fp)
+ lw $t0 0($t1)
+ sw $t1 -108($fp)
+ sw $t0 -104($fp)
+ lw $t0 -92($fp)
+ move $t0 $s7
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s7 $t0
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t0 0($s7)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ lw $s6 0($t0)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -80($fp)
+ move $t0 $v0
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $t3 $t0
+ sw $t0 -80($fp)
+ move $s5 $t3
+ move $t6 $s5
+ lw $t7 0($t6)
+ lw $t4 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $t6
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -84($fp)
+ move $t0 $v0
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $t5 $t0
+ sw $t0 -84($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $t5
+ lw $t0 -104($fp)
+ lw $t1 -104($fp)
+ jalr $t1
+ sw $t1 -104($fp)
+ sw $t0 -104($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -140($fp)
+ move $t0 $v0
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s2 $t0
+ sw $t0 -140($fp)
+ lw $t0 -144($fp)
+ move $t0 $s2
+ sw $t0 -144($fp)
+ move $s3 $s7
+ move $s0 $s3
+ lw $t0 -68($fp)
+ move $t0 $s0
+ sw $t0 -68($fp)
+ lw $t0 -116($fp)
+ move $t0 $s7
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ move $s7 $t0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t0 0($s7)
+ sw $t0 -112($fp)
+ lw $t0 -76($fp)
+ lw $t1 -112($fp)
+ lw $t0 0($t1)
+ sw $t1 -112($fp)
+ sw $t0 -76($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -76($fp)
+ lw $t1 -76($fp)
+ jalr $t1
+ sw $t1 -76($fp)
+ sw $t0 -76($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ lw $t0 -100($fp)
+ move $t0 $s1
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s7 $t0
+ sw $t0 -100($fp)
+ j while517_test
+while517_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $s5
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s5 0($t0)
+ sw $t0 -68($fp)
+ lw $s6 0($s5)
+ lw $t0 -72($fp)
+ lw $s5 0($t0)
+ sw $t0 -72($fp)
+ move $t3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $t3
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $t3 $s5
+ lw $t0 -144($fp)
+ move $t0 $t3
+ sw $t0 -144($fp)
+ lw $t0 -68($fp)
+ move $t3 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $t3
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $t3 0($t0)
+ sw $t0 -68($fp)
+ lw $s5 0($t3)
+ li $t3 0
+ move $s6 $t3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s6 $t3
+ lw $t0 -144($fp)
+ move $t0 $s6
+ sw $t0 -144($fp)
+ li $s6 1
+ move $t3 $s6
+ move $s6 $t3
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 144
+ jr $ra
+Tree_RemoveLeft:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 144
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ sw $a0 -72($fp)
+ sw $a1 -68($fp)
+ move $s7 $a2
+while564_test:
+ move $s4 $s7
+ move $s7 $s4
+ lw $t0 -128($fp)
+ lw $t0 0($s7)
+ sw $t0 -128($fp)
+ lw $t0 -124($fp)
+ lw $t1 -128($fp)
+ lw $t0 0($t1)
+ sw $t1 -128($fp)
+ sw $t0 -124($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -124($fp)
+ lw $t1 -124($fp)
+ jalr $t1
+ sw $t1 -124($fp)
+ sw $t0 -124($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -120($fp)
+ move $t0 $v0
+ sw $t0 -120($fp)
+ lw $t0 -136($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -136($fp)
+ lw $t0 -132($fp)
+ lw $t1 -136($fp)
+ move $t0 $t1
+ sw $t1 -136($fp)
+ sw $t0 -132($fp)
+ lw $t0 -132($fp)
+ beqz $t0 while564_end
+ sw $t0 -132($fp)
+while564_body:
+ lw $t0 -96($fp)
+ move $t0 $s7
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ move $s7 $t0
+ sw $t0 -96($fp)
+ lw $t0 -108($fp)
+ lw $t0 0($s7)
+ sw $t0 -108($fp)
+ lw $t0 -104($fp)
+ lw $t1 -108($fp)
+ lw $t0 0($t1)
+ sw $t1 -108($fp)
+ sw $t0 -104($fp)
+ lw $t0 -92($fp)
+ move $t0 $s7
+ sw $t0 -92($fp)
+ lw $t0 -92($fp)
+ move $s7 $t0
+ sw $t0 -92($fp)
+ lw $t0 -88($fp)
+ lw $t0 0($s7)
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ lw $s6 0($t0)
+ sw $t0 -88($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -80($fp)
+ move $t0 $v0
+ sw $t0 -80($fp)
+ lw $t0 -80($fp)
+ move $t3 $t0
+ sw $t0 -80($fp)
+ move $s5 $t3
+ move $t6 $s5
+ lw $t7 0($t6)
+ lw $t4 0($t7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $t6
+ jalr $t4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -84($fp)
+ move $t0 $v0
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $t5 $t0
+ sw $t0 -84($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $t5
+ lw $t0 -104($fp)
+ lw $t1 -104($fp)
+ jalr $t1
+ sw $t1 -104($fp)
+ sw $t0 -104($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -140($fp)
+ move $t0 $v0
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s2 $t0
+ sw $t0 -140($fp)
+ lw $t0 -144($fp)
+ move $t0 $s2
+ sw $t0 -144($fp)
+ move $s3 $s7
+ move $s0 $s3
+ lw $t0 -68($fp)
+ move $t0 $s0
+ sw $t0 -68($fp)
+ lw $t0 -116($fp)
+ move $t0 $s7
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ move $s7 $t0
+ sw $t0 -116($fp)
+ lw $t0 -112($fp)
+ lw $t0 0($s7)
+ sw $t0 -112($fp)
+ lw $t0 -76($fp)
+ lw $t1 -112($fp)
+ lw $t0 0($t1)
+ sw $t1 -112($fp)
+ sw $t0 -76($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ lw $t0 -76($fp)
+ lw $t1 -76($fp)
+ jalr $t1
+ sw $t1 -76($fp)
+ sw $t0 -76($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ lw $t0 -100($fp)
+ move $t0 $s1
+ sw $t0 -100($fp)
+ lw $t0 -100($fp)
+ move $s7 $t0
+ sw $t0 -100($fp)
+ j while564_test
+while564_end:
+ lw $t0 -68($fp)
+ move $s5 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $s5
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $s5 0($t0)
+ sw $t0 -68($fp)
+ lw $s6 0($s5)
+ lw $t0 -72($fp)
+ lw $s5 0($t0)
+ sw $t0 -72($fp)
+ move $t3 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $t3
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $t3 $s5
+ lw $t0 -144($fp)
+ move $t0 $t3
+ sw $t0 -144($fp)
+ lw $t0 -68($fp)
+ move $t3 $t0
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ move $t0 $t3
+ sw $t0 -68($fp)
+ lw $t0 -68($fp)
+ lw $t3 0($t0)
+ sw $t0 -68($fp)
+ lw $s5 0($t3)
+ li $t3 0
+ move $s6 $t3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ lw $t0 -68($fp)
+ move $a0 $t0
+ sw $t0 -68($fp)
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $t3 $v0
+ move $s6 $t3
+ lw $t0 -144($fp)
+ move $t0 $s6
+ sw $t0 -144($fp)
+ li $s6 1
+ move $t3 $s6
+ move $s6 $t3
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 144
+ jr $ra
+Tree_Search:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 180
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ li $s6 1
+ move $s4 $s6
+ move $s6 $s4
+ li $s4 0
+ move $s3 $s4
+ lw $t0 -68($fp)
+ move $t0 $s3
+ sw $t0 -68($fp)
+while617_test:
+ move $s3 $s6
+ lw $t0 -156($fp)
+ move $t0 $s3
+ sw $t0 -156($fp)
+ lw $t0 -116($fp)
+ lw $t1 -156($fp)
+ move $t0 $t1
+ sw $t1 -156($fp)
+ sw $t0 -116($fp)
+ lw $t0 -116($fp)
+ beqz $t0 while617_end
+ sw $t0 -116($fp)
+while617_body:
+ lw $t0 -124($fp)
+ move $t0 $s5
+ sw $t0 -124($fp)
+ lw $t0 -124($fp)
+ move $s5 $t0
+ sw $t0 -124($fp)
+ lw $t0 -84($fp)
+ lw $t0 0($s5)
+ sw $t0 -84($fp)
+ lw $t0 -80($fp)
+ lw $t1 -84($fp)
+ lw $t0 0($t1)
+ sw $t1 -84($fp)
+ sw $t0 -80($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -80($fp)
+ lw $t1 -80($fp)
+ jalr $t1
+ sw $t1 -80($fp)
+ sw $t0 -80($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -132($fp)
+ move $t0 $v0
+ sw $t0 -132($fp)
+ lw $t0 -92($fp)
+ lw $t1 -132($fp)
+ move $t0 $t1
+ sw $t1 -132($fp)
+ sw $t0 -92($fp)
+ lw $t0 -100($fp)
+ lw $t1 -92($fp)
+ move $t0 $t1
+ sw $t1 -92($fp)
+ sw $t0 -100($fp)
+ move $t4 $s7
+ lw $t0 -76($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -76($fp)
+ lw $t0 -180($fp)
+ lw $t1 -76($fp)
+ move $a0 $t4
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -76($fp)
+ sw $t0 -180($fp)
+ lw $t0 -72($fp)
+ lw $t1 -180($fp)
+ move $t0 $t1
+ sw $t1 -180($fp)
+ sw $t0 -72($fp)
+ lw $t0 -72($fp)
+ move $t7 $t0
+ sw $t0 -72($fp)
+ beqz $t7 if626_else
+if626_body:
+ move $t5 $s5
+ move $s5 $t5
+ lw $t6 0($s5)
+ lw $t0 -172($fp)
+ lw $t0 0($t6)
+ sw $t0 -172($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -172($fp)
+ lw $t1 -172($fp)
+ jalr $t1
+ sw $t1 -172($fp)
+ sw $t0 -172($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ lw $t0 -168($fp)
+ move $t0 $s0
+ sw $t0 -168($fp)
+ lw $t0 -96($fp)
+ lw $t1 -168($fp)
+ move $t0 $t1
+ sw $t1 -168($fp)
+ sw $t0 -96($fp)
+ lw $t0 -96($fp)
+ beqz $t0 if631_else
+ sw $t0 -96($fp)
+if631_body:
+ lw $t0 -144($fp)
+ move $t0 $s5
+ sw $t0 -144($fp)
+ lw $t0 -144($fp)
+ move $s5 $t0
+ sw $t0 -144($fp)
+ lw $t0 -164($fp)
+ lw $t0 0($s5)
+ sw $t0 -164($fp)
+ lw $t0 -152($fp)
+ lw $t1 -164($fp)
+ lw $t0 0($t1)
+ sw $t1 -164($fp)
+ sw $t0 -152($fp)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ lw $t0 -152($fp)
+ lw $t1 -152($fp)
+ jalr $t1
+ sw $t1 -152($fp)
+ sw $t0 -152($fp)
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ lw $t0 -148($fp)
+ move $t0 $v0
+ sw $t0 -148($fp)
+ lw $t0 -112($fp)
+ lw $t1 -148($fp)
+ move $t0 $t1
+ sw $t1 -148($fp)
+ sw $t0 -112($fp)
+ lw $t0 -112($fp)
+ move $s5 $t0
+ sw $t0 -112($fp)
+ j if631_end
+if631_else:
+ lw $t0 -104($fp)
+ li $t0 0
+ sw $t0 -104($fp)
+ lw $t0 -136($fp)
+ lw $t1 -104($fp)
+ move $t0 $t1
+ sw $t1 -104($fp)
+ sw $t0 -136($fp)
+ lw $t0 -136($fp)
+ move $s6 $t0
+ sw $t0 -136($fp)
+if631_end:
+ j if626_end
+if626_else:
+ lw $t0 -88($fp)
+ lw $t1 -100($fp)
+ move $t0 $t1
+ sw $t1 -100($fp)
+ sw $t0 -88($fp)
+ move $s1 $s7
+ lw $t0 -128($fp)
+ lw $t1 -88($fp)
+ move $a0 $t1
+ move $t9 $s1
+ slt $t0 $a0 $t9
+ sw $t1 -88($fp)
+ sw $t0 -128($fp)
+ lw $t0 -128($fp)
+ move $s2 $t0
+ sw $t0 -128($fp)
+ lw $t0 -176($fp)
+ move $t0 $s2
+ sw $t0 -176($fp)
+ lw $t0 -176($fp)
+ beqz $t0 if644_else
+ sw $t0 -176($fp)
+if644_body:
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $t3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $t3 $s4
+ move $s4 $t3
+ beqz $s4 if649_else
+if649_body:
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $t3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $t3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $t3 $s4
+ move $s5 $t3
+ j if649_end
+if649_else:
+ li $t3 0
+ move $s4 $t3
+ move $s6 $s4
+if649_end:
+ j if644_end
+if644_else:
+ lw $t0 -160($fp)
+ li $t0 1
+ sw $t0 -160($fp)
+ lw $t0 -120($fp)
+ lw $t1 -160($fp)
+ move $t0 $t1
+ sw $t1 -160($fp)
+ sw $t0 -120($fp)
+ lw $t0 -68($fp)
+ lw $t1 -120($fp)
+ move $t0 $t1
+ sw $t1 -120($fp)
+ sw $t0 -68($fp)
+ lw $t0 -108($fp)
+ li $t0 0
+ sw $t0 -108($fp)
+ lw $t0 -140($fp)
+ lw $t1 -108($fp)
+ move $t0 $t1
+ sw $t1 -108($fp)
+ sw $t0 -140($fp)
+ lw $t0 -140($fp)
+ move $s6 $t0
+ sw $t0 -140($fp)
+if644_end:
+if626_end:
+ j while617_test
+while617_end:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ move $t5 $t4
+ move $t4 $t5
+ move $v0 $t4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 180
+ jr $ra
+Tree_Print:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $s6 $s7
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s7
+ lw $s5 0($s7)
+ move $s4 $s6
+ move $s6 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s4 $s6
+ li $s4 1
+ move $s6 $s4
+ move $s4 $s6
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_RecPrint:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ beqz $s5 if680_else
+if680_body:
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s7)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s3
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ move $s4 $s3
+ j if680_end
+if680_else:
+ li $s3 1
+ move $s5 $s3
+ move $s4 $s5
+if680_end:
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ move $a0 $s5
+ jal _print
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s3 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s3 $s5
+ move $s5 $s3
+ beqz $s5 if703_else
+if703_body:
+ move $s5 $s6
+ lw $s5 0($s6)
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ lw $s5 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s2
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s4 $s2
+ j if703_end
+if703_else:
+ li $s2 1
+ move $s3 $s2
+ move $s4 $s3
+if703_end:
+ li $s3 1
+ move $s4 $s3
+ move $s3 $s4
+ move $v0 $s3
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Tree_accept:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ li $s7 333
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s4 0($s7)
+ move $s7 $s5
+ move $s5 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ li $s7 0
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Visitor_visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ beqz $s5 if736_else
+if736_body:
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ sw $s4 0($s6)
+ lw $s4 0($s6)
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s3 0($s4)
+ move $s4 $s6
+ move $s2 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s2
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s2 $s4
+ move $s4 $s2
+ j if736_end
+if736_else:
+ li $s2 0
+ move $s3 $s2
+ move $s4 $s3
+if736_end:
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s3 $s2
+ beqz $s3 if756_else
+if756_body:
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ sw $s2 0($s6)
+ lw $s2 0($s6)
+ move $s3 $s2
+ lw $s2 0($s3)
+ lw $s7 0($s2)
+ move $s2 $s6
+ move $s6 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s3
+ move $a1 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s6 $s2
+ move $s4 $s6
+ j if756_end
+if756_else:
+ li $s6 0
+ move $s2 $s6
+ move $s4 $s2
+if756_end:
+ li $s2 0
+ move $s4 $s2
+ move $s2 $s4
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+MyVisitor_visit:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ beqz $s5 if779_else
+if779_body:
+ move $s5 $s7
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ sw $s4 0($s6)
+ lw $s4 0($s6)
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s3 0($s4)
+ move $s4 $s6
+ move $s2 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ move $a1 $s2
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s2 $s4
+ move $s4 $s2
+ j if779_end
+if779_else:
+ li $s2 0
+ move $s3 $s2
+ move $s4 $s3
+if779_end:
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s3 $s2
+ move $a0 $s3
+ jal _print
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s3 $s2
+ beqz $s3 if805_else
+if805_body:
+ move $s3 $s7
+ move $s7 $s3
+ lw $s3 0($s7)
+ lw $s2 0($s3)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ sw $s2 0($s6)
+ lw $s2 0($s6)
+ move $s3 $s2
+ lw $s2 0($s3)
+ lw $s7 0($s2)
+ move $s2 $s6
+ move $s6 $s2
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s3
+ move $a1 $s6
+ jalr $s7
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s2 $v0
+ move $s6 $s2
+ move $s4 $s6
+ j if805_end
+if805_else:
+ li $s6 0
+ move $s2 $s6
+ move $s4 $s2
+if805_end:
+ li $s2 0
+ move $s4 $s2
+ move $s2 $s4
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/TreeVisitor.vaporm b/output/TreeVisitor.vaporm
index df4e39f..65d494d 100644
--- a/output/TreeVisitor.vaporm
+++ b/output/TreeVisitor.vaporm
@@ -39,15 +39,16 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_TV
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -55,9 +56,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s5 = $s7
- PrintIntS($s5 )
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -80,10 +82,14 @@ func TV_Start [in 0, out 0, local 14]
$s6 = HeapAllocZ(108 )
[$s6+0] = :functable_Tree
$s7 = $s6
- $s7 = $s7
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
$s6 = [$s7+0]
$s5 = [$s6+0]
$s6 = 16
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -91,7 +97,7 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s6
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -99,9 +105,11 @@ func TV_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s6 = $v0
+ $s4 = $s6
$s6 = $s4
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s5 = [$s4+72]
local[8] = $t3
@@ -119,13 +127,18 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s6 = $s4
- $s4 = 100000000
- PrintIntS($s4 )
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+48]
- $s4 = 8
+ $s5 = $s4
+ $s6 = $s5
+ $s5 = 100000000
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+48]
+ $s5 = 8
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -133,20 +146,23 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
- call $s5
+ $a1 = $s3
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s5 = $v0
+ $s3 = $s5
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s4 = [$s3+48]
+ $s5 = [$s3+48]
$s3 = 24
+ $s4 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -154,20 +170,23 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ $a1 = $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s6 = $s5
- $s7 = $s7
- $s5 = [$s7+0]
- $s3 = [$s5+48]
- $s5 = 4
+ $s3 = $v0
+ $s4 = $s3
+ $s6 = $s4
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
+ $s3 = [$s4+48]
+ $s4 = 4
+ $s5 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -184,11 +203,14 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+48]
- $s4 = 12
+ $s5 = $s4
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+48]
+ $s5 = 12
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -196,20 +218,23 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
- call $s5
+ $a1 = $s3
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s5 = $v0
+ $s3 = $s5
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s4 = [$s3+48]
+ $s5 = [$s3+48]
$s3 = 20
+ $s4 = $s3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -217,20 +242,23 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ $a1 = $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s6 = $s5
- $s7 = $s7
- $s5 = [$s7+0]
- $s3 = [$s5+48]
- $s5 = 28
+ $s3 = $v0
+ $s4 = $s3
+ $s6 = $s4
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
+ $s3 = [$s4+48]
+ $s4 = 28
+ $s5 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -247,11 +275,14 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+48]
- $s4 = 14
+ $s5 = $s4
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+48]
+ $s5 = 14
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -259,19 +290,21 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
- call $s5
+ $a1 = $s3
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
+ $s5 = $v0
+ $s3 = $s5
$s6 = $s3
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
- $s4 = [$s3+72]
+ $s5 = [$s3+72]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -279,7 +312,7 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -287,18 +320,27 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s3 = $v0
- $s6 = $s3
- $s3 = 100000000
- PrintIntS($s3 )
- $s3 = HeapAllocZ(16 )
- [$s3+0] = :functable_MyVisitor
- $s4 = $s3
- $s3 = 50000000
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s5 = [$s3+80]
- $s3 = $s4
+ $s5 = $s3
+ $s6 = $s5
+ $s5 = 100000000
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = HeapAllocZ(16 )
+ [$s5+0] = :functable_MyVisitor
+ $s3 = $s5
+ $s5 = $s3
+ $s3 = $s5
+ $s5 = 50000000
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+80]
+ $s5 = $s3
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -307,21 +349,26 @@ func TV_Start [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s7
$a1 = $s3
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s3 = $s4
- $s3 = 100000000
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s4 = [$s3+68]
- $s3 = 24
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ $s5 = 100000000
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+68]
+ $s5 = 24
+ $s4 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -329,8 +376,8 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ $a1 = $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -338,12 +385,15 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 12
$s3 = $s5
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s5 = [$s3+68]
- $s3 = 12
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -352,20 +402,23 @@ func TV_Start [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s7
$a1 = $s3
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s3 = $s4
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s4 = [$s3+68]
- $s3 = 16
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+68]
+ $s5 = 16
+ $s4 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -373,8 +426,8 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ $a1 = $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -382,12 +435,15 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 50
$s3 = $s5
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s5 = [$s3+68]
- $s3 = 50
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -396,20 +452,23 @@ func TV_Start [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s7
$a1 = $s3
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s3 = $s4
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s4 = [$s3+68]
- $s3 = 12
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+68]
+ $s5 = 12
+ $s4 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -417,8 +476,8 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s3
- call $s4
+ $a1 = $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -426,12 +485,15 @@ func TV_Start [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
+ $s4 = $s5
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+52]
+ $s5 = 12
$s3 = $s5
- PrintIntS($s3 )
- $s7 = $s7
- $s3 = [$s7+0]
- $s5 = [$s3+52]
- $s3 = 12
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -440,18 +502,20 @@ func TV_Start [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s7
$a1 = $s3
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s3 = [$s4+72]
+ $s5 = $v0
+ $s3 = $s5
+ $s6 = $s3
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s5 = [$s3+72]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -459,19 +523,22 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s6 = $s4
- $s7 = $s7
- $s4 = [$s7+0]
- $s6 = [$s4+68]
- $s4 = 12
+ $s3 = $v0
+ $s5 = $s3
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 12
+ $s3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -479,7 +546,7 @@ func TV_Start [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s4
+ $a1 = $s3
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -487,11 +554,14 @@ func TV_Start [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s4 = $s3
- PrintIntS($s4 )
- $s4 = 0
- $v0 = $s4
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = 0
+ $s3 = $s5
+ $s5 = $s3
+ $v0 = $s5
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -510,12 +580,20 @@ func Tree_Init [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+92] = $s7
- [$s6+96] = 0
- [$s6+100] = 0
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+92] = $s6
+ $s6 = 0
+ $s7 = $s6
+ [$s5+96] = $s7
+ $s7 = 0
+ $s6 = $s7
+ [$s5+100] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -535,10 +613,14 @@ func Tree_SetRight [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+88] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+88] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -558,10 +640,14 @@ func Tree_SetLeft [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+84] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+84] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -583,6 +669,8 @@ func Tree_GetRight [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+88]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -604,6 +692,8 @@ func Tree_GetLeft [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+84]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -625,6 +715,8 @@ func Tree_GetKey [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+92]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -644,10 +736,14 @@ func Tree_SetKey [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+92] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+92] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -669,6 +765,8 @@ func Tree_GetHas_Right [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+100]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -690,6 +788,8 @@ func Tree_GetHas_Left [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+96]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -709,10 +809,14 @@ func Tree_SetHas_Left [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+96] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+96] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -732,10 +836,14 @@ func Tree_SetHas_Right [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+100] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+100] = $s6
$s6 = 1
+ $s5 = $s6
+ $s6 = $s5
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -759,34 +867,51 @@ func Tree_Compare [in 0, out 0, local 14]
$s6 = $a1
$s7 = $a2
$s4 = 0
+ $s5 = $s4
+ $s4 = $s5
$s5 = $s7
$s3 = 1
$s2 = Add($s5 $s3 )
$s3 = $s2
- $s2 = $s6
+ $s2 = $s3
+ $s3 = $s6
$s5 = $s7
- $s7 = LtS($s2 $s5 )
+ $s7 = LtS($s3 $s5 )
$s5 = $s7
- if0 $s5 goto :if105_else
-if105_body:
- $s4 = 0
- goto :if105_end
-if105_else:
+ $s7 = $s5
+ if0 $s7 goto :if216_else
+if216_body:
+ $s7 = 0
+ $s5 = $s7
+ $s4 = $s5
+ goto :if216_end
+if216_else:
$s5 = $s6
- $s6 = $s3
- $s3 = LtS($s5 $s6 )
- $s6 = Eq($s3 0 )
- $s3 = $s6
- if0 $s3 goto :if109_else
-if109_body:
- $s4 = 0
- goto :if109_end
-if109_else:
- $s4 = 1
-if109_end:
-if105_end:
- $s3 = $s4
- $v0 = $s3
+ $s6 = $s2
+ $s2 = LtS($s5 $s6 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = Eq($s6 0 )
+ $s6 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ if0 $s6 goto :if223_else
+if223_body:
+ $s6 = 0
+ $s2 = $s6
+ $s4 = $s2
+ goto :if223_end
+if223_else:
+ $s2 = 1
+ $s6 = $s2
+ $s4 = $s6
+if223_end:
+if216_end:
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -796,7 +921,7 @@ if105_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Insert [in 0, out 0, local 44]
+func Tree_Insert [in 0, out 0, local 71]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -810,10 +935,14 @@ func Tree_Insert [in 0, out 0, local 44]
$s5 = HeapAllocZ(108 )
[$s5+0] = :functable_Tree
$s4 = $s5
- $s4 = $s4
+ $s5 = $s4
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = $s5
$s5 = [$s4+0]
$s3 = [$s5+0]
$s5 = $s7
+ $s2 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -821,7 +950,7 @@ func Tree_Insert [in 0, out 0, local 44]
local[12] = $t7
local[13] = $t8
$a0 = $s4
- $a1 = $s5
+ $a1 = $s2
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -829,23 +958,43 @@ func Tree_Insert [in 0, out 0, local 44]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s5 = $v0
+ $s2 = $s5
$s5 = $s2
$s2 = $s6
+ $s6 = $s2
+ $s2 = $s6
$s6 = 1
-while120_test:
$s3 = $s6
- if0 $s3 goto :while120_end
-while120_body:
- $s2 = $s2
- $t0 = local[27]
+ $s6 = $s3
+while254_test:
+ $s3 = $s6
+ $t0 = local[53]
+ $t0 = $s3
+ local[53] = $t0
+ $t0 = local[57]
+ $t1 = local[53]
+ $t0 = $t1
+ local[53] = $t1
+ local[57] = $t0
+ $t0 = local[57]
+ if0 $t0 goto :while254_end
+ local[57] = $t0
+while254_body:
+ $t0 = local[49]
+ $t0 = $s2
+ local[49] = $t0
+ $t0 = local[49]
+ $s2 = $t0
+ local[49] = $t0
+ $t0 = local[52]
$t0 = [$s2+0]
- local[27] = $t0
- $t0 = local[33]
- $t1 = local[27]
+ local[52] = $t0
+ $t0 = local[51]
+ $t1 = local[52]
$t0 = [$t1+20]
- local[27] = $t1
- local[33] = $t0
+ local[52] = $t1
+ local[51] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -853,58 +1002,73 @@ while120_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[33]
- $t1 = local[33]
+ $t0 = local[51]
+ $t1 = local[51]
call $t1
- local[33] = $t1
- local[33] = $t0
+ local[51] = $t1
+ local[51] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[29]
+ $t0 = local[50]
$t0 = $v0
- local[29] = $t0
+ local[50] = $t0
+ $t0 = local[44]
+ $t1 = local[50]
+ $t0 = $t1
+ local[50] = $t1
+ local[44] = $t0
+ $t0 = local[56]
+ $t1 = local[44]
+ $t0 = $t1
+ local[44] = $t1
+ local[56] = $t0
+ $t0 = local[27]
+ $t0 = $s7
+ local[27] = $t0
$t0 = local[37]
- $t1 = local[29]
+ $t1 = local[56]
$t0 = $t1
- local[29] = $t1
+ local[56] = $t1
local[37] = $t0
- $t0 = local[24]
- $t0 = $s7
- local[24] = $t0
- $t0 = local[23]
- $t1 = local[37]
+ $t0 = local[43]
+ $t1 = local[27]
+ $t2 = local[37]
+ $t0 = LtS($t1 $t2 )
+ local[37] = $t2
+ local[27] = $t1
+ local[43] = $t0
+ $t0 = local[35]
+ $t1 = local[43]
$t0 = $t1
- local[37] = $t1
- local[23] = $t0
+ local[43] = $t1
+ local[35] = $t0
+ $t0 = local[41]
+ $t1 = local[35]
+ $t0 = $t1
+ local[35] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if263_else
+ local[41] = $t0
+if263_body:
$t0 = local[31]
- $t1 = local[24]
- $t2 = local[23]
- $t0 = LtS($t1 $t2 )
- local[23] = $t2
- local[24] = $t1
+ $t0 = $s2
local[31] = $t0
- $t0 = local[25]
- $t1 = local[31]
- $t0 = $t1
- local[31] = $t1
- local[25] = $t0
- $t0 = local[25]
- if0 $t0 goto :if125_else
- local[25] = $t0
-if125_body:
- $s2 = $s2
- $t0 = local[15]
+ $t0 = local[31]
+ $s2 = $t0
+ local[31] = $t0
+ $t0 = local[30]
$t0 = [$s2+0]
- local[15] = $t0
- $t0 = local[21]
- $t1 = local[15]
+ local[30] = $t0
+ $t0 = local[34]
+ $t1 = local[30]
$t0 = [$t1+32]
- local[15] = $t1
- local[21] = $t0
+ local[30] = $t1
+ local[34] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -912,34 +1076,44 @@ if125_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[21]
- $t1 = local[21]
+ $t0 = local[34]
+ $t1 = local[34]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[34] = $t1
+ local[34] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[17]
+ $t0 = local[39]
$t0 = $v0
- local[17] = $t0
- $t0 = local[19]
- $t1 = local[17]
+ local[39] = $t0
+ $t0 = local[33]
+ $t1 = local[39]
$t0 = $t1
- local[17] = $t1
- local[19] = $t0
+ local[39] = $t1
+ local[33] = $t0
+ $t0 = local[25]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[25] = $t0
+ $t0 = local[25]
+ if0 $t0 goto :if268_else
+ local[25] = $t0
+if268_body:
+ $t7 = $s2
+ $s2 = $t7
+ $t0 = local[21]
+ $t0 = [$s2+0]
+ local[21] = $t0
$t0 = local[19]
- if0 $t0 goto :if129_else
+ $t1 = local[21]
+ $t0 = [$t1+16]
+ local[21] = $t1
local[19] = $t0
-if129_body:
- $s2 = $s2
- $s1 = [$s2+0]
- $t0 = local[42]
- $t0 = [$s1+16]
- local[42] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -947,34 +1121,59 @@ if129_body:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[42]
- $t1 = local[42]
+ $t0 = local[19]
+ $t1 = local[19]
call $t1
- local[42] = $t1
- local[42] = $t0
+ local[19] = $t1
+ local[19] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
- $s2 = $t7
- goto :if129_end
-if129_else:
- $s6 = 0
- $s2 = $s2
- $t0 = local[41]
+ $t5 = $v0
+ $t0 = local[24]
+ $t0 = $t5
+ local[24] = $t0
+ $t0 = local[24]
+ $s2 = $t0
+ local[24] = $t0
+ goto :if268_end
+if268_else:
+ $t0 = local[23]
+ $t0 = 0
+ local[23] = $t0
+ $t0 = local[16]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[16] = $t0
+ $t0 = local[16]
+ $s6 = $t0
+ local[16] = $t0
+ $t0 = local[18]
+ $t0 = $s2
+ local[18] = $t0
+ $t0 = local[18]
+ $s2 = $t0
+ local[18] = $t0
+ $t0 = local[17]
$t0 = [$s2+0]
- local[41] = $t0
- $t0 = local[40]
- $t1 = local[41]
+ local[17] = $t0
+ $t0 = local[59]
+ $t1 = local[17]
$t0 = [$t1+36]
- local[41] = $t1
- local[40] = $t0
- $t0 = local[26]
+ local[17] = $t1
+ local[59] = $t0
+ $t0 = local[61]
$t0 = 1
- local[26] = $t0
+ local[61] = $t0
+ $t0 = local[60]
+ $t1 = local[61]
+ $t0 = $t1
+ local[61] = $t1
+ local[60] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -982,34 +1181,53 @@ if129_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[26]
+ $t0 = local[60]
$a1 = $t0
- local[26] = $t0
- $t0 = local[40]
- $t1 = local[40]
+ local[60] = $t0
+ $t0 = local[59]
+ $t1 = local[59]
call $t1
- local[40] = $t1
- local[40] = $t0
+ local[59] = $t1
+ local[59] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s5 = $t5
- $s2 = $s2
- $t0 = local[35]
+ $t0 = local[15]
+ $t0 = $v0
+ local[15] = $t0
+ $t0 = local[66]
+ $t1 = local[15]
+ $t0 = $t1
+ local[15] = $t1
+ local[66] = $t0
+ $t0 = local[66]
+ $s5 = $t0
+ local[66] = $t0
+ $t0 = local[68]
+ $t0 = $s2
+ local[68] = $t0
+ $t0 = local[68]
+ $s2 = $t0
+ local[68] = $t0
+ $t0 = local[67]
$t0 = [$s2+0]
- local[35] = $t0
- $t0 = local[39]
- $t1 = local[35]
+ local[67] = $t0
+ $t0 = local[63]
+ $t1 = local[67]
$t0 = [$t1+8]
- local[35] = $t1
- local[39] = $t0
- $t0 = local[38]
+ local[67] = $t1
+ local[63] = $t0
+ $t0 = local[62]
$t0 = $s4
- local[38] = $t0
+ local[62] = $t0
+ $t0 = local[64]
+ $t1 = local[62]
+ $t0 = $t1
+ local[62] = $t1
+ local[64] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1017,38 +1235,48 @@ if129_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[38]
+ $t0 = local[64]
$a1 = $t0
- local[38] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[64] = $t0
+ $t0 = local[63]
+ $t1 = local[63]
call $t1
- local[39] = $t1
- local[39] = $t0
+ local[63] = $t1
+ local[63] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[36]
+ $t0 = local[65]
$t0 = $v0
- local[36] = $t0
- $t0 = local[36]
+ local[65] = $t0
+ $t0 = local[46]
+ $t1 = local[65]
+ $t0 = $t1
+ local[65] = $t1
+ local[46] = $t0
+ $t0 = local[46]
$s5 = $t0
- local[36] = $t0
-if129_end:
- goto :if125_end
-if125_else:
- $s2 = $s2
- $t0 = local[28]
+ local[46] = $t0
+if268_end:
+ goto :if263_end
+if263_else:
+ $t0 = local[48]
+ $t0 = $s2
+ local[48] = $t0
+ $t0 = local[48]
+ $s2 = $t0
+ local[48] = $t0
+ $t0 = local[47]
$t0 = [$s2+0]
- local[28] = $t0
- $t0 = local[34]
- $t1 = local[28]
+ local[47] = $t0
+ $t0 = local[55]
+ $t1 = local[47]
$t0 = [$t1+28]
- local[28] = $t1
- local[34] = $t0
+ local[47] = $t1
+ local[55] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1056,30 +1284,36 @@ if125_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[34]
- $t1 = local[34]
+ $t0 = local[55]
+ $t1 = local[55]
call $t1
- local[34] = $t1
- local[34] = $t0
+ local[55] = $t1
+ local[55] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[30]
+ $t0 = local[45]
$t0 = $v0
- local[30] = $t0
- $t0 = local[32]
- $t1 = local[30]
+ local[45] = $t0
+ $t0 = local[54]
+ $t1 = local[45]
$t0 = $t1
- local[30] = $t1
- local[32] = $t0
- $t0 = local[32]
- if0 $t0 goto :if144_else
- local[32] = $t0
-if144_body:
- $s2 = $s2
+ local[45] = $t1
+ local[54] = $t0
+ $t0 = local[58]
+ $t1 = local[54]
+ $t0 = $t1
+ local[54] = $t1
+ local[58] = $t0
+ $t0 = local[58]
+ if0 $t0 goto :if295_else
+ local[58] = $t0
+if295_body:
+ $t3 = $s2
+ $s2 = $t3
$t3 = [$s2+0]
$t4 = [$t3+12]
local[8] = $t3
@@ -1097,22 +1331,43 @@ if144_body:
$t7 = local[12]
$t8 = local[13]
$t3 = $v0
- $s2 = $t3
- goto :if144_end
-if144_else:
- $s6 = 0
- $s2 = $s2
- $t0 = local[16]
+ $t4 = $t3
+ $s2 = $t4
+ goto :if295_end
+if295_else:
+ $t0 = local[26]
+ $t0 = 0
+ local[26] = $t0
+ $t0 = local[29]
+ $t1 = local[26]
+ $t0 = $t1
+ local[26] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ $s6 = $t0
+ local[29] = $t0
+ $t0 = local[38]
+ $t0 = $s2
+ local[38] = $t0
+ $t0 = local[38]
+ $s2 = $t0
+ local[38] = $t0
+ $t0 = local[36]
$t0 = [$s2+0]
- local[16] = $t0
- $t0 = local[22]
- $t1 = local[16]
+ local[36] = $t0
+ $t0 = local[42]
+ $t1 = local[36]
$t0 = [$t1+40]
- local[16] = $t1
- local[22] = $t0
- $t0 = local[20]
+ local[36] = $t1
+ local[42] = $t0
+ $t0 = local[40]
$t0 = 1
- local[20] = $t0
+ local[40] = $t0
+ $t0 = local[32]
+ $t1 = local[40]
+ $t0 = $t1
+ local[40] = $t1
+ local[32] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1120,34 +1375,41 @@ if144_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[20]
+ $t0 = local[32]
$a1 = $t0
- local[20] = $t0
- $t0 = local[22]
- $t1 = local[22]
+ local[32] = $t0
+ $t0 = local[42]
+ $t1 = local[42]
call $t1
- local[22] = $t1
- local[22] = $t0
+ local[42] = $t1
+ local[42] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[18]
+ $t0 = local[28]
$t0 = $v0
- local[18] = $t0
- $t0 = local[18]
- $s5 = $t0
- local[18] = $t0
- $s2 = $s2
- $s0 = [$s2+0]
+ local[28] = $t0
$t0 = local[14]
- $t0 = [$s0+4]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
local[14] = $t0
- $t0 = local[43]
- $t0 = $s4
- local[43] = $t0
+ $t0 = local[14]
+ $s5 = $t0
+ local[14] = $t0
+ $s0 = $s2
+ $s2 = $s0
+ $s1 = [$s2+0]
+ $t0 = local[70]
+ $t0 = [$s1+4]
+ local[70] = $t0
+ $t6 = $s4
+ $t0 = local[22]
+ $t0 = $t6
+ local[22] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1155,27 +1417,38 @@ if144_else:
local[12] = $t7
local[13] = $t8
$a0 = $s2
- $t0 = local[43]
+ $t0 = local[22]
$a1 = $t0
- local[43] = $t0
- $t0 = local[14]
- $t1 = local[14]
+ local[22] = $t0
+ $t0 = local[70]
+ $t1 = local[70]
call $t1
- local[14] = $t1
- local[14] = $t0
+ local[70] = $t1
+ local[70] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- $s5 = $t6
-if144_end:
-if125_end:
- goto :while120_test
-while120_end:
+ $t0 = local[69]
+ $t0 = $v0
+ local[69] = $t0
+ $t0 = local[20]
+ $t1 = local[69]
+ $t0 = $t1
+ local[69] = $t1
+ local[20] = $t0
+ $t0 = local[20]
+ $s5 = $t0
+ local[20] = $t0
+if295_end:
+if263_end:
+ goto :while254_test
+while254_end:
$t5 = 1
+ $t6 = $t5
+ $t5 = $t6
$v0 = $t5
$s0 = local[0]
$s1 = local[1]
@@ -1186,7 +1459,7 @@ while120_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Delete [in 0, out 0, local 54]
+func Tree_Delete [in 0, out 0, local 91]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -1198,25 +1471,50 @@ func Tree_Delete [in 0, out 0, local 54]
$s6 = $a0
$s7 = $a1
$s5 = $s6
+ $s4 = $s5
+ $s5 = $s4
$s4 = $s6
+ $s3 = $s4
+ $s4 = $s3
$s3 = 1
+ $s2 = $s3
+ $s3 = $s2
+ $s2 = 0
+ $s1 = $s2
$t0 = local[14]
- $t0 = 0
+ $t0 = $s1
local[14] = $t0
$s1 = 1
-while160_test:
+ $s0 = $s1
+ $s1 = $s0
+while335_test:
$s0 = $s3
- if0 $s0 goto :while160_end
-while160_body:
- $s5 = $s5
- $t0 = local[45]
+ $t0 = local[73]
+ $t0 = $s0
+ local[73] = $t0
+ $t0 = local[74]
+ $t1 = local[73]
+ $t0 = $t1
+ local[73] = $t1
+ local[74] = $t0
+ $t0 = local[74]
+ if0 $t0 goto :while335_end
+ local[74] = $t0
+while335_body:
+ $t0 = local[72]
+ $t0 = $s5
+ local[72] = $t0
+ $t0 = local[72]
+ $s5 = $t0
+ local[72] = $t0
+ $t0 = local[71]
$t0 = [$s5+0]
- local[45] = $t0
- $t0 = local[50]
- $t1 = local[45]
+ local[71] = $t0
+ $t0 = local[66]
+ $t1 = local[71]
$t0 = [$t1+20]
- local[45] = $t1
- local[50] = $t0
+ local[71] = $t1
+ local[66] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1224,58 +1522,73 @@ while160_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[50]
- $t1 = local[50]
+ $t0 = local[66]
+ $t1 = local[66]
call $t1
- local[50] = $t1
- local[50] = $t0
+ local[66] = $t1
+ local[66] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[25]
+ $t0 = local[69]
$t0 = $v0
- local[25] = $t0
- $t0 = local[26]
- $t1 = local[25]
+ local[69] = $t0
+ $t0 = local[65]
+ $t1 = local[69]
$t0 = $t1
- local[25] = $t1
- local[26] = $t0
- $t0 = local[41]
+ local[69] = $t1
+ local[65] = $t0
+ $t0 = local[70]
+ $t1 = local[65]
+ $t0 = $t1
+ local[65] = $t1
+ local[70] = $t0
+ $t0 = local[67]
$t0 = $s7
- local[41] = $t0
- $t0 = local[40]
- $t1 = local[26]
+ local[67] = $t0
+ $t0 = local[39]
+ $t1 = local[70]
$t0 = $t1
- local[26] = $t1
- local[40] = $t0
- $t0 = local[48]
- $t1 = local[41]
- $t2 = local[40]
+ local[70] = $t1
+ local[39] = $t0
+ $t0 = local[68]
+ $t1 = local[67]
+ $t2 = local[39]
$t0 = LtS($t1 $t2 )
- local[40] = $t2
- local[41] = $t1
- local[48] = $t0
- $t0 = local[44]
- $t1 = local[48]
+ local[39] = $t2
+ local[67] = $t1
+ local[68] = $t0
+ $t0 = local[38]
+ $t1 = local[68]
$t0 = $t1
- local[48] = $t1
- local[44] = $t0
- $t0 = local[44]
- if0 $t0 goto :if165_else
- local[44] = $t0
-if165_body:
- $s5 = $s5
- $t0 = local[35]
- $t0 = [$s5+0]
- local[35] = $t0
+ local[68] = $t1
+ local[38] = $t0
+ $t0 = local[29]
+ $t1 = local[38]
+ $t0 = $t1
+ local[38] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ if0 $t0 goto :if344_else
+ local[29] = $t0
+if344_body:
$t0 = local[34]
- $t1 = local[35]
- $t0 = [$t1+32]
- local[35] = $t1
+ $t0 = $s5
local[34] = $t0
+ $t0 = local[34]
+ $s5 = $t0
+ local[34] = $t0
+ $t0 = local[37]
+ $t0 = [$s5+0]
+ local[37] = $t0
+ $t0 = local[36]
+ $t1 = local[37]
+ $t0 = [$t1+32]
+ local[37] = $t1
+ local[36] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1283,39 +1596,55 @@ if165_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[34]
- $t1 = local[34]
+ $t0 = local[36]
+ $t1 = local[36]
call $t1
- local[34] = $t1
- local[34] = $t0
+ local[36] = $t1
+ local[36] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[43]
+ $t0 = local[35]
$t0 = $v0
- local[43] = $t0
- $t0 = local[36]
- $t1 = local[43]
+ local[35] = $t0
+ $t0 = local[31]
+ $t1 = local[35]
$t0 = $t1
- local[43] = $t1
- local[36] = $t0
- $t0 = local[36]
- if0 $t0 goto :if169_else
- local[36] = $t0
-if169_body:
- $s4 = $s5
- $s5 = $s5
+ local[35] = $t1
+ local[31] = $t0
$t0 = local[30]
- $t0 = [$s5+0]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :if349_else
+ local[30] = $t0
+if349_body:
$t0 = local[33]
- $t1 = local[30]
- $t0 = [$t1+16]
- local[30] = $t1
+ $t0 = $s5
local[33] = $t0
+ $t0 = local[32]
+ $t1 = local[33]
+ $t0 = $t1
+ local[33] = $t1
+ local[32] = $t0
+ $t0 = local[32]
+ $s4 = $t0
+ local[32] = $t0
+ $t0 = local[90]
+ $t0 = $s5
+ local[90] = $t0
+ $t0 = local[90]
+ $s5 = $t0
+ local[90] = $t0
+ $t5 = [$s5+0]
+ $t0 = local[24]
+ $t0 = [$t5+16]
+ local[24] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1323,54 +1652,75 @@ if169_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[33]
- $t1 = local[33]
+ $t0 = local[24]
+ $t1 = local[24]
call $t1
- local[33] = $t1
- local[33] = $t0
+ local[24] = $t1
+ local[24] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[31]
+ $t0 = local[28]
$t0 = $v0
- local[31] = $t0
- $t0 = local[31]
+ local[28] = $t0
+ $t0 = local[23]
+ $t1 = local[28]
+ $t0 = $t1
+ local[28] = $t1
+ local[23] = $t0
+ $t0 = local[23]
$s5 = $t0
- local[31] = $t0
- goto :if169_end
-if169_else:
- $s3 = 0
-if169_end:
- goto :if165_end
-if165_else:
- $t0 = local[28]
+ local[23] = $t0
+ goto :if349_end
+if349_else:
+ $t0 = local[26]
+ $t0 = 0
+ local[26] = $t0
+ $t0 = local[25]
$t1 = local[26]
$t0 = $t1
local[26] = $t1
- local[28] = $t0
- $t0 = local[27]
+ local[25] = $t0
+ $t0 = local[25]
+ $s3 = $t0
+ local[25] = $t0
+if349_end:
+ goto :if344_end
+if344_else:
+ $t0 = local[19]
+ $t1 = local[70]
+ $t0 = $t1
+ local[70] = $t1
+ local[19] = $t0
+ $t0 = local[22]
$t0 = $s7
- local[27] = $t0
- $t0 = local[32]
- $t1 = local[28]
- $t2 = local[27]
+ local[22] = $t0
+ $t0 = local[20]
+ $t1 = local[19]
+ $t2 = local[22]
$t0 = LtS($t1 $t2 )
- local[27] = $t2
- local[28] = $t1
- local[32] = $t0
- $t0 = local[29]
- $t1 = local[32]
+ local[22] = $t2
+ local[19] = $t1
+ local[20] = $t0
+ $t0 = local[21]
+ $t1 = local[20]
$t0 = $t1
- local[32] = $t1
- local[29] = $t0
- $t0 = local[29]
- if0 $t0 goto :if176_else
- local[29] = $t0
-if176_body:
- $s5 = $s5
+ local[20] = $t1
+ local[21] = $t0
+ $t0 = local[44]
+ $t1 = local[21]
+ $t0 = $t1
+ local[21] = $t1
+ local[44] = $t0
+ $t0 = local[44]
+ if0 $t0 goto :if364_else
+ local[44] = $t0
+if364_body:
+ $s2 = $s5
+ $s5 = $s2
$s2 = [$s5+0]
$t3 = [$s2+28]
local[8] = $t3
@@ -1389,10 +1739,14 @@ if176_body:
$t8 = local[13]
$s2 = $v0
$t3 = $s2
- if0 $t3 goto :if180_else
-if180_body:
- $s4 = $s5
- $s5 = $s5
+ $s2 = $t3
+ if0 $s2 goto :if369_else
+if369_body:
+ $s2 = $s5
+ $t3 = $s2
+ $s4 = $t3
+ $t3 = $s5
+ $s5 = $t3
$t3 = [$s5+0]
$s2 = [$t3+12]
local[8] = $t3
@@ -1410,29 +1764,47 @@ if180_body:
$t7 = local[12]
$t8 = local[13]
$t3 = $v0
- $s5 = $t3
- goto :if180_end
-if180_else:
- $s3 = 0
-if180_end:
- goto :if176_end
-if176_else:
- $t0 = local[24]
+ $s2 = $t3
+ $s5 = $s2
+ goto :if369_end
+if369_else:
+ $s2 = 0
+ $t3 = $s2
+ $s3 = $t3
+if369_end:
+ goto :if364_end
+if364_else:
+ $t0 = local[43]
$t0 = $s1
- local[24] = $t0
- $t0 = local[24]
- if0 $t0 goto :if187_else
- local[24] = $t0
-if187_body:
- $s5 = $s5
- $t0 = local[22]
+ local[43] = $t0
+ $t0 = local[42]
+ $t1 = local[43]
+ $t0 = $t1
+ local[43] = $t1
+ local[42] = $t0
+ $t0 = local[41]
+ $t1 = local[42]
+ $t0 = $t1
+ local[42] = $t1
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if384_else
+ local[41] = $t0
+if384_body:
+ $t0 = local[55]
+ $t0 = $s5
+ local[55] = $t0
+ $t0 = local[55]
+ $s5 = $t0
+ local[55] = $t0
+ $t0 = local[58]
$t0 = [$s5+0]
- local[22] = $t0
- $t0 = local[19]
- $t1 = local[22]
+ local[58] = $t0
+ $t0 = local[57]
+ $t1 = local[58]
$t0 = [$t1+28]
- local[22] = $t1
- local[19] = $t0
+ local[58] = $t1
+ local[57] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1440,37 +1812,49 @@ if187_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[19]
- $t1 = local[19]
+ $t0 = local[57]
+ $t1 = local[57]
call $t1
- local[19] = $t1
- local[19] = $t0
+ local[57] = $t1
+ local[57] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[23]
+ $t0 = local[56]
$t0 = $v0
- local[23] = $t0
- $t0 = local[20]
- $t1 = local[23]
+ local[56] = $t0
+ $t0 = local[62]
+ $t1 = local[56]
+ $t0 = $t1
+ local[56] = $t1
+ local[62] = $t0
+ $t0 = local[59]
+ $t1 = local[62]
$t0 = Eq($t1 0 )
- local[23] = $t1
- local[20] = $t0
- $t0 = local[20]
- $t6 = $t0
- local[20] = $t0
- $s5 = $s5
- $t0 = local[15]
+ local[62] = $t1
+ local[59] = $t0
+ $t0 = local[61]
+ $t1 = local[59]
+ $t0 = $t1
+ local[59] = $t1
+ local[61] = $t0
+ $t0 = local[60]
+ $t0 = $s5
+ local[60] = $t0
+ $t0 = local[60]
+ $s5 = $t0
+ local[60] = $t0
+ $t0 = local[50]
$t0 = [$s5+0]
- local[15] = $t0
- $t0 = local[18]
- $t1 = local[15]
+ local[50] = $t0
+ $t0 = local[49]
+ $t1 = local[50]
$t0 = [$t1+32]
- local[15] = $t1
- local[18] = $t0
+ local[50] = $t1
+ local[49] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1478,61 +1862,108 @@ if187_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[49]
+ $t1 = local[49]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[49] = $t1
+ local[49] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[63]
$t0 = $v0
- local[16] = $t0
- $t0 = local[16]
- $t7 = Eq($t0 0 )
- local[16] = $t0
- $t0 = local[17]
- $t0 = $t7
- local[17] = $t0
- $t4 = Eq(1 $t6 )
- $t0 = local[17]
- $t5 = Eq(1 $t0 )
- local[17] = $t0
- $t0 = local[21]
- $t0 = Eq($t4 $t5 )
- local[21] = $t0
- $t0 = local[52]
- $t1 = local[21]
+ local[63] = $t0
+ $t0 = local[46]
+ $t1 = local[63]
$t0 = $t1
- local[21] = $t1
- local[52] = $t0
+ local[63] = $t1
+ local[46] = $t0
+ $t0 = local[64]
+ $t1 = local[46]
+ $t0 = Eq($t1 0 )
+ local[46] = $t1
+ local[64] = $t0
+ $t0 = local[45]
+ $t1 = local[64]
+ $t0 = $t1
+ local[64] = $t1
+ local[45] = $t0
+ $t0 = local[48]
+ $t1 = local[61]
+ $t0 = Eq(1 $t1 )
+ local[61] = $t1
+ local[48] = $t0
+ $t0 = local[47]
+ $t1 = local[45]
+ $t0 = Eq(1 $t1 )
+ local[45] = $t1
+ local[47] = $t0
+ $t0 = local[40]
+ $t1 = local[48]
+ $t2 = local[47]
+ $t0 = Eq($t1 $t2 )
+ local[47] = $t2
+ local[48] = $t1
+ local[40] = $t0
$t0 = local[52]
- if0 $t0 goto :if188_else
+ $t1 = local[40]
+ $t0 = $t1
+ local[40] = $t1
local[52] = $t0
-if188_body:
+ $t0 = local[51]
+ $t1 = local[52]
+ $t0 = $t1
+ local[52] = $t1
+ local[51] = $t0
+ $t0 = local[51]
+ if0 $t0 goto :if387_else
+ local[51] = $t0
+if387_body:
$t0 = local[53]
$t0 = 1
local[53] = $t0
- goto :if188_end
-if188_else:
- $t0 = local[39]
+ $t0 = local[80]
+ $t1 = local[53]
+ $t0 = $t1
+ local[53] = $t1
+ local[80] = $t0
+ $t0 = local[54]
+ $t1 = local[80]
+ $t0 = $t1
+ local[80] = $t1
+ local[54] = $t0
+ goto :if387_end
+if387_else:
+ $t0 = local[81]
+ $t0 = $s6
+ local[81] = $t0
+ $t0 = local[77]
$t0 = [$s6+0]
- local[39] = $t0
- $t0 = local[38]
+ local[77] = $t0
+ $t0 = local[76]
$t0 = $s4
- local[38] = $t0
- $t0 = local[47]
+ local[76] = $t0
+ $t0 = local[79]
+ $t1 = local[76]
+ $t0 = $t1
+ local[76] = $t1
+ local[79] = $t0
+ $t0 = local[78]
$t0 = $s5
- local[47] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[78] = $t0
+ $t0 = local[84]
+ $t1 = local[78]
+ $t0 = $t1
+ local[78] = $t1
+ local[84] = $t0
+ $t0 = local[77]
+ $t1 = local[77]
$t0 = [$t1+56]
- local[39] = $t1
- local[39] = $t0
+ local[77] = $t1
+ local[77] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1540,48 +1971,54 @@ if188_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $t0 = local[38]
+ $t0 = local[79]
$a1 = $t0
- local[38] = $t0
- $t0 = local[47]
+ local[79] = $t0
+ $t0 = local[84]
$a2 = $t0
- local[47] = $t0
- $t0 = local[39]
- $t1 = local[39]
+ local[84] = $t0
+ $t0 = local[77]
+ $t1 = local[77]
call $t1
- local[39] = $t1
- local[39] = $t0
+ local[77] = $t1
+ local[77] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[37]
+ $t0 = local[82]
$t0 = $v0
- local[37] = $t0
- $t0 = local[53]
- $t1 = local[37]
+ local[82] = $t0
+ $t0 = local[83]
+ $t1 = local[82]
$t0 = $t1
- local[37] = $t1
- local[53] = $t0
-if188_end:
- goto :if187_end
-if187_else:
- $t0 = local[51]
- $t0 = [$s6+0]
- local[51] = $t0
- $t0 = local[49]
- $t0 = $s4
- local[49] = $t0
- $t0 = local[42]
+ local[82] = $t1
+ local[83] = $t0
+ $t0 = local[54]
+ $t1 = local[83]
+ $t0 = $t1
+ local[83] = $t1
+ local[54] = $t0
+if387_end:
+ goto :if384_end
+if384_else:
+ $t0 = local[27]
+ $t0 = $s6
+ local[27] = $t0
+ $t7 = [$s6+0]
+ $t6 = $s4
+ $t4 = $t6
+ $t0 = local[89]
$t0 = $s5
- local[42] = $t0
- $t0 = local[51]
- $t1 = local[51]
- $t0 = [$t1+56]
- local[51] = $t1
- local[51] = $t0
+ local[89] = $t0
+ $t0 = local[15]
+ $t1 = local[89]
+ $t0 = $t1
+ local[89] = $t1
+ local[15] = $t0
+ $t7 = [$t7+56]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1589,44 +2026,75 @@ if187_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $t0 = local[49]
- $a1 = $t0
- local[49] = $t0
- $t0 = local[42]
+ $a1 = $t4
+ $t0 = local[15]
$a2 = $t0
- local[42] = $t0
- $t0 = local[51]
- $t1 = local[51]
- call $t1
- local[51] = $t1
- local[51] = $t0
+ local[15] = $t0
+ call $t7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[46]
+ $t0 = local[87]
$t0 = $v0
- local[46] = $t0
- $t0 = local[53]
- $t1 = local[46]
+ local[87] = $t0
+ $t0 = local[16]
+ $t1 = local[87]
$t0 = $t1
- local[46] = $t1
- local[53] = $t0
-if187_end:
- $t0 = local[14]
+ local[87] = $t1
+ local[16] = $t0
+ $t0 = local[54]
+ $t1 = local[16]
+ $t0 = $t1
+ local[16] = $t1
+ local[54] = $t0
+if384_end:
+ $t0 = local[17]
$t0 = 1
+ local[17] = $t0
+ $t0 = local[18]
+ $t1 = local[17]
+ $t0 = $t1
+ local[17] = $t1
+ local[18] = $t0
+ $t0 = local[14]
+ $t1 = local[18]
+ $t0 = $t1
+ local[18] = $t1
local[14] = $t0
- $s3 = 0
-if176_end:
-if165_end:
- $s1 = 0
- goto :while160_test
-while160_end:
+ $t0 = local[88]
+ $t0 = 0
+ local[88] = $t0
+ $t0 = local[85]
+ $t1 = local[88]
+ $t0 = $t1
+ local[88] = $t1
+ local[85] = $t0
+ $t0 = local[85]
+ $s3 = $t0
+ local[85] = $t0
+if364_end:
+if344_end:
+ $t0 = local[86]
+ $t0 = 0
+ local[86] = $t0
+ $t0 = local[75]
+ $t1 = local[86]
+ $t0 = $t1
+ local[86] = $t1
+ local[75] = $t0
+ $t0 = local[75]
+ $s1 = $t0
+ local[75] = $t0
+ goto :while335_test
+while335_end:
$t0 = local[14]
$t4 = $t0
local[14] = $t0
+ $t5 = $t4
+ $t4 = $t5
$v0 = $t4
$s0 = local[0]
$s1 = local[1]
@@ -1649,7 +2117,8 @@ func Tree_Remove [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
- $s7 = $s7
+ $s4 = $s7
+ $s7 = $s4
$s4 = [$s7+0]
$s3 = [$s4+32]
local[8] = $t3
@@ -1668,12 +2137,16 @@ func Tree_Remove [in 0, out 0, local 14]
$t8 = local[13]
$s4 = $v0
$s3 = $s4
- if0 $s3 goto :if211_else
-if211_body:
- $s3 = [$s5+0]
- $s4 = $s6
- $s2 = $s7
- $s3 = [$s3+64]
+ $s4 = $s3
+ if0 $s4 goto :if433_else
+if433_body:
+ $s4 = $s5
+ $s4 = [$s5+0]
+ $s3 = $s6
+ $s2 = $s3
+ $s3 = $s7
+ $s1 = $s3
+ $s4 = [$s4+64]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1681,22 +2154,24 @@ if211_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s4
- $a2 = $s2
- call $s3
+ $a1 = $s2
+ $a2 = $s1
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s2 = $s1
- goto :if211_end
-if211_else:
- $s7 = $s7
+ $s3 = $v0
+ $s1 = $s3
+ $s3 = $s1
+ goto :if433_end
+if433_else:
+ $s1 = $s7
+ $s7 = $s1
$s1 = [$s7+0]
- $s4 = [$s1+28]
+ $s2 = [$s1+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1704,7 +2179,7 @@ if211_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s4
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1712,13 +2187,17 @@ if211_else:
$t7 = local[12]
$t8 = local[13]
$s1 = $v0
- $s4 = $s1
- if0 $s4 goto :if219_else
-if219_body:
- $s4 = [$s5+0]
- $s1 = $s6
- $s3 = $s7
- $s4 = [$s4+60]
+ $s2 = $s1
+ $s1 = $s2
+ if0 $s1 goto :if447_else
+if447_body:
+ $s1 = $s5
+ $s1 = [$s5+0]
+ $s2 = $s6
+ $s4 = $s2
+ $s2 = $s7
+ $s0 = $s2
+ $s1 = [$s1+60]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1726,22 +2205,24 @@ if219_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s1
- $a2 = $s3
- call $s4
+ $a1 = $s4
+ $a2 = $s0
+ call $s1
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s2 = $s0
- goto :if219_end
-if219_else:
- $s7 = $s7
+ $s2 = $v0
+ $s0 = $s2
+ $s3 = $s0
+ goto :if447_end
+if447_else:
+ $s0 = $s7
+ $s7 = $s0
$s0 = [$s7+0]
- $s3 = [$s0+20]
+ $s2 = [$s0+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1749,7 +2230,7 @@ if219_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1757,10 +2238,12 @@ if219_else:
$t7 = local[12]
$t8 = local[13]
$s0 = $v0
- $s3 = $s0
- $s6 = $s6
- $s0 = [$s6+0]
- $s7 = [$s0+16]
+ $s2 = $s0
+ $s0 = $s2
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = [$s6+0]
+ $s7 = [$s2+16]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1775,10 +2258,12 @@ if219_else:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s7 = $s0
- $s0 = [$s7+0]
- $s1 = [$s0+20]
+ $s2 = $v0
+ $s7 = $s2
+ $s2 = $s7
+ $s7 = $s2
+ $s2 = [$s7+0]
+ $s4 = [$s2+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1786,19 +2271,23 @@ if219_else:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s1
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s1 = $s0
- $s0 = [$s5+0]
- $s7 = $s3
- $s3 = $s1
- $s0 = [$s0+44]
+ $s2 = $v0
+ $s4 = $s2
+ $s2 = $s4
+ $s4 = $s5
+ $s4 = [$s5+0]
+ $s7 = $s0
+ $s0 = $s7
+ $s7 = $s2
+ $s2 = $s7
+ $s4 = [$s4+44]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1806,23 +2295,26 @@ if219_else:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $a1 = $s7
- $a2 = $s3
- call $s0
+ $a1 = $s0
+ $a2 = $s2
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s3 = $s1
- if0 $s3 goto :if237_else
-if237_body:
- $s6 = $s6
- $s3 = [$s6+0]
- $s1 = [$s3+8]
- $s3 = [$s5+104]
+ $s7 = $v0
+ $s2 = $s7
+ $s7 = $s2
+ if0 $s7 goto :if477_else
+if477_body:
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s2 = [$s7+8]
+ $s7 = [$s5+104]
+ $s0 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1830,8 +2322,8 @@ if237_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s3
- call $s1
+ $a1 = $s0
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -1839,11 +2331,14 @@ if237_body:
$t7 = local[12]
$t8 = local[13]
$s7 = $v0
- $s2 = $s7
- $s6 = $s6
- $s7 = [$s6+0]
- $s3 = [$s7+36]
- $s7 = 0
+ $s0 = $s7
+ $s3 = $s0
+ $s0 = $s6
+ $s6 = $s0
+ $s0 = [$s6+0]
+ $s7 = [$s0+36]
+ $s0 = 0
+ $s2 = $s0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1851,22 +2346,25 @@ if237_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
- call $s3
+ $a1 = $s2
+ call $s7
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s2 = $s1
- goto :if237_end
-if237_else:
- $s6 = $s6
- $s1 = [$s6+0]
- $s7 = [$s1+4]
- $s1 = [$s5+104]
+ $s0 = $v0
+ $s2 = $s0
+ $s3 = $s2
+ goto :if477_end
+if477_else:
+ $s2 = $s6
+ $s6 = $s2
+ $s2 = [$s6+0]
+ $s0 = [$s2+4]
+ $s2 = [$s5+104]
+ $s5 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1874,20 +2372,23 @@ if237_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s1
- call $s7
+ $a1 = $s5
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s2 = $s5
- $s6 = $s6
+ $s2 = $v0
+ $s5 = $s2
+ $s3 = $s5
+ $s5 = $s6
+ $s6 = $s5
$s5 = [$s6+0]
- $s1 = [$s5+40]
+ $s2 = [$s5+40]
$s5 = 0
+ $s0 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1895,21 +2396,24 @@ if237_else:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s5
- call $s1
+ $a1 = $s0
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s2 = $s7
-if237_end:
-if219_end:
-if211_end:
- $s7 = 1
- $v0 = $s7
+ $s5 = $v0
+ $s0 = $s5
+ $s3 = $s0
+if477_end:
+if447_end:
+if433_end:
+ $s0 = 1
+ $s3 = $s0
+ $s0 = $s3
+ $v0 = $s0
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -1919,7 +2423,7 @@ if211_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_RemoveRight [in 0, out 0, local 23]
+func Tree_RemoveRight [in 0, out 0, local 34]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -1931,12 +2435,17 @@ func Tree_RemoveRight [in 0, out 0, local 23]
local[15] = $a0
local[14] = $a1
$s7 = $a2
-while259_test:
- $s7 = $s7
- $s5 = [$s7+0]
- $t0 = local[18]
- $t0 = [$s5+28]
- local[18] = $t0
+while517_test:
+ $s4 = $s7
+ $s7 = $s4
+ $t0 = local[29]
+ $t0 = [$s7+0]
+ local[29] = $t0
+ $t0 = local[28]
+ $t1 = local[29]
+ $t0 = [$t1+28]
+ local[29] = $t1
+ local[28] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1944,41 +2453,60 @@ while259_test:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[28]
+ $t1 = local[28]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[28] = $t1
+ local[28] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[27]
$t0 = $v0
- local[16] = $t0
- $t0 = local[17]
- $t1 = local[16]
+ local[27] = $t0
+ $t0 = local[31]
+ $t1 = local[27]
$t0 = $t1
- local[16] = $t1
- local[17] = $t0
- $t0 = local[17]
- if0 $t0 goto :while259_end
- local[17] = $t0
-while259_body:
- $s7 = $s7
- $t0 = local[22]
- $t0 = [$s7+0]
- local[22] = $t0
+ local[27] = $t1
+ local[31] = $t0
+ $t0 = local[30]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :while517_end
+ local[30] = $t0
+while517_body:
$t0 = local[21]
- $t1 = local[22]
- $t0 = [$t1+24]
- local[22] = $t1
+ $t0 = $s7
+ local[21] = $t0
+ $t0 = local[21]
+ $s7 = $t0
local[21] = $t0
- $s7 = $s7
- $t6 = [$s7+0]
- $s3 = [$t6+12]
+ $t0 = local[24]
+ $t0 = [$s7+0]
+ local[24] = $t0
+ $t0 = local[23]
+ $t1 = local[24]
+ $t0 = [$t1+24]
+ local[24] = $t1
+ local[23] = $t0
+ $t0 = local[20]
+ $t0 = $s7
+ local[20] = $t0
+ $t0 = local[20]
+ $s7 = $t0
+ local[20] = $t0
+ $t0 = local[19]
+ $t0 = [$s7+0]
+ local[19] = $t0
+ $t0 = local[19]
+ $s6 = [$t0+12]
+ local[19] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1986,33 +2514,43 @@ while259_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s4 = $t5
- $s1 = [$s4+0]
- $s2 = [$s1+20]
+ $t0 = local[17]
+ $t0 = $v0
+ local[17] = $t0
+ $t0 = local[17]
+ $t3 = $t0
+ local[17] = $t0
+ $s5 = $t3
+ $t6 = $s5
+ $t7 = [$t6+0]
+ $t4 = [$t7+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- call $s2
+ $a0 = $t6
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $t3 = $s0
+ $t0 = local[18]
+ $t0 = $v0
+ local[18] = $t0
+ $t0 = local[18]
+ $t5 = $t0
+ local[18] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2020,32 +2558,46 @@ while259_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $t3
- $t0 = local[21]
- $t1 = local[21]
+ $a1 = $t5
+ $t0 = local[23]
+ $t1 = local[23]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[23] = $t1
+ local[23] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[19]
+ $t0 = local[32]
$t0 = $v0
- local[19] = $t0
- $t0 = local[20]
- $t1 = local[19]
- $t0 = $t1
- local[19] = $t1
- local[20] = $t0
+ local[32] = $t0
+ $t0 = local[32]
+ $s2 = $t0
+ local[32] = $t0
+ $t0 = local[33]
+ $t0 = $s2
+ local[33] = $t0
+ $s3 = $s7
+ $s0 = $s3
$t0 = local[14]
- $t0 = $s7
+ $t0 = $s0
local[14] = $t0
- $s7 = $s7
- $s6 = [$s7+0]
- $t7 = [$s6+12]
+ $t0 = local[26]
+ $t0 = $s7
+ local[26] = $t0
+ $t0 = local[26]
+ $s7 = $t0
+ local[26] = $t0
+ $t0 = local[25]
+ $t0 = [$s7+0]
+ local[25] = $t0
+ $t0 = local[16]
+ $t1 = local[25]
+ $t0 = [$t1+12]
+ local[25] = $t1
+ local[16] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2053,21 +2605,31 @@ while259_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $t7
+ $t0 = local[16]
+ $t1 = local[16]
+ call $t1
+ local[16] = $t1
+ local[16] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t4 = $v0
- $s7 = $t4
- goto :while259_test
-while259_end:
+ $s1 = $v0
+ $t0 = local[22]
+ $t0 = $s1
+ local[22] = $t0
+ $t0 = local[22]
+ $s7 = $t0
+ local[22] = $t0
+ goto :while517_test
+while517_end:
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $s5 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $s5
local[14] = $t0
$t0 = local[14]
$s5 = [$t0+0]
@@ -2076,6 +2638,7 @@ while259_end:
$t0 = local[15]
$s5 = [$t0+104]
local[15] = $t0
+ $t3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2085,7 +2648,7 @@ while259_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $s5
+ $a1 = $t3
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -2093,20 +2656,23 @@ while259_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- $t0 = local[20]
+ $s5 = $v0
+ $t3 = $s5
+ $t0 = local[33]
$t0 = $t3
- local[20] = $t0
+ local[33] = $t0
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $t3 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $t3
local[14] = $t0
$t0 = local[14]
$t3 = [$t0+0]
local[14] = $t0
$s5 = [$t3+40]
$t3 = 0
+ $s6 = $t3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2116,7 +2682,7 @@ while259_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $t3
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2124,11 +2690,14 @@ while259_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $t0 = local[20]
+ $t3 = $v0
+ $s6 = $t3
+ $t0 = local[33]
$t0 = $s6
- local[20] = $t0
+ local[33] = $t0
$s6 = 1
+ $t3 = $s6
+ $s6 = $t3
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -2139,7 +2708,7 @@ while259_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_RemoveLeft [in 0, out 0, local 23]
+func Tree_RemoveLeft [in 0, out 0, local 34]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -2151,12 +2720,17 @@ func Tree_RemoveLeft [in 0, out 0, local 23]
local[15] = $a0
local[14] = $a1
$s7 = $a2
-while287_test:
- $s7 = $s7
- $s5 = [$s7+0]
- $t0 = local[18]
- $t0 = [$s5+32]
- local[18] = $t0
+while564_test:
+ $s4 = $s7
+ $s7 = $s4
+ $t0 = local[29]
+ $t0 = [$s7+0]
+ local[29] = $t0
+ $t0 = local[28]
+ $t1 = local[29]
+ $t0 = [$t1+32]
+ local[29] = $t1
+ local[28] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2164,41 +2738,60 @@ while287_test:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $t0 = local[18]
- $t1 = local[18]
+ $t0 = local[28]
+ $t1 = local[28]
call $t1
- local[18] = $t1
- local[18] = $t0
+ local[28] = $t1
+ local[28] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[16]
+ $t0 = local[27]
$t0 = $v0
- local[16] = $t0
- $t0 = local[17]
- $t1 = local[16]
+ local[27] = $t0
+ $t0 = local[31]
+ $t1 = local[27]
$t0 = $t1
- local[16] = $t1
- local[17] = $t0
- $t0 = local[17]
- if0 $t0 goto :while287_end
- local[17] = $t0
-while287_body:
- $s7 = $s7
- $t0 = local[22]
- $t0 = [$s7+0]
- local[22] = $t0
+ local[27] = $t1
+ local[31] = $t0
+ $t0 = local[30]
+ $t1 = local[31]
+ $t0 = $t1
+ local[31] = $t1
+ local[30] = $t0
+ $t0 = local[30]
+ if0 $t0 goto :while564_end
+ local[30] = $t0
+while564_body:
$t0 = local[21]
- $t1 = local[22]
- $t0 = [$t1+24]
- local[22] = $t1
+ $t0 = $s7
local[21] = $t0
- $s7 = $s7
- $t6 = [$s7+0]
- $s3 = [$t6+16]
+ $t0 = local[21]
+ $s7 = $t0
+ local[21] = $t0
+ $t0 = local[24]
+ $t0 = [$s7+0]
+ local[24] = $t0
+ $t0 = local[23]
+ $t1 = local[24]
+ $t0 = [$t1+24]
+ local[24] = $t1
+ local[23] = $t0
+ $t0 = local[20]
+ $t0 = $s7
+ local[20] = $t0
+ $t0 = local[20]
+ $s7 = $t0
+ local[20] = $t0
+ $t0 = local[19]
+ $t0 = [$s7+0]
+ local[19] = $t0
+ $t0 = local[19]
+ $s6 = [$t0+16]
+ local[19] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2206,33 +2799,43 @@ while287_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s4 = $t5
- $s1 = [$s4+0]
- $s2 = [$s1+20]
+ $t0 = local[17]
+ $t0 = $v0
+ local[17] = $t0
+ $t0 = local[17]
+ $t3 = $t0
+ local[17] = $t0
+ $s5 = $t3
+ $t6 = $s5
+ $t7 = [$t6+0]
+ $t4 = [$t7+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- call $s2
+ $a0 = $t6
+ call $t4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $t3 = $s0
+ $t0 = local[18]
+ $t0 = $v0
+ local[18] = $t0
+ $t0 = local[18]
+ $t5 = $t0
+ local[18] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2240,32 +2843,46 @@ while287_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $t3
- $t0 = local[21]
- $t1 = local[21]
+ $a1 = $t5
+ $t0 = local[23]
+ $t1 = local[23]
call $t1
- local[21] = $t1
- local[21] = $t0
+ local[23] = $t1
+ local[23] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[19]
+ $t0 = local[32]
$t0 = $v0
- local[19] = $t0
- $t0 = local[20]
- $t1 = local[19]
- $t0 = $t1
- local[19] = $t1
- local[20] = $t0
+ local[32] = $t0
+ $t0 = local[32]
+ $s2 = $t0
+ local[32] = $t0
+ $t0 = local[33]
+ $t0 = $s2
+ local[33] = $t0
+ $s3 = $s7
+ $s0 = $s3
$t0 = local[14]
- $t0 = $s7
+ $t0 = $s0
local[14] = $t0
- $s7 = $s7
- $s6 = [$s7+0]
- $t7 = [$s6+16]
+ $t0 = local[26]
+ $t0 = $s7
+ local[26] = $t0
+ $t0 = local[26]
+ $s7 = $t0
+ local[26] = $t0
+ $t0 = local[25]
+ $t0 = [$s7+0]
+ local[25] = $t0
+ $t0 = local[16]
+ $t1 = local[25]
+ $t0 = [$t1+16]
+ local[25] = $t1
+ local[16] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2273,21 +2890,31 @@ while287_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $t7
+ $t0 = local[16]
+ $t1 = local[16]
+ call $t1
+ local[16] = $t1
+ local[16] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t4 = $v0
- $s7 = $t4
- goto :while287_test
-while287_end:
+ $s1 = $v0
+ $t0 = local[22]
+ $t0 = $s1
+ local[22] = $t0
+ $t0 = local[22]
+ $s7 = $t0
+ local[22] = $t0
+ goto :while564_test
+while564_end:
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $s5 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $s5
local[14] = $t0
$t0 = local[14]
$s5 = [$t0+0]
@@ -2296,6 +2923,7 @@ while287_end:
$t0 = local[15]
$s5 = [$t0+104]
local[15] = $t0
+ $t3 = $s5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2305,7 +2933,7 @@ while287_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $s5
+ $a1 = $t3
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -2313,20 +2941,23 @@ while287_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- $t0 = local[20]
+ $s5 = $v0
+ $t3 = $s5
+ $t0 = local[33]
$t0 = $t3
- local[20] = $t0
+ local[33] = $t0
$t0 = local[14]
- $t1 = local[14]
- $t0 = $t1
- local[14] = $t1
+ $t3 = $t0
+ local[14] = $t0
+ $t0 = local[14]
+ $t0 = $t3
local[14] = $t0
$t0 = local[14]
$t3 = [$t0+0]
local[14] = $t0
$s5 = [$t3+36]
$t3 = 0
+ $s6 = $t3
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2336,7 +2967,7 @@ while287_end:
$t0 = local[14]
$a0 = $t0
local[14] = $t0
- $a1 = $t3
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2344,11 +2975,14 @@ while287_end:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $t0 = local[20]
+ $t3 = $v0
+ $s6 = $t3
+ $t0 = local[33]
$t0 = $s6
- local[20] = $t0
+ local[33] = $t0
$s6 = 1
+ $t3 = $s6
+ $s6 = $t3
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -2359,7 +2993,7 @@ while287_end:
$s6 = local[6]
$s7 = local[7]
ret
-func Tree_Search [in 0, out 0, local 27]
+func Tree_Search [in 0, out 0, local 43]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -2371,23 +3005,44 @@ func Tree_Search [in 0, out 0, local 27]
$s6 = $a0
$s7 = $a1
$s5 = $s6
+ $s6 = $s5
+ $s5 = $s6
$s6 = 1
+ $s4 = $s6
+ $s6 = $s4
+ $s4 = 0
+ $s3 = $s4
$t0 = local[14]
- $t0 = 0
+ $t0 = $s3
local[14] = $t0
-while315_test:
+while617_test:
$s3 = $s6
- if0 $s3 goto :while315_end
-while315_body:
- $s5 = $s5
- $t0 = local[24]
+ $t0 = local[36]
+ $t0 = $s3
+ local[36] = $t0
+ $t0 = local[26]
+ $t1 = local[36]
+ $t0 = $t1
+ local[36] = $t1
+ local[26] = $t0
+ $t0 = local[26]
+ if0 $t0 goto :while617_end
+ local[26] = $t0
+while617_body:
+ $t0 = local[28]
+ $t0 = $s5
+ local[28] = $t0
+ $t0 = local[28]
+ $s5 = $t0
+ local[28] = $t0
+ $t0 = local[18]
$t0 = [$s5+0]
- local[24] = $t0
- $t0 = local[23]
- $t1 = local[24]
+ local[18] = $t0
+ $t0 = local[17]
+ $t1 = local[18]
$t0 = [$t1+20]
- local[24] = $t1
- local[23] = $t0
+ local[18] = $t1
+ local[17] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2395,58 +3050,57 @@ while315_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[23]
- $t1 = local[23]
+ $t0 = local[17]
+ $t1 = local[17]
call $t1
- local[23] = $t1
- local[23] = $t0
+ local[17] = $t1
+ local[17] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[21]
+ $t0 = local[30]
$t0 = $v0
- local[21] = $t0
+ local[30] = $t0
+ $t0 = local[20]
+ $t1 = local[30]
+ $t0 = $t1
+ local[30] = $t1
+ local[20] = $t0
$t0 = local[22]
- $t1 = local[21]
+ $t1 = local[20]
$t0 = $t1
- local[21] = $t1
+ local[20] = $t1
local[22] = $t0
- $t0 = local[20]
- $t0 = $s7
- local[20] = $t0
- $t0 = local[19]
+ $t4 = $s7
+ $t0 = local[16]
$t1 = local[22]
$t0 = $t1
local[22] = $t1
- local[19] = $t0
- $t0 = local[18]
- $t1 = local[20]
- $t2 = local[19]
- $t0 = LtS($t1 $t2 )
- local[19] = $t2
- local[20] = $t1
- local[18] = $t0
+ local[16] = $t0
+ $t0 = local[42]
+ $t1 = local[16]
+ $t0 = LtS($t4 $t1 )
+ local[16] = $t1
+ local[42] = $t0
$t0 = local[15]
- $t1 = local[18]
+ $t1 = local[42]
$t0 = $t1
- local[18] = $t1
+ local[42] = $t1
local[15] = $t0
$t0 = local[15]
- if0 $t0 goto :if320_else
+ $t7 = $t0
local[15] = $t0
-if320_body:
- $s5 = $s5
- $t0 = local[17]
- $t0 = [$s5+0]
- local[17] = $t0
- $t0 = local[16]
- $t1 = local[17]
- $t0 = [$t1+32]
- local[17] = $t1
- local[16] = $t0
+ if0 $t7 goto :if626_else
+if626_body:
+ $t5 = $s5
+ $s5 = $t5
+ $t6 = [$s5+0]
+ $t0 = local[40]
+ $t0 = [$t6+32]
+ local[40] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2454,32 +3108,44 @@ if320_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- $t0 = local[16]
- $t1 = local[16]
+ $t0 = local[40]
+ $t1 = local[40]
call $t1
- local[16] = $t1
- local[16] = $t0
+ local[40] = $t1
+ local[40] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t0 = local[25]
- $t0 = $v0
- local[25] = $t0
- $t0 = local[25]
- $t4 = $t0
- local[25] = $t0
- if0 $t4 goto :if324_else
-if324_body:
- $s5 = $s5
- $t0 = local[26]
+ $s0 = $v0
+ $t0 = local[39]
+ $t0 = $s0
+ local[39] = $t0
+ $t0 = local[21]
+ $t1 = local[39]
+ $t0 = $t1
+ local[39] = $t1
+ local[21] = $t0
+ $t0 = local[21]
+ if0 $t0 goto :if631_else
+ local[21] = $t0
+if631_body:
+ $t0 = local[33]
+ $t0 = $s5
+ local[33] = $t0
+ $t0 = local[33]
+ $s5 = $t0
+ local[33] = $t0
+ $t0 = local[38]
$t0 = [$s5+0]
- local[26] = $t0
- $t0 = local[26]
- $s0 = [$t0+16]
- local[26] = $t0
+ local[38] = $t0
+ $t0 = local[35]
+ $t1 = local[38]
+ $t0 = [$t1+16]
+ local[38] = $t1
+ local[35] = $t0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2487,30 +3153,67 @@ if324_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- call $s0
+ $t0 = local[35]
+ $t1 = local[35]
+ call $t1
+ local[35] = $t1
+ local[35] = $t0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- $s5 = $t5
- goto :if324_end
-if324_else:
- $s6 = 0
-if324_end:
- goto :if320_end
-if320_else:
- $t0 = local[22]
- $t6 = $t0
- local[22] = $t0
- $t7 = $s7
- $s1 = LtS($t6 $t7 )
- $s2 = $s1
- if0 $s2 goto :if331_else
-if331_body:
- $s5 = $s5
+ $t0 = local[34]
+ $t0 = $v0
+ local[34] = $t0
+ $t0 = local[25]
+ $t1 = local[34]
+ $t0 = $t1
+ local[34] = $t1
+ local[25] = $t0
+ $t0 = local[25]
+ $s5 = $t0
+ local[25] = $t0
+ goto :if631_end
+if631_else:
+ $t0 = local[23]
+ $t0 = 0
+ local[23] = $t0
+ $t0 = local[31]
+ $t1 = local[23]
+ $t0 = $t1
+ local[23] = $t1
+ local[31] = $t0
+ $t0 = local[31]
+ $s6 = $t0
+ local[31] = $t0
+if631_end:
+ goto :if626_end
+if626_else:
+ $t0 = local[19]
+ $t1 = local[22]
+ $t0 = $t1
+ local[22] = $t1
+ local[19] = $t0
+ $s1 = $s7
+ $t0 = local[29]
+ $t1 = local[19]
+ $t0 = LtS($t1 $s1 )
+ local[19] = $t1
+ local[29] = $t0
+ $t0 = local[29]
+ $s2 = $t0
+ local[29] = $t0
+ $t0 = local[41]
+ $t0 = $s2
+ local[41] = $t0
+ $t0 = local[41]
+ if0 $t0 goto :if644_else
+ local[41] = $t0
+if644_body:
+ $s4 = $s5
+ $s5 = $s4
$s4 = [$s5+0]
$t3 = [$s4+28]
local[8] = $t3
@@ -2529,11 +3232,13 @@ if331_body:
$t8 = local[13]
$s4 = $v0
$t3 = $s4
- if0 $t3 goto :if335_else
-if335_body:
- $s5 = $s5
- $t3 = [$s5+0]
- $s4 = [$t3+12]
+ $s4 = $t3
+ if0 $s4 goto :if649_else
+if649_body:
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $t3 = [$s4+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2541,32 +3246,57 @@ if335_body:
local[12] = $t7
local[13] = $t8
$a0 = $s5
- call $s4
+ call $t3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
+ $s4 = $v0
+ $t3 = $s4
$s5 = $t3
- goto :if335_end
-if335_else:
- $s6 = 0
-if335_end:
- goto :if331_end
-if331_else:
- $t0 = local[14]
+ goto :if649_end
+if649_else:
+ $t3 = 0
+ $s4 = $t3
+ $s6 = $s4
+if649_end:
+ goto :if644_end
+if644_else:
+ $t0 = local[37]
$t0 = 1
+ local[37] = $t0
+ $t0 = local[27]
+ $t1 = local[37]
+ $t0 = $t1
+ local[37] = $t1
+ local[27] = $t0
+ $t0 = local[14]
+ $t1 = local[27]
+ $t0 = $t1
+ local[27] = $t1
local[14] = $t0
- $s6 = 0
-if331_end:
-if320_end:
- goto :while315_test
-while315_end:
+ $t0 = local[24]
+ $t0 = 0
+ local[24] = $t0
+ $t0 = local[32]
+ $t1 = local[24]
+ $t0 = $t1
+ local[24] = $t1
+ local[32] = $t0
+ $t0 = local[32]
+ $s6 = $t0
+ local[32] = $t0
+if644_end:
+if626_end:
+ goto :while617_test
+while617_end:
$t0 = local[14]
$t4 = $t0
local[14] = $t0
+ $t5 = $t4
+ $t4 = $t5
$v0 = $t4
$s0 = local[0]
$s1 = local[1]
@@ -2586,10 +3316,14 @@ func Tree_Print [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $s6
- $s5 = [$s6+0]
- $s4 = $s7
+ $s7 = $a0
+ $s6 = $s7
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = $s7
+ $s5 = [$s7+0]
+ $s4 = $s6
+ $s6 = $s4
$s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
@@ -2597,8 +3331,8 @@ func Tree_Print [in 0, out 0, local 14]
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s4
+ $a0 = $s7
+ $a1 = $s6
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -2606,9 +3340,12 @@ func Tree_Print [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s4 = $s7
+ $s4 = $v0
+ $s6 = $s4
+ $s4 = $s6
$s4 = 1
+ $s6 = $s4
+ $s4 = $s6
$v0 = $s4
$s0 = local[0]
$s1 = local[1]
@@ -2630,7 +3367,8 @@ func Tree_RecPrint [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s4 = [$s5+32]
local[8] = $t3
@@ -2649,12 +3387,15 @@ func Tree_RecPrint [in 0, out 0, local 14]
$t8 = local[13]
$s5 = $v0
$s4 = $s5
- if0 $s4 goto :if347_else
-if347_body:
- $s4 = [$s6+0]
- $s7 = $s7
- $s5 = [$s7+0]
- $s3 = [$s5+16]
+ $s5 = $s4
+ if0 $s5 goto :if680_else
+if680_body:
+ $s5 = $s6
+ $s5 = [$s6+0]
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s7+0]
+ $s3 = [$s4+16]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2669,9 +3410,9 @@ if347_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s3 = $s5
- $s4 = [$s4+76]
+ $s4 = $v0
+ $s3 = $s4
+ $s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2680,22 +3421,26 @@ if347_body:
local[13] = $t8
$a0 = $s6
$a1 = $s3
- call $s4
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s3 = $s5
- goto :if347_end
-if347_else:
+ $s4 = $v0
+ $s3 = $s4
+ $s4 = $s3
+ goto :if680_end
+if680_else:
$s3 = 1
-if347_end:
- $s7 = $s7
+ $s5 = $s3
+ $s4 = $s5
+if680_end:
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
- $s4 = [$s5+20]
+ $s3 = [$s5+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2703,7 +3448,7 @@ if347_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s4
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -2711,11 +3456,13 @@ if347_end:
$t7 = local[12]
$t8 = local[13]
$s5 = $v0
- $s4 = $s5
- PrintIntS($s4 )
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+28]
+ $s3 = $s5
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s3 = [$s5+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2723,21 +3470,24 @@ if347_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s5
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s5 = $s4
- if0 $s5 goto :if361_else
-if361_body:
+ $s5 = $v0
+ $s3 = $s5
+ $s5 = $s3
+ if0 $s5 goto :if703_else
+if703_body:
+ $s5 = $s6
$s5 = [$s6+0]
- $s7 = $s7
- $s4 = [$s7+0]
- $s2 = [$s4+12]
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2752,8 +3502,8 @@ if361_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s2 = $s4
+ $s3 = $v0
+ $s2 = $s3
$s5 = [$s5+76]
local[8] = $t3
local[9] = $t4
@@ -2770,13 +3520,18 @@ if361_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s3 = $s4
- goto :if361_end
-if361_else:
- $s3 = 1
-if361_end:
+ $s3 = $v0
+ $s2 = $s3
+ $s4 = $s2
+ goto :if703_end
+if703_else:
+ $s2 = 1
+ $s3 = $s2
+ $s4 = $s3
+if703_end:
$s3 = 1
+ $s4 = $s3
+ $s3 = $s4
$v0 = $s3
$s0 = local[0]
$s1 = local[1]
@@ -2799,11 +3554,15 @@ func Tree_accept [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = 333
+ $s4 = $s7
+ $s7 = $s4
PrintIntS($s7 )
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s4 = [$s7+0]
$s7 = $s5
+ $s5 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2811,7 +3570,7 @@ func Tree_accept [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -2819,9 +3578,12 @@ func Tree_accept [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s7 = $v0
+ $s5 = $s7
$s7 = $s5
$s7 = 0
+ $s5 = $s7
+ $s7 = $s5
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -2843,7 +3605,8 @@ func Visitor_visit [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s4 = [$s5+28]
local[8] = $t3
@@ -2862,11 +3625,13 @@ func Visitor_visit [in 0, out 0, local 14]
$t8 = local[13]
$s5 = $v0
$s4 = $s5
- if0 $s4 goto :if378_else
-if378_body:
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+12]
+ $s5 = $s4
+ if0 $s5 goto :if736_else
+if736_body:
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2874,27 +3639,30 @@ if378_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s5 = $v0
+ $s4 = $s5
[$s6+8] = $s4
$s4 = [$s6+8]
- $s5 = [$s4+0]
- $s3 = [$s5+80]
- $s5 = $s6
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s3 = [$s4+80]
+ $s4 = $s6
+ $s2 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- $a1 = $s5
+ $a0 = $s5
+ $a1 = $s2
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -2902,15 +3670,19 @@ if378_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
- goto :if378_end
-if378_else:
- $s5 = 0
-if378_end:
- $s7 = $s7
- $s2 = [$s7+0]
- $s3 = [$s2+32]
+ $s4 = $v0
+ $s2 = $s4
+ $s4 = $s2
+ goto :if736_end
+if736_else:
+ $s2 = 0
+ $s3 = $s2
+ $s4 = $s3
+if736_end:
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2918,18 +3690,20 @@ if378_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s3 = $v0
+ $s2 = $s3
$s3 = $s2
- if0 $s3 goto :if389_else
-if389_body:
- $s7 = $s7
+ if0 $s3 goto :if756_else
+if756_body:
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s2 = [$s3+16]
local[8] = $t3
@@ -2947,11 +3721,14 @@ if389_body:
$t7 = local[12]
$t8 = local[13]
$s3 = $v0
- [$s6+4] = $s3
- $s3 = [$s6+4]
+ $s2 = $s3
+ [$s6+4] = $s2
+ $s2 = [$s6+4]
+ $s3 = $s2
$s2 = [$s3+0]
$s7 = [$s2+80]
$s2 = $s6
+ $s6 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -2959,7 +3736,7 @@ if389_body:
local[12] = $t7
local[13] = $t8
$a0 = $s3
- $a1 = $s2
+ $a1 = $s6
call $s7
$t3 = local[8]
$t4 = local[9]
@@ -2967,14 +3744,19 @@ if389_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $s5 = $s6
- goto :if389_end
-if389_else:
- $s5 = 0
-if389_end:
- $s5 = 0
- $v0 = $s5
+ $s2 = $v0
+ $s6 = $s2
+ $s4 = $s6
+ goto :if756_end
+if756_else:
+ $s6 = 0
+ $s2 = $s6
+ $s4 = $s2
+if756_end:
+ $s2 = 0
+ $s4 = $s2
+ $s2 = $s4
+ $v0 = $s2
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -2995,7 +3777,8 @@ func MyVisitor_visit [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = $a1
- $s7 = $s7
+ $s5 = $s7
+ $s7 = $s5
$s5 = [$s7+0]
$s4 = [$s5+28]
local[8] = $t3
@@ -3014,11 +3797,13 @@ func MyVisitor_visit [in 0, out 0, local 14]
$t8 = local[13]
$s5 = $v0
$s4 = $s5
- if0 $s4 goto :if401_else
-if401_body:
- $s7 = $s7
- $s4 = [$s7+0]
- $s5 = [$s4+12]
+ $s5 = $s4
+ if0 $s5 goto :if779_else
+if779_body:
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+12]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -3026,27 +3811,30 @@ if401_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s5
+ call $s4
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s5 = $v0
+ $s4 = $s5
[$s6+12] = $s4
$s4 = [$s6+12]
- $s5 = [$s4+0]
- $s3 = [$s5+80]
- $s5 = $s6
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s3 = [$s4+80]
+ $s4 = $s6
+ $s2 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s4
- $a1 = $s5
+ $a0 = $s5
+ $a1 = $s2
call $s3
$t3 = local[8]
$t4 = local[9]
@@ -3054,15 +3842,19 @@ if401_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s5 = $s2
- goto :if401_end
-if401_else:
- $s5 = 0
-if401_end:
- $s7 = $s7
- $s2 = [$s7+0]
- $s3 = [$s2+20]
+ $s4 = $v0
+ $s2 = $s4
+ $s4 = $s2
+ goto :if779_end
+if779_else:
+ $s2 = 0
+ $s3 = $s2
+ $s4 = $s3
+if779_end:
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+20]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -3070,17 +3862,19 @@ if401_end:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s3 = $v0
+ $s2 = $s3
$s3 = $s2
PrintIntS($s3 )
- $s7 = $s7
+ $s3 = $s7
+ $s7 = $s3
$s3 = [$s7+0]
$s2 = [$s3+32]
local[8] = $t3
@@ -3099,11 +3893,13 @@ if401_end:
$t8 = local[13]
$s3 = $v0
$s2 = $s3
- if0 $s2 goto :if416_else
-if416_body:
- $s7 = $s7
- $s2 = [$s7+0]
- $s3 = [$s2+16]
+ $s3 = $s2
+ if0 $s3 goto :if805_else
+if805_body:
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+16]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -3111,27 +3907,30 @@ if416_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- call $s3
+ call $s2
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s3 = $v0
+ $s2 = $s3
[$s6+8] = $s2
$s2 = [$s6+8]
- $s3 = [$s2+0]
- $s7 = [$s3+80]
- $s3 = $s6
+ $s3 = $s2
+ $s2 = [$s3+0]
+ $s7 = [$s2+80]
+ $s2 = $s6
+ $s6 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s2
- $a1 = $s3
+ $a0 = $s3
+ $a1 = $s6
call $s7
$t3 = local[8]
$t4 = local[9]
@@ -3139,14 +3938,19 @@ if416_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $s5 = $s6
- goto :if416_end
-if416_else:
- $s5 = 0
-if416_end:
- $s5 = 0
- $v0 = $s5
+ $s2 = $v0
+ $s6 = $s2
+ $s4 = $s6
+ goto :if805_end
+if805_else:
+ $s6 = 0
+ $s2 = $s6
+ $s4 = $s2
+if805_end:
+ $s2 = 0
+ $s4 = $s2
+ $s2 = $s4
+ $v0 = $s2
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex29.s b/output/ex29.s
new file mode 100644
index 0000000..1f8eae9
--- /dev/null
+++ b/output/ex29.s
@@ -0,0 +1,87 @@
+.data
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex29.vaporm b/output/ex29.vaporm
index e69de29..f78e00f 100644
--- a/output/ex29.vaporm
+++ b/output/ex29.vaporm
@@ -0,0 +1,45 @@
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+
+
+
diff --git a/output/ex30.s b/output/ex30.s
new file mode 100644
index 0000000..c7f419f
--- /dev/null
+++ b/output/ex30.s
@@ -0,0 +1,119 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 22
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex30.vaporm b/output/ex30.vaporm
index e69de29..5bd6709 100644
--- a/output/ex30.vaporm
+++ b/output/ex30.vaporm
@@ -0,0 +1,67 @@
+const functable_A
+ :A_foo
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func A_foo [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = 22
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex31.s b/output/ex31.s
new file mode 100644
index 0000000..90309ff
--- /dev/null
+++ b/output/ex31.s
@@ -0,0 +1,158 @@
+.data
+functable_A:
+ A_foo
+ A_bar
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 22
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_bar:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 42
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex31.vaporm b/output/ex31.vaporm
index e69de29..7b89ca0 100644
--- a/output/ex31.vaporm
+++ b/output/ex31.vaporm
@@ -0,0 +1,96 @@
+const functable_A
+ :A_foo
+ :A_bar
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(8 )
+ [$s7+0] = :functable_A
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func A_foo [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = 22
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func A_bar [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = 42
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex32.s b/output/ex32.s
new file mode 100644
index 0000000..1950697
--- /dev/null
+++ b/output/ex32.s
@@ -0,0 +1,162 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 12
+ move $s4 $s7
+ li $s7 14
+ move $s3 $s7
+ li $s7 15
+ move $s2 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ move $a2 $s3
+ move $a3 $s2
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s2 $s7
+ move $s7 $s2
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ li $s4 22
+ move $s3 $s4
+ move $s4 $s3
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex32.vaporm b/output/ex32.vaporm
index e69de29..f7d8a98 100644
--- a/output/ex32.vaporm
+++ b/output/ex32.vaporm
@@ -0,0 +1,106 @@
+const functable_A
+ :A_foo
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(8 )
+ [$s7+0] = :functable_A
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
+ $s7 = 12
+ $s4 = $s7
+ $s7 = 14
+ $s3 = $s7
+ $s7 = 15
+ $s2 = $s7
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ $a2 = $s3
+ $a3 = $s2
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s2 = $s7
+ $s7 = $s2
+ PrintIntS($s7 )
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func A_foo [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $a2
+ $s3 = $a3
+ $s4 = 22
+ $s3 = $s4
+ $s4 = $s3
+ $v0 = $s4
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex33.s b/output/ex33.s
new file mode 100644
index 0000000..e278af7
--- /dev/null
+++ b/output/ex33.s
@@ -0,0 +1,239 @@
+.data
+functable_A:
+ A_foo
+ A_bar
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 16
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 0
+ li $s4 1
+ move $a0 $s7
+ move $t9 $s4
+ sub $s3 $a0 $t9
+ move $s4 $s3
+ li $s3 400
+ move $s7 $s3
+ li $s3 6
+ li $s2 7
+ move $a0 $s3
+ move $t9 $s2
+ mul $s1 $a0 $t9
+ move $s2 $s1
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ move $a2 $s7
+ move $a3 $s2
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s1 $v0
+ move $s2 $s1
+ move $s1 $s2
+ move $a0 $s1
+ jal _print
+ move $s1 $s6
+ move $s6 $s1
+ lw $s1 0($s6)
+ lw $s2 0($s1)
+ li $s1 0
+ li $s7 1
+ move $a0 $s1
+ move $t9 $s7
+ add $s4 $a0 $t9
+ move $s7 $s4
+ li $s4 400
+ move $s1 $s4
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ move $a2 $s1
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s1 $s4
+ move $s4 $s1
+ move $a0 $s4
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ li $s4 3
+ move $s6 $s4
+ sw $s6 0($s5)
+ li $s6 22
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_bar:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ li $s4 6
+ move $s3 $s4
+ move $s4 $s3
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex33.vaporm b/output/ex33.vaporm
index a0164ce..1a3c274 100644
--- a/output/ex33.vaporm
+++ b/output/ex33.vaporm
@@ -13,18 +13,22 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(16 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+4]
$s7 = 0
$s4 = 1
$s3 = Sub($s7 $s4 )
- $s4 = 6
- $s7 = 7
- $s2 = MulS($s4 $s7 )
- $s1 = $s3
- $s1 = 400
- $s1 = $s2
+ $s4 = $s3
+ $s3 = 400
+ $s7 = $s3
+ $s3 = 6
+ $s2 = 7
+ $s1 = MulS($s3 $s2 )
+ $s2 = $s1
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -34,7 +38,7 @@ func Main [in 0, out 0, local 14]
$a0 = $s6
$a1 = $s4
$a2 = $s7
- $a3 = $s1
+ $a3 = $s2
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -42,10 +46,12 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
+ $s1 = $v0
+ $s2 = $s1
$s1 = $s2
PrintIntS($s1 )
- $s6 = $s6
+ $s1 = $s6
+ $s6 = $s1
$s1 = [$s6+0]
$s2 = [$s1+0]
$s1 = 0
@@ -53,6 +59,7 @@ func Main [in 0, out 0, local 14]
$s4 = Add($s1 $s7 )
$s7 = $s4
$s4 = 400
+ $s1 = $s4
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -61,7 +68,7 @@ func Main [in 0, out 0, local 14]
local[13] = $t8
$a0 = $s6
$a1 = $s7
- $a2 = $s4
+ $a2 = $s1
call $s2
$t3 = local[8]
$t4 = local[9]
@@ -69,7 +76,8 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
+ $s4 = $v0
+ $s1 = $s4
$s4 = $s1
PrintIntS($s4 )
$s0 = local[0]
@@ -93,9 +101,13 @@ func A_foo [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
- [$s5+8] = 3
- $s5 = 22
- $v0 = $s5
+ $s4 = 3
+ $s6 = $s4
+ [$s5+8] = $s6
+ $s6 = 22
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -119,6 +131,8 @@ func A_bar [in 0, out 0, local 14]
$s7 = $a2
$s3 = $a3
$s4 = 6
+ $s3 = $s4
+ $s4 = $s3
$v0 = $s4
$s0 = local[0]
$s1 = local[1]
diff --git a/output/ex34.s b/output/ex34.s
new file mode 100644
index 0000000..71005cb
--- /dev/null
+++ b/output/ex34.s
@@ -0,0 +1,162 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ li $s7 1
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 2
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ li $s7 42
+ move $s6 $s7
+ sw $s6 0($s5)
+ lw $s6 0($s5)
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex34.vaporm b/output/ex34.vaporm
index 28464c6..9efa4fc 100644
--- a/output/ex34.vaporm
+++ b/output/ex34.vaporm
@@ -12,12 +12,18 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_A
$s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = 1
+ $s5 = $s7
+ $s7 = $s5
PrintIntS($s7 )
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
$s7 = 2
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -25,7 +31,7 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -33,7 +39,8 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s7 = $v0
+ $s4 = $s7
$s7 = $s4
PrintIntS($s7 )
$s0 = local[0]
@@ -54,11 +61,15 @@ func A_foo [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+4] = 42
- $s7 = [$s6+4]
- $v0 = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = 42
+ $s6 = $s7
+ [$s5+4] = $s6
+ $s6 = [$s5+4]
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex35.s b/output/ex35.s
new file mode 100644
index 0000000..37907a5
--- /dev/null
+++ b/output/ex35.s
@@ -0,0 +1,151 @@
+.data
+functable_Fac:
+ Fac_ComputeFac
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Fac
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 10
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Fac_ComputeFac:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ li $s7 4
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex35.vaporm b/output/ex35.vaporm
index 4bc2307..292192c 100644
--- a/output/ex35.vaporm
+++ b/output/ex35.vaporm
@@ -12,17 +12,19 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_Fac
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
- $s7 = 10
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 10
+ $s4 = $s6
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
- $a1 = $s7
+ $a0 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -30,9 +32,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
- $s7 = $s4
- PrintIntS($s7 )
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -54,6 +57,8 @@ func Fac_ComputeFac [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = 4
+ $s5 = $s7
+ $s7 = $s5
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
diff --git a/output/ex36.s b/output/ex36.s
new file mode 100644
index 0000000..8d76c8b
--- /dev/null
+++ b/output/ex36.s
@@ -0,0 +1,157 @@
+.data
+functable_Fac:
+ Fac_ComputeFac
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Fac
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 10
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Fac_ComputeFac:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ li $s5 4
+ move $s6 $s5
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex36.vaporm b/output/ex36.vaporm
index 7018dac..c381aed 100644
--- a/output/ex36.vaporm
+++ b/output/ex36.vaporm
@@ -12,10 +12,14 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_Fac
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
$s7 = 10
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -23,7 +27,7 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -31,7 +35,8 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s7 = $v0
+ $s4 = $s7
$s7 = $s4
PrintIntS($s7 )
$s0 = local[0]
@@ -52,11 +57,15 @@ func Fac_ComputeFac [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s5 = $a0
- $s6 = $a1
- $s7 = 4
- $s5 = $s7
- $v0 = $s5
+ $s6 = $a0
+ $s7 = $a1
+ $s5 = 4
+ $s6 = $s5
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex37.s b/output/ex37.s
new file mode 100644
index 0000000..91bc963
--- /dev/null
+++ b/output/ex37.s
@@ -0,0 +1,172 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s6 $s7
+ move $s7 $s6
+while11_test:
+ move $s6 $s7
+ li $s2 10
+ move $a0 $s6
+ move $t9 $s2
+ slt $s3 $a0 $t9
+ move $s0 $s3
+ move $s1 $s0
+ beqz $s1 while11_end
+while11_body:
+ move $t7 $s7
+ li $s5 1
+ move $a0 $t7
+ move $t9 $s5
+ add $t6 $a0 $t9
+ move $s4 $t6
+ move $s7 $s4
+ j while11_test
+while11_end:
+ move $t6 $s7
+ move $s7 $t6
+ move $t6 $s7
+ move $v0 $t6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex37.vaporm b/output/ex37.vaporm
index d3dfb82..6097b37 100644
--- a/output/ex37.vaporm
+++ b/output/ex37.vaporm
@@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -52,21 +56,27 @@ func A_foo [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = 0
-while5_test:
$s6 = $s7
- $s4 = 10
- $s5 = LtS($s6 $s4 )
- $s2 = $s5
- if0 $s2 goto :while5_end
-while5_body:
- $s0 = $s7
- $s1 = 1
- $s3 = Add($s0 $s1 )
- $s7 = $s3
- goto :while5_test
-while5_end:
- $s0 = $s7
- $v0 = $s0
+ $s7 = $s6
+while11_test:
+ $s6 = $s7
+ $s2 = 10
+ $s3 = LtS($s6 $s2 )
+ $s0 = $s3
+ $s1 = $s0
+ if0 $s1 goto :while11_end
+while11_body:
+ $t7 = $s7
+ $s5 = 1
+ $t6 = Add($t7 $s5 )
+ $s4 = $t6
+ $s7 = $s4
+ goto :while11_test
+while11_end:
+ $t6 = $s7
+ $s7 = $t6
+ $t6 = $s7
+ $v0 = $t6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex38.s b/output/ex38.s
new file mode 100644
index 0000000..91bc963
--- /dev/null
+++ b/output/ex38.s
@@ -0,0 +1,172 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s6 $s7
+ move $s7 $s6
+while11_test:
+ move $s6 $s7
+ li $s2 10
+ move $a0 $s6
+ move $t9 $s2
+ slt $s3 $a0 $t9
+ move $s0 $s3
+ move $s1 $s0
+ beqz $s1 while11_end
+while11_body:
+ move $t7 $s7
+ li $s5 1
+ move $a0 $t7
+ move $t9 $s5
+ add $t6 $a0 $t9
+ move $s4 $t6
+ move $s7 $s4
+ j while11_test
+while11_end:
+ move $t6 $s7
+ move $s7 $t6
+ move $t6 $s7
+ move $v0 $t6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex38.vaporm b/output/ex38.vaporm
index d3dfb82..6097b37 100644
--- a/output/ex38.vaporm
+++ b/output/ex38.vaporm
@@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -52,21 +56,27 @@ func A_foo [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = 0
-while5_test:
$s6 = $s7
- $s4 = 10
- $s5 = LtS($s6 $s4 )
- $s2 = $s5
- if0 $s2 goto :while5_end
-while5_body:
- $s0 = $s7
- $s1 = 1
- $s3 = Add($s0 $s1 )
- $s7 = $s3
- goto :while5_test
-while5_end:
- $s0 = $s7
- $v0 = $s0
+ $s7 = $s6
+while11_test:
+ $s6 = $s7
+ $s2 = 10
+ $s3 = LtS($s6 $s2 )
+ $s0 = $s3
+ $s1 = $s0
+ if0 $s1 goto :while11_end
+while11_body:
+ $t7 = $s7
+ $s5 = 1
+ $t6 = Add($t7 $s5 )
+ $s4 = $t6
+ $s7 = $s4
+ goto :while11_test
+while11_end:
+ $t6 = $s7
+ $s7 = $t6
+ $t6 = $s7
+ $v0 = $t6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex39.s b/output/ex39.s
new file mode 100644
index 0000000..35002fa
--- /dev/null
+++ b/output/ex39.s
@@ -0,0 +1,121 @@
+.data
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $s7 0
+ move $s6 $s7
+ move $s7 $s6
+ li $s6 2
+ move $s5 $s7
+ move $a0 $s6
+ move $t9 $s5
+ mul $s4 $a0 $t9
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s4
+ move $s6 $s7
+ move $a0 $s5
+ move $t9 $s6
+ add $s3 $a0 $t9
+ move $s6 $s3
+ move $s4 $s6
+ move $s6 $s4
+ li $s3 1
+ move $a0 $s6
+ move $t9 $s3
+ sub $s5 $a0 $t9
+ move $s3 $s5
+ move $s4 $s3
+ move $s3 $s7
+ move $s7 $s3
+ move $s3 $s7
+ move $a0 $s3
+ jal _print
+ move $s3 $s4
+ move $s4 $s3
+ move $s3 $s4
+ move $a0 $s3
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex39.vaporm b/output/ex39.vaporm
index 0fa4db7..15c6c79 100644
--- a/output/ex39.vaporm
+++ b/output/ex39.vaporm
@@ -8,22 +8,31 @@ func Main [in 0, out 0, local 14]
local[6] = $s6
local[7] = $s7
$s7 = 0
+ $s6 = $s7
+ $s7 = $s6
$s6 = 2
$s5 = $s7
$s4 = MulS($s6 $s5 )
$s5 = $s4
$s4 = $s5
+ $s5 = $s4
$s6 = $s7
- $s3 = Add($s4 $s6 )
- $s5 = $s3
+ $s3 = Add($s5 $s6 )
+ $s6 = $s3
+ $s4 = $s6
+ $s6 = $s4
+ $s3 = 1
+ $s5 = Sub($s6 $s3 )
$s3 = $s5
- $s6 = 1
- $s4 = Sub($s3 $s6 )
- $s5 = $s4
- $s4 = $s7
- PrintIntS($s4 )
- $s4 = $s5
- PrintIntS($s4 )
+ $s4 = $s3
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = $s7
+ PrintIntS($s3 )
+ $s3 = $s4
+ $s4 = $s3
+ $s3 = $s4
+ PrintIntS($s3 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex40.s b/output/ex40.s
new file mode 100644
index 0000000..c8200a1
--- /dev/null
+++ b/output/ex40.s
@@ -0,0 +1,164 @@
+.data
+functable_A:
+ A_add_two
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 12
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_add_two:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ li $s7 2
+ move $s4 $s7
+ sw $s4 0($s5)
+ move $s4 $s6
+ lw $s7 0($s5)
+ move $a0 $s4
+ move $t9 $s7
+ add $s5 $a0 $t9
+ move $s7 $s5
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex40.vaporm b/output/ex40.vaporm
index 5ee4e28..ca36115 100644
--- a/output/ex40.vaporm
+++ b/output/ex40.vaporm
@@ -12,10 +12,14 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
$s7 = 12
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -23,7 +27,7 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -31,7 +35,8 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s7 = $v0
+ $s4 = $s7
$s7 = $s4
PrintIntS($s7 )
$s0 = local[0]
@@ -52,15 +57,20 @@ func A_add_two [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+4] = 2
- $s5 = $s7
- $s4 = [$s6+4]
- $s6 = Add($s5 $s4 )
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = 2
+ $s4 = $s7
+ [$s5+4] = $s4
+ $s4 = $s6
+ $s7 = [$s5+4]
+ $s5 = Add($s4 $s7 )
+ $s7 = $s5
+ $s6 = $s7
$s7 = $s6
$s6 = $s7
- $v0 = $s6
+ $s7 = $s6
+ $v0 = $s7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex41.s b/output/ex41.s
new file mode 100644
index 0000000..9e281c1
--- /dev/null
+++ b/output/ex41.s
@@ -0,0 +1,228 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 92
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s6 $s7
+ move $s7 $s6
+ li $s6 0
+ move $s5 $s6
+ lw $t0 -68($fp)
+ move $t0 $s5
+ sw $t0 -68($fp)
+while13_test:
+ move $s5 $s7
+ lw $t0 -76($fp)
+ li $t0 10
+ sw $t0 -76($fp)
+ lw $t0 -80($fp)
+ lw $t1 -76($fp)
+ move $a0 $s5
+ move $t9 $t1
+ slt $t0 $a0 $t9
+ sw $t1 -76($fp)
+ sw $t0 -80($fp)
+ lw $t0 -72($fp)
+ lw $t1 -80($fp)
+ move $t0 $t1
+ sw $t1 -80($fp)
+ sw $t0 -72($fp)
+ lw $t0 -72($fp)
+ move $s0 $t0
+ sw $t0 -72($fp)
+ beqz $s0 while13_end
+while13_body:
+while19_test:
+ lw $t0 -92($fp)
+ lw $t1 -68($fp)
+ move $t0 $t1
+ sw $t1 -68($fp)
+ sw $t0 -92($fp)
+ li $s3 100
+ lw $t0 -84($fp)
+ lw $t1 -92($fp)
+ move $a0 $t1
+ move $t9 $s3
+ slt $t0 $a0 $t9
+ sw $t1 -92($fp)
+ sw $t0 -84($fp)
+ lw $t0 -84($fp)
+ move $s4 $t0
+ sw $t0 -84($fp)
+ move $s2 $s4
+ beqz $s2 while19_end
+while19_body:
+ lw $t0 -68($fp)
+ move $t4 $t0
+ sw $t0 -68($fp)
+ li $t3 1
+ move $a0 $t4
+ move $t9 $t3
+ add $s6 $a0 $t9
+ move $t5 $s6
+ lw $t0 -68($fp)
+ move $t0 $t5
+ sw $t0 -68($fp)
+ j while19_test
+while19_end:
+ move $s1 $s7
+ lw $t0 -88($fp)
+ li $t0 1
+ sw $t0 -88($fp)
+ lw $t0 -88($fp)
+ move $a0 $s1
+ move $t9 $t0
+ add $t7 $a0 $t9
+ sw $t0 -88($fp)
+ move $t6 $t7
+ move $s7 $t6
+ j while13_test
+while13_end:
+ lw $t0 -68($fp)
+ move $t6 $t0
+ sw $t0 -68($fp)
+ move $t7 $t6
+ move $t6 $t7
+ move $v0 $t6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 92
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex41.vaporm b/output/ex41.vaporm
index 54baf4f..d86b4d1 100644
--- a/output/ex41.vaporm
+++ b/output/ex41.vaporm
@@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -41,7 +45,7 @@ func Main [in 0, out 0, local 14]
$s6 = local[6]
$s7 = local[7]
ret
-func A_foo [in 0, out 0, local 17]
+func A_foo [in 0, out 0, local 21]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -52,53 +56,79 @@ func A_foo [in 0, out 0, local 17]
local[7] = $s7
$s6 = $a0
$s7 = 0
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = 0
+ $s5 = $s6
$t0 = local[14]
- $t0 = 0
+ $t0 = $s5
local[14] = $t0
-while5_test:
+while13_test:
$s5 = $s7
- $t7 = 10
- $s1 = LtS($s5 $t7 )
- $s0 = $s1
- if0 $s0 goto :while5_end
-while5_body:
-while10_test:
- $t0 = local[14]
- $t6 = $t0
- local[14] = $t0
+ $t0 = local[16]
+ $t0 = 10
+ local[16] = $t0
+ $t0 = local[17]
+ $t1 = local[16]
+ $t0 = LtS($s5 $t1 )
+ local[16] = $t1
+ local[17] = $t0
$t0 = local[15]
- $t0 = 100
+ $t1 = local[17]
+ $t0 = $t1
+ local[17] = $t1
local[15] = $t0
$t0 = local[15]
- $t5 = LtS($t6 $t0 )
+ $s0 = $t0
local[15] = $t0
- $t0 = local[16]
- $t0 = $t5
- local[16] = $t0
- $t0 = local[16]
- if0 $t0 goto :while10_end
- local[16] = $t0
-while10_body:
+ if0 $s0 goto :while13_end
+while13_body:
+while19_test:
+ $t0 = local[20]
+ $t1 = local[14]
+ $t0 = $t1
+ local[14] = $t1
+ local[20] = $t0
+ $s3 = 100
+ $t0 = local[18]
+ $t1 = local[20]
+ $t0 = LtS($t1 $s3 )
+ local[20] = $t1
+ local[18] = $t0
+ $t0 = local[18]
+ $s4 = $t0
+ local[18] = $t0
+ $s2 = $s4
+ if0 $s2 goto :while19_end
+while19_body:
$t0 = local[14]
$t4 = $t0
local[14] = $t0
$t3 = 1
$s6 = Add($t4 $t3 )
+ $t5 = $s6
$t0 = local[14]
- $t0 = $s6
+ $t0 = $t5
local[14] = $t0
- goto :while10_test
-while10_end:
- $s4 = $s7
- $s2 = 1
- $s3 = Add($s4 $s2 )
- $s7 = $s3
- goto :while5_test
-while5_end:
+ goto :while19_test
+while19_end:
+ $s1 = $s7
+ $t0 = local[19]
+ $t0 = 1
+ local[19] = $t0
+ $t0 = local[19]
+ $t7 = Add($s1 $t0 )
+ local[19] = $t0
+ $t6 = $t7
+ $s7 = $t6
+ goto :while13_test
+while13_end:
$t0 = local[14]
- $t5 = $t0
+ $t6 = $t0
local[14] = $t0
- $v0 = $t5
+ $t7 = $t6
+ $t6 = $t7
+ $v0 = $t6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex42.s b/output/ex42.s
new file mode 100644
index 0000000..b716f06
--- /dev/null
+++ b/output/ex42.s
@@ -0,0 +1,164 @@
+.data
+functable_A:
+ A_Init
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 72
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 24
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s6 $s6
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 42
+ li $s4 10000
+ li $s3 1
+ li $s2 156
+ li $s1 123
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s7
+ move $a2 $s4
+ move $a3 $s3
+ sw $s2 -72($fp)
+ sw $s1 -68($fp)
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s0 $v0
+ move $s1 $s0
+ move $a0 $s1
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 72
+ jr $ra
+A_Init:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s3 $a3
+ lw $s4 0($fp)
+ lw $s2 4($fp)
+ sw $s6 0($s5)
+ sw $s7 0($s5)
+ sw $s3 0($s5)
+ sw $s4 0($s5)
+ sw $s2 0($s5)
+ li $s2 1
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex43.s b/output/ex43.s
new file mode 100644
index 0000000..32c51ea
--- /dev/null
+++ b/output/ex43.s
@@ -0,0 +1,175 @@
+.data
+functable_A:
+ A_foo
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 4
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 1
+ move $s6 $s7
+ move $s7 $s6
+ li $s6 5
+ move $s5 $s7
+ move $a0 $s6
+ move $t9 $s5
+ slt $s4 $a0 $t9
+ move $s5 $s4
+ move $s4 $s5
+ beqz $s4 if11_else
+if11_body:
+ li $s4 1
+ move $s5 $s4
+ move $s4 $s5
+ move $a0 $s4
+ jal _print
+ j if11_end
+if11_else:
+ li $s4 0
+ move $s5 $s4
+ move $s4 $s5
+ move $a0 $s4
+ jal _print
+if11_end:
+ move $s4 $s7
+ move $s7 $s4
+ move $s4 $s7
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex43.vaporm b/output/ex43.vaporm
index 93d7ecb..95edeec 100644
--- a/output/ex43.vaporm
+++ b/output/ex43.vaporm
@@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(4 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -52,21 +56,30 @@ func A_foo [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = 1
+ $s6 = $s7
+ $s7 = $s6
$s6 = 5
$s5 = $s7
$s4 = LtS($s6 $s5 )
$s5 = $s4
- if0 $s5 goto :if5_else
-if5_body:
- $s5 = 1
- PrintIntS($s5 )
- goto :if5_end
-if5_else:
- $s5 = 0
- PrintIntS($s5 )
-if5_end:
- $s5 = $s7
- $v0 = $s5
+ $s4 = $s5
+ if0 $s4 goto :if11_else
+if11_body:
+ $s4 = 1
+ $s5 = $s4
+ $s4 = $s5
+ PrintIntS($s4 )
+ goto :if11_end
+if11_else:
+ $s4 = 0
+ $s5 = $s4
+ $s4 = $s5
+ PrintIntS($s4 )
+if11_end:
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = $s7
+ $v0 = $s4
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex44.s b/output/ex44.s
new file mode 100644
index 0000000..7f3786b
--- /dev/null
+++ b/output/ex44.s
@@ -0,0 +1,160 @@
+.data
+functable_Operator:
+ Operator_compute
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Operator
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Operator_compute:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 1
+ li $s5 0
+ li $a0 1
+ move $t9 $s7
+NULL $s4 $a0 $t9
+ li $a0 1
+ move $t9 $s5
+NULL $s7 $a0 $t9
+ move $a0 $s4
+ move $t9 $s7
+NULL $s5 $a0 $t9
+ move $s7 $s5
+ sw $s7 0($s6)
+ li $s7 0
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex44.vaporm b/output/ex44.vaporm
index b2537e8..b36b539 100644
--- a/output/ex44.vaporm
+++ b/output/ex44.vaporm
@@ -12,15 +12,16 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_Operator
$s6 = $s7
- $s7 = [$s6+0]
- $s5 = [$s7+0]
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s6
+ $a0 = $s7
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -28,9 +29,10 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s7 = $v0
- $s5 = $s7
- PrintIntS($s5 )
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -55,9 +57,12 @@ func Operator_compute [in 0, out 0, local 14]
$s4 = Eq(1 $s7 )
$s7 = Eq(1 $s5 )
$s5 = Eq($s4 $s7 )
- [$s6+4] = $s5
- $s5 = 0
- $v0 = $s5
+ $s7 = $s5
+ [$s6+4] = $s7
+ $s7 = 0
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex45.s b/output/ex45.s
new file mode 100644
index 0000000..dda2898
--- /dev/null
+++ b/output/ex45.s
@@ -0,0 +1,175 @@
+.data
+functable_A:
+ A_run
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $s5 $s7
+ move $s7 $s5
+ move $s5 $s7
+ move $a0 $s5
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_run:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 10
+ move $s5 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ sw $s7 0($s6)
+ lw $s7 0($s6)
+ move $s6 $s7
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex45.vaporm b/output/ex45.vaporm
index ed1c490..a6e35af 100644
--- a/output/ex45.vaporm
+++ b/output/ex45.vaporm
@@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -32,7 +35,10 @@ func Main [in 0, out 0, local 14]
$s7 = $v0
$s5 = $s7
$s7 = $s5
- PrintIntS($s7 )
+ $s5 = $s7
+ $s7 = $s5
+ $s5 = $s7
+ PrintIntS($s5 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -52,13 +58,15 @@ func A_run [in 0, out 0, local 14]
local[6] = $s6
local[7] = $s7
$s6 = $a0
+ $s7 = 10
+ $s5 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = 10
+ $a0 = $s5
call :AllocArray
$t3 = local[8]
$t4 = local[9]
@@ -67,9 +75,13 @@ func A_run [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s7 = $v0
+ $s5 = $s7
+ $s7 = $s5
[$s6+4] = $s7
$s7 = [$s6+4]
- $s6 = [$s7+0]
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s6 = $s7
$s7 = $s6
$v0 = $s7
$s0 = local[0]
diff --git a/output/ex46.s b/output/ex46.s
new file mode 100644
index 0000000..43c98f7
--- /dev/null
+++ b/output/ex46.s
@@ -0,0 +1,268 @@
+.data
+functable_A:
+ A_foo
+ A_bar
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 16
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 10
+ move $s4 $s7
+ li $s7 20
+ move $s3 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ move $a2 $s3
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s3 $s7
+ move $s7 $s3
+ move $s3 $s7
+ move $s7 $s3
+ move $s3 $s7
+ move $a0 $s3
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 0
+ move $s5 $s7
+ sw $s5 0($s6)
+ li $s5 1
+ li $s7 2
+ move $a0 $s5
+ move $t9 $s7
+ add $s4 $a0 $t9
+ move $s7 $s4
+ sw $s7 0($s6)
+ lw $s7 0($s6)
+ lw $s4 0($s6)
+ move $a0 $s7
+ move $t9 $s4
+ add $s5 $a0 $t9
+ move $s4 $s5
+ sw $s4 0($s6)
+ lw $s4 0($s6)
+ move $s6 $s4
+ move $s4 $s6
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_bar:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ move $s4 $s6
+ move $s6 $s4
+ sw $s6 0($s5)
+ move $s6 $s7
+ move $s7 $s6
+ sw $s7 0($s5)
+ lw $s7 0($s5)
+ lw $s6 0($s5)
+ move $a0 $s7
+ move $t9 $s6
+ mul $s5 $a0 $t9
+ move $s6 $s5
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex46.vaporm b/output/ex46.vaporm
index db39b37..6d0124f 100644
--- a/output/ex46.vaporm
+++ b/output/ex46.vaporm
@@ -13,7 +13,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(16 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -32,10 +35,12 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
- $s6 = $s6
- $s5 = [$s6+0]
- $s7 = [$s5+0]
+ $s7 = $s5
+ PrintIntS($s7 )
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -43,21 +48,25 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $s7
+ call $s5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
+ $s7 = $v0
+ $s5 = $s7
$s7 = $s5
PrintIntS($s7 )
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+4]
$s7 = 10
- $s4 = 20
+ $s4 = $s7
+ $s7 = 20
+ $s3 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -65,8 +74,8 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
- $a2 = $s4
+ $a1 = $s4
+ $a2 = $s3
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -74,9 +83,12 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s4 = $s3
- $s3 = $s4
+ $s7 = $v0
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = $s7
+ $s7 = $s3
+ $s3 = $s7
PrintIntS($s3 )
$s0 = local[0]
$s1 = local[1]
@@ -96,18 +108,24 @@ func A_foo [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
- [$s7+12] = 0
- $s6 = 1
- $s5 = 2
- $s4 = Add($s6 $s5 )
- [$s7+8] = $s4
- $s4 = [$s7+8]
- $s5 = [$s7+12]
- $s6 = Add($s4 $s5 )
- [$s7+12] = $s6
- $s6 = [$s7+12]
- $v0 = $s6
+ $s6 = $a0
+ $s7 = 0
+ $s5 = $s7
+ [$s6+12] = $s5
+ $s5 = 1
+ $s7 = 2
+ $s4 = Add($s5 $s7 )
+ $s7 = $s4
+ [$s6+8] = $s7
+ $s7 = [$s6+8]
+ $s4 = [$s6+12]
+ $s5 = Add($s7 $s4 )
+ $s4 = $s5
+ [$s6+12] = $s4
+ $s4 = [$s6+12]
+ $s6 = $s4
+ $s4 = $s6
+ $v0 = $s4
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -129,14 +147,21 @@ func A_bar [in 0, out 0, local 14]
$s5 = $a0
$s6 = $a1
$s7 = $a2
+ $s4 = $s6
+ $s6 = $s4
[$s5+8] = $s6
+ $s6 = $s7
+ $s7 = $s6
[$s5+12] = $s7
$s7 = [$s5+8]
$s6 = [$s5+12]
$s5 = MulS($s7 $s6 )
$s6 = $s5
$s5 = $s6
- $v0 = $s5
+ $s6 = $s5
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex47.s b/output/ex47.s
new file mode 100644
index 0000000..9009eb4
--- /dev/null
+++ b/output/ex47.s
@@ -0,0 +1,257 @@
+.data
+functable_A:
+ A_set
+ A_get
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 42
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s4 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_set:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ li $s7 12
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ sw $s7 0($s5)
+ lw $s7 0($s5)
+ li $s4 5
+ move $s3 $s4
+ move $a0 $s3
+ li $t9 4
+ mul $s4 $a0 $t9
+ move $a0 $s4
+ li $t9 4
+ add $s4 $a0 $t9
+ move $a0 $s7
+ move $t9 $s4
+ add $s4 $a0 $t9
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s4)
+ lw $s6 0($s5)
+ move $s5 $s6
+ lw $s6 0($s5)
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_get:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ lw $s6 0($s7)
+ move $s7 $s6
+ li $s6 5
+ move $a0 $s6
+ li $t9 4
+ mul $s5 $a0 $t9
+ move $a0 $s5
+ li $t9 4
+ add $s5 $a0 $t9
+ move $a0 $s7
+ move $t9 $s5
+ add $s5 $a0 $t9
+ lw $s7 0($s5)
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex47.vaporm b/output/ex47.vaporm
index 75c498c..71ad6a5 100644
--- a/output/ex47.vaporm
+++ b/output/ex47.vaporm
@@ -13,10 +13,14 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(12 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
$s7 = 42
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -24,7 +28,7 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -32,10 +36,12 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s7 = $v0
+ $s4 = $s7
$s7 = $s4
PrintIntS($s7 )
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s4 = [$s7+4]
local[8] = $t3
@@ -54,7 +60,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s4 = $s7
- PrintIntS($s4 )
+ $s7 = $s4
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -75,13 +82,15 @@ func A_set [in 0, out 0, local 14]
local[7] = $s7
$s5 = $a0
$s6 = $a1
+ $s7 = 12
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = 12
+ $a0 = $s4
call :AllocArray
$t3 = local[8]
$t4 = local[9]
@@ -90,16 +99,24 @@ func A_set [in 0, out 0, local 14]
$t7 = local[12]
$t8 = local[13]
$s7 = $v0
+ $s4 = $s7
+ $s7 = $s4
[$s5+8] = $s7
$s7 = [$s5+8]
- $s4 = MulS(5 4 )
+ $s4 = 5
+ $s3 = $s4
+ $s4 = MulS($s3 4 )
$s4 = Add($s4 4 )
$s4 = Add($s7 $s4 )
+ $s7 = $s6
+ $s6 = $s7
[$s4+0] = $s6
- $s4 = [$s5+8]
- $s5 = [$s4+0]
- $s4 = $s5
- $v0 = $s4
+ $s6 = [$s5+8]
+ $s5 = $s6
+ $s6 = [$s5+0]
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -118,14 +135,17 @@ func A_get [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = [$s6+8]
- $s6 = MulS(5 4 )
- $s6 = Add($s6 4 )
- $s6 = Add($s7 $s6 )
- $s7 = [$s6+0]
- $s6 = $s7
- $v0 = $s6
+ $s7 = $a0
+ $s6 = [$s7+8]
+ $s7 = $s6
+ $s6 = 5
+ $s5 = MulS($s6 4 )
+ $s5 = Add($s5 4 )
+ $s5 = Add($s7 $s5 )
+ $s7 = [$s5+0]
+ $s5 = $s7
+ $s7 = $s5
+ $v0 = $s7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex48.s b/output/ex48.s
new file mode 100644
index 0000000..c2aa396
--- /dev/null
+++ b/output/ex48.s
@@ -0,0 +1,211 @@
+.data
+functable_A:
+ A_set
+ A_get
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ li $s7 42
+ move $s4 $s7
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s4 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_set:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ lw $s6 0($s5)
+ move $s5 $s6
+ move $s6 $s5
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_get:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex48.vaporm b/output/ex48.vaporm
index 06fe967..be4a6c3 100644
--- a/output/ex48.vaporm
+++ b/output/ex48.vaporm
@@ -13,10 +13,14 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(12 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
$s7 = 42
+ $s4 = $s7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -24,7 +28,7 @@ func Main [in 0, out 0, local 14]
local[12] = $t7
local[13] = $t8
$a0 = $s6
- $a1 = $s7
+ $a1 = $s4
call $s5
$t3 = local[8]
$t4 = local[9]
@@ -32,10 +36,12 @@ func Main [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s4 = $v0
+ $s7 = $v0
+ $s4 = $s7
$s7 = $s4
PrintIntS($s7 )
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s4 = [$s7+4]
local[8] = $t3
@@ -54,7 +60,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s4 = $s7
- PrintIntS($s4 )
+ $s7 = $s4
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -73,11 +80,15 @@ func A_set [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
- [$s6+8] = $s7
- $s7 = [$s6+8]
- $v0 = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+8] = $s6
+ $s6 = [$s5+8]
+ $s5 = $s6
+ $s6 = $s5
+ $v0 = $s6
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -98,6 +109,8 @@ func A_get [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+8]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
diff --git a/output/ex49.s b/output/ex49.s
new file mode 100644
index 0000000..6eb3f62
--- /dev/null
+++ b/output/ex49.s
@@ -0,0 +1,189 @@
+.data
+functable_A:
+ A_set
+functable_B:
+ B_get
+ A_set
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_set:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 3
+ move $s5 $s7
+ sw $s5 0($s6)
+ li $s5 1
+ move $s6 $s5
+ move $s5 $s6
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+B_get:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 12
+ move $s5 $s7
+ sw $s5 0($s6)
+ lw $s5 0($s6)
+ move $s6 $s5
+ move $s5 $s6
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex49.vaporm b/output/ex49.vaporm
index 2c6d982..f7797f0 100644
--- a/output/ex49.vaporm
+++ b/output/ex49.vaporm
@@ -15,7 +15,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -34,7 +37,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -53,10 +57,14 @@ func A_set [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
- [$s7+4] = 3
- $s7 = 1
- $v0 = $s7
+ $s6 = $a0
+ $s7 = 3
+ $s5 = $s7
+ [$s6+4] = $s5
+ $s5 = 1
+ $s6 = $s5
+ $s5 = $s6
+ $v0 = $s5
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -75,10 +83,14 @@ func B_get [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
- [$s7+8] = 12
- $s6 = [$s7+8]
- $v0 = $s6
+ $s6 = $a0
+ $s7 = 12
+ $s5 = $s7
+ [$s6+8] = $s5
+ $s5 = [$s6+8]
+ $s6 = $s5
+ $s5 = $s6
+ $v0 = $s5
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex50.s b/output/ex50.s
new file mode 100644
index 0000000..cf06f9a
--- /dev/null
+++ b/output/ex50.s
@@ -0,0 +1,266 @@
+.data
+functable_A:
+ A_set_get
+functable_B:
+ B_get
+ B_set
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 8
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_A
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ lw $s7 0($s6)
+ lw $s5 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s5 $s7
+ move $s7 $s5
+ move $a0 $s7
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+A_set_get:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $a0 12
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_B
+ sw $t9 0($s7)
+ move $s5 $s7
+ move $s7 $s5
+ sw $s7 0($s6)
+ lw $s7 0($s6)
+ move $s5 $s7
+ lw $s7 0($s5)
+ lw $s4 0($s7)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s7 $v0
+ move $s4 $s7
+ move $s7 $s4
+ lw $s4 0($s6)
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s6 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s6
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s6 $s4
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+B_get:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+B_set:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $s7 12
+ move $s5 $s7
+ sw $s5 0($s6)
+ li $s5 1
+ move $s6 $s5
+ move $s5 $s6
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex50.vaporm b/output/ex50.vaporm
index 1a73739..31d6f6b 100644
--- a/output/ex50.vaporm
+++ b/output/ex50.vaporm
@@ -15,7 +15,10 @@ func Main [in 0, out 0, local 14]
$s7 = HeapAllocZ(8 )
[$s7+0] = :functable_A
$s6 = $s7
- $s6 = $s6
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$s7 = [$s6+0]
$s5 = [$s7+0]
local[8] = $t3
@@ -34,7 +37,8 @@ func Main [in 0, out 0, local 14]
$t8 = local[13]
$s7 = $v0
$s5 = $s7
- PrintIntS($s5 )
+ $s7 = $s5
+ PrintIntS($s7 )
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -56,17 +60,20 @@ func A_set_get [in 0, out 0, local 14]
$s6 = $a0
$s7 = HeapAllocZ(12 )
[$s7+0] = :functable_B
+ $s5 = $s7
+ $s7 = $s5
[$s6+4] = $s7
$s7 = [$s6+4]
- $s5 = [$s7+0]
- $s4 = [$s5+4]
+ $s5 = $s7
+ $s7 = [$s5+0]
+ $s4 = [$s7+4]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s7
+ $a0 = $s5
call $s4
$t3 = local[8]
$t4 = local[9]
@@ -74,28 +81,33 @@ func A_set_get [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- $s4 = $s5
- $s7 = [$s6+4]
- $s6 = [$s7+0]
- $s5 = [$s6+0]
+ $s7 = $v0
+ $s4 = $s7
+ $s7 = $s4
+ $s4 = [$s6+4]
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s6 = [$s4+0]
local[8] = $t3
local[9] = $t4
local[10] = $t5
local[11] = $t6
local[12] = $t7
local[13] = $t8
- $a0 = $s7
- call $s5
+ $a0 = $s5
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- $s4 = $s6
+ $s4 = $v0
$s6 = $s4
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
$v0 = $s6
$s0 = local[0]
$s1 = local[1]
@@ -117,6 +129,8 @@ func B_get [in 0, out 0, local 14]
local[7] = $s7
$s6 = $a0
$s7 = [$s6+8]
+ $s6 = $s7
+ $s7 = $s6
$v0 = $s7
$s0 = local[0]
$s1 = local[1]
@@ -136,10 +150,14 @@ func B_set [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
- [$s7+8] = 12
- $s7 = 1
- $v0 = $s7
+ $s6 = $a0
+ $s7 = 12
+ $s5 = $s7
+ [$s6+8] = $s5
+ $s5 = 1
+ $s6 = $s5
+ $s5 = $s6
+ $v0 = $s5
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex51.s b/output/ex51.s
new file mode 100644
index 0000000..47070b7
--- /dev/null
+++ b/output/ex51.s
@@ -0,0 +1,378 @@
+.data
+functable_Test:
+ Test_setval
+ Test_getval
+ Test_start
+ Test_next
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 24
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Test
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_setval:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $a2
+ lw $s4 0($s5)
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ li $t9 4
+ mul $s5 $a0 $t9
+ move $a0 $s5
+ li $t9 4
+ add $s5 $a0 $t9
+ move $a0 $s4
+ move $t9 $s5
+ add $s5 $a0 $t9
+ move $s4 $s7
+ move $s7 $s4
+ sw $s7 0($s5)
+ li $s7 0
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_getval:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ move $s7 $a1
+ lw $s5 0($s6)
+ move $s6 $s5
+ move $s5 $s7
+ move $a0 $s5
+ li $t9 4
+ mul $s7 $a0 $t9
+ move $a0 $s7
+ li $t9 4
+ add $s7 $a0 $t9
+ move $a0 $s6
+ move $t9 $s7
+ add $s7 $a0 $t9
+ lw $s6 0($s7)
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $s6 $s7
+ move $s5 $s6
+ move $s6 $s5
+ li $s5 10
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s4
+ jalr $AllocArray
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s5 $s4
+ sw $s5 0($s7)
+ li $a0 24
+ jal _heapAlloc
+ move $s5 $v0
+ la $t9 functable_Test
+ sw $t9 0($s5)
+ move $s4 $s5
+ move $s5 $s4
+ move $s4 $s5
+ move $s5 $s4
+ lw $s4 0($s5)
+ lw $s3 0($s4)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s5
+ jalr $s3
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s4 $v0
+ move $s3 $s4
+ sw $s3 0($s7)
+ move $s3 $s6
+ move $s6 $s3
+ lw $s3 0($s6)
+ lw $s4 0($s3)
+ li $s3 2
+ move $s5 $s3
+ li $s3 42
+ move $s2 $s3
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s6
+ move $a1 $s5
+ move $a2 $s2
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s3 $v0
+ move $s2 $s3
+ move $s3 $s2
+ move $s2 $s7
+ move $s5 $s2
+ sw $s5 0($s7)
+ lw $s5 0($s7)
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s2 0($s5)
+ li $s5 2
+ move $s4 $s5
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s2
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ move $s3 $s4
+ move $s4 $s3
+ move $s3 $s4
+ move $s4 $s3
+ move $v0 $s4
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_next:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ lw $s7 0($s6)
+ move $s6 $s7
+ move $s7 $s6
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex51.vaporm b/output/ex51.vaporm
new file mode 100644
index 0000000..d25f65e
--- /dev/null
+++ b/output/ex51.vaporm
@@ -0,0 +1,286 @@
+const functable_Test
+ :Test_setval
+ :Test_getval
+ :Test_start
+ :Test_next
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(24 )
+ [$s7+0] = :functable_Test
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+8]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_setval [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $a2
+ $s4 = [$s5+20]
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = MulS($s6 4 )
+ $s5 = Add($s5 4 )
+ $s5 = Add($s4 $s5 )
+ $s4 = $s7
+ $s7 = $s4
+ [$s5+0] = $s7
+ $s7 = 0
+ $s5 = $s7
+ $s7 = $s5
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_getval [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = $a1
+ $s5 = [$s6+20]
+ $s6 = $s5
+ $s5 = $s7
+ $s7 = MulS($s5 4 )
+ $s7 = Add($s7 4 )
+ $s7 = Add($s6 $s7 )
+ $s6 = [$s7+0]
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_start [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = $s7
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = 10
+ $s4 = $s5
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s4
+ call :AllocArray
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s4 = $s5
+ $s5 = $s4
+ [$s7+20] = $s5
+ $s5 = HeapAllocZ(24 )
+ [$s5+0] = :functable_Test
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = $s5
+ $s5 = $s4
+ $s4 = [$s5+0]
+ $s3 = [$s4+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ [$s7+16] = $s3
+ $s3 = $s6
+ $s6 = $s3
+ $s3 = [$s6+0]
+ $s4 = [$s3+0]
+ $s3 = 2
+ $s5 = $s3
+ $s3 = 42
+ $s2 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ $a2 = $s2
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = $s2
+ $s2 = $s7
+ $s5 = $s2
+ [$s7+16] = $s5
+ $s5 = [$s7+16]
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s2 = [$s5+4]
+ $s5 = 2
+ $s4 = $s5
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s4
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s4 = $s5
+ $s3 = $s4
+ $s4 = $s3
+ $s3 = $s4
+ $s4 = $s3
+ $v0 = $s4
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_next [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = [$s6+16]
+ $s6 = $s7
+ $s7 = $s6
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex52.s b/output/ex52.s
new file mode 100644
index 0000000..f8ee1fc
--- /dev/null
+++ b/output/ex52.s
@@ -0,0 +1,259 @@
+.data
+functable_Test:
+ Test_start
+ Test_next
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 16
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Test
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s5 $s6
+ move $s6 $s5
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s6 $a0
+ li $a0 16
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Test
+ sw $t9 0($s7)
+ move $s5 $s7
+ move $s7 $s5
+ sw $s7 0($s6)
+ li $s7 1
+ move $s5 $s7
+ sw $s5 0($s6)
+ lw $s5 0($s6)
+ move $s7 $s5
+ lw $s5 0($s7)
+ lw $s4 0($s5)
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ jalr $s4
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s5 $v0
+ move $s4 $s5
+ sw $s4 0($s6)
+ lw $s4 0($s6)
+ move $s6 $s4
+ move $a0 $s6
+ li $t9 0
+NULL $s4 $a0 $t9
+ move $s6 $s4
+ move $s4 $s6
+ move $s6 $s4
+ beqz $s6 if17_else
+if17_body:
+ li $s6 1
+ move $s4 $s6
+ move $s6 $s4
+ j if17_end
+if17_else:
+ li $s4 3
+ move $s5 $s4
+ move $s6 $s5
+if17_end:
+ move $s5 $s6
+ move $s6 $s5
+ move $s5 $s6
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_next:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ li $s6 1
+ li $s5 7
+ li $s4 8
+ move $a0 $s5
+ move $t9 $s4
+ slt $s3 $a0 $t9
+ move $s4 $s3
+ move $s3 $s4
+ li $a0 1
+ move $t9 $s6
+NULL $s4 $a0 $t9
+ li $a0 1
+ move $t9 $s3
+NULL $s6 $a0 $t9
+ move $a0 $s4
+ move $t9 $s6
+NULL $s3 $a0 $t9
+ move $s6 $s3
+ move $s3 $s6
+ lw $s6 0($s7)
+ li $a0 1
+ move $t9 $s3
+NULL $s7 $a0 $t9
+ li $a0 1
+ move $t9 $s6
+NULL $s3 $a0 $t9
+ move $a0 $s7
+ move $t9 $s3
+NULL $s6 $a0 $t9
+ move $s3 $s6
+ move $s6 $s3
+ move $s3 $s6
+ move $s6 $s3
+ move $v0 $s6
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex52.vaporm b/output/ex52.vaporm
new file mode 100644
index 0000000..b18511e
--- /dev/null
+++ b/output/ex52.vaporm
@@ -0,0 +1,177 @@
+const functable_Test
+ :Test_start
+ :Test_next
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(16 )
+ [$s7+0] = :functable_Test
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s5 = $s6
+ $s6 = $s5
+ PrintIntS($s6 )
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_start [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s6 = $a0
+ $s7 = HeapAllocZ(16 )
+ [$s7+0] = :functable_Test
+ $s5 = $s7
+ $s7 = $s5
+ [$s6+8] = $s7
+ $s7 = 1
+ $s5 = $s7
+ [$s6+12] = $s5
+ $s5 = [$s6+8]
+ $s7 = $s5
+ $s5 = [$s7+0]
+ $s4 = [$s5+4]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s4 = $s5
+ [$s6+12] = $s4
+ $s4 = [$s6+12]
+ $s6 = $s4
+ $s4 = Eq($s6 0 )
+ $s6 = $s4
+ $s4 = $s6
+ $s6 = $s4
+ if0 $s6 goto :if17_else
+if17_body:
+ $s6 = 1
+ $s4 = $s6
+ $s6 = $s4
+ goto :if17_end
+if17_else:
+ $s4 = 3
+ $s5 = $s4
+ $s6 = $s5
+if17_end:
+ $s5 = $s6
+ $s6 = $s5
+ $s5 = $s6
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_next [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = 1
+ $s5 = 7
+ $s4 = 8
+ $s3 = LtS($s5 $s4 )
+ $s4 = $s3
+ $s3 = $s4
+ $s4 = Eq(1 $s6 )
+ $s6 = Eq(1 $s3 )
+ $s3 = Eq($s4 $s6 )
+ $s6 = $s3
+ $s3 = $s6
+ $s6 = [$s7+12]
+ $s7 = Eq(1 $s3 )
+ $s3 = Eq(1 $s6 )
+ $s6 = Eq($s7 $s3 )
+ $s3 = $s6
+ $s6 = $s3
+ $s3 = $s6
+ $s6 = $s3
+ $v0 = $s6
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex53.s b/output/ex53.s
new file mode 100644
index 0000000..3230095
--- /dev/null
+++ b/output/ex53.s
@@ -0,0 +1,157 @@
+.data
+functable_Test:
+ Test_start
+.text
+jal Main
+li $v0 10
+syscall
+Main:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ li $a0 12
+ jal _heapAlloc
+ move $s7 $v0
+ la $t9 functable_Test
+ sw $t9 0($s7)
+ move $s6 $s7
+ move $s7 $s6
+ lw $s6 0($s7)
+ lw $s5 0($s6)
+ li $s6 12
+ move $s4 $s6
+ sw $t3 -44($fp)
+ sw $t4 -48($fp)
+ sw $t5 -52($fp)
+ sw $t6 -56($fp)
+ sw $t7 -60($fp)
+ sw $t8 -64($fp)
+ move $a0 $s7
+ move $a1 $s4
+ jalr $s5
+ lw $t3 -44($fp)
+ lw $t4 -48($fp)
+ lw $t5 -52($fp)
+ lw $t6 -56($fp)
+ lw $t7 -60($fp)
+ lw $t8 -64($fp)
+ move $s6 $v0
+ move $s4 $s6
+ move $s6 $s4
+ move $a0 $s6
+ jal _print
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+Test_start:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s5 $a0
+ move $s6 $a1
+ move $s7 $s6
+ move $s6 $s7
+ sw $s6 0($s5)
+ lw $s6 0($s5)
+ move $s7 $s6
+ sw $s7 0($s5)
+ lw $s7 0($s5)
+ move $s5 $s7
+ move $s7 $s5
+ move $v0 $s7
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+AllocArray:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 64
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ sw $s3 -24($fp)
+ sw $s4 -28($fp)
+ sw $s5 -32($fp)
+ sw $s6 -36($fp)
+ sw $s7 -40($fp)
+ move $s7 $a0
+ move $a0 $s7
+ li $t9 4
+ mul $s6 $a0 $t9
+ move $a0 $s6
+ li $t9 4
+ add $s6 $a0 $t9
+ move $a0 $s6
+ jal _heapAlloc
+ move $s5 $v0
+ sw $s7 0($s5)
+ move $v0 $s5
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $s3 -24($fp)
+ lw $s4 -28($fp)
+ lw $s5 -32($fp)
+ lw $s6 -36($fp)
+ lw $s7 -40($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 64
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex53.vaporm b/output/ex53.vaporm
new file mode 100644
index 0000000..754e0ed
--- /dev/null
+++ b/output/ex53.vaporm
@@ -0,0 +1,101 @@
+const functable_Test
+ :Test_start
+func Main [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = HeapAllocZ(12 )
+ [$s7+0] = :functable_Test
+ $s6 = $s7
+ $s7 = $s6
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 12
+ $s4 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s4
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s4 = $s6
+ $s6 = $s4
+ PrintIntS($s6 )
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func Test_start [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s5 = $a0
+ $s6 = $a1
+ $s7 = $s6
+ $s6 = $s7
+ [$s5+4] = $s6
+ $s6 = [$s5+4]
+ $s7 = $s6
+ [$s5+8] = $s7
+ $s7 = [$s5+8]
+ $s5 = $s7
+ $s7 = $s5
+ $v0 = $s7
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
+func AllocArray [in 0, out 0, local 14]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ local[7] = $s7
+ $s7 = $a0
+ $s6 = MulS($s7 4 )
+ $s6 = Add($s6 4 )
+ $s5 = HeapAllocZ($s6 )
+ [$s5+0] = $s7
+ $v0 = $s5
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ $s7 = local[7]
+ ret
diff --git a/output/ex99.s b/output/ex99.s
new file mode 100644
index 0000000..d75bb99
--- /dev/null
+++ b/output/ex99.s
@@ -0,0 +1,71 @@
+.data
+.text
+jal Main
+li $v0 10
+syscall
+foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 28
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ sw $s2 -20($fp)
+ li $a0 1
+ li $t9 3
+ add $s0 $a0 $t9
+ li $a0 2
+ li $t9 4
+ add $s1 $a0 $t9
+ sw $s0 -28($fp)
+ sw $s1 -24($fp)
+ jalr $bar
+ move $a0 $v0
+ move $t9 $v0
+ add $s2 $a0 $t9
+ move $v0 $s2
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $s2 -20($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 28
+ jr $ra
+bar:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 16
+ sw $ra -4($fp)
+ sw $s0 -12($fp)
+ sw $s1 -16($fp)
+ lw $s0 0($fp)
+ lw $s1 4($fp)
+ move $a0 $s1
+ move $t9 $s2
+ add $v0 $a0 $t9
+ lw $s0 -12($fp)
+ lw $s1 -16($fp)
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 16
+ jr $ra
+_print:
+ li $v0 1 # syscall: print integer
+ syscall
+ la $a0 _newline
+ li $v0 4 # syscall: print string
+ syscall
+ jr $ra
+_error:
+ li $v0 4 # syscall: print string
+ syscall
+ li $v0 10 # syscall: exit
+ syscall
+_heapAlloc:
+ li $v0 9 # syscall: sbrk
+ syscall
+ jr $ra
+.data
+.align 0
+_newline: .asciiz "\n"
+_str0: .asciiz "null pointer\n"
diff --git a/output/ex99.vaporm b/output/ex99.vaporm
new file mode 100644
index 0000000..c160122
--- /dev/null
+++ b/output/ex99.vaporm
@@ -0,0 +1,26 @@
+func foo[in 0, out 2, local 3]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ $s0 = Add(1 3)
+ $s1 = Add(2 4)
+ out[0] = $s0
+ out[1] = $s1
+ call :bar
+ $s2 = Add($v0 $v0)
+ $v0 = $s2
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ ret
+
+func bar[in 2, out 0, local 2]
+ local[0] = $s0
+ local[1] = $s1
+ $s0 = in[0]
+ $s1 = in[1]
+ $v0 = Add($s1 $s2)
+ $s0 = local[0]
+ $s1 = local[1]
+ ret
+
diff --git a/output/test.s b/output/test.s
new file mode 100644
index 0000000..ce268a6
--- /dev/null
+++ b/output/test.s
@@ -0,0 +1,37 @@
+ .data
+
+ .text
+
+ jal main
+ li $v0 10
+ syscall
+
+main: # L9
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $t0 $a0
+ mul $t1 $t0 4
+ addu $t1 $t1 4
+ move $a0 $t1
+ jal foo
+ move $t1 $v0
+ sw $t0 0($t1)
+ move $v0 $t1
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra
+
+
+foo:
+ sw $fp -8($sp)
+ move $fp $sp
+ subu $sp $sp 8
+ sw $ra -4($fp)
+ move $v0 $a0
+ lw $ra -4($fp)
+ lw $fp -8($fp)
+ addu $sp $sp 8
+ jr $ra