summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-29 16:44:42 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-29 16:44:42 -0600
commit3dfeff8e8e4c84929e35880bf0bbdea64c085fc0 (patch)
tree1194536158c8a1c40acd9b19b83a943724c47eca
parentbc7af8fdf0e2f6560c7d7fa6c17f893409c4830c (diff)
Messy in+out argument passing, observe MoreThan4.vapor passes
-rw-r--r--output/BinaryTree.vaporm2304
-rw-r--r--output/LinkedList.vaporm318
-rw-r--r--output/MoreThan4.vaporm187
-rw-r--r--output/TreeVisitor.vaporm2690
-rw-r--r--output/ex42.vaporm108
-rw-r--r--output/ex45.vaporm14
-rw-r--r--output/ex47.vaporm20
-rw-r--r--vaporize/LIRDict.java9
-rw-r--r--vaporize/LIRVisitor.java7
-rw-r--r--vaporize/VaporizeVisitor.java46
10 files changed, 5460 insertions, 243 deletions
diff --git a/output/BinaryTree.vaporm b/output/BinaryTree.vaporm
index e69de29..d315ffb 100644
--- a/output/BinaryTree.vaporm
+++ b/output/BinaryTree.vaporm
@@ -0,0 +1,2304 @@
+const functable_BT
+ :BT_Start
+const 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
+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(4 )
+ [$s7+0] = :functable_BT
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s5 = $s7
+ PrintIntS($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 BT_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 = HeapAllocZ(104 )
+ [$s6+0] = :functable_Tree
+ $s7 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 16
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ 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
+ $s6 = [$s7+0]
+ $s4 = [$s6+72]
+ 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]
+ $s6 = $v0
+ $s6 = $s6
+ $s6 = 100000000
+ PrintIntS($s6 )
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 8
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+72]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s6
+ $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]
+ $s6 = [$s5+48]
+ $s5 = 24
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $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]
+ $s5 = [$s4+48]
+ $s4 = 4
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+48]
+ $s5 = 20
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $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]
+ $s5 = [$s4+48]
+ $s4 = 28
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 14
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+72]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s6
+ $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]
+ $s6 = [$s5+68]
+ $s5 = 24
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 12
+ 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]
+ $s6 = $v0
+ $s5 = $s6
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 16
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 50
+ 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]
+ $s6 = $v0
+ $s5 = $s6
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+52]
+ $s5 = 12
+ 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]
+ $s6 = $v0
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+72]
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+68]
+ $s6 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s6 = $s4
+ PrintIntS($s6 )
+ $s6 = 0
+ $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 Tree_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
+ $s6 = $a0
+ $s7 = $a1
+ [$s6+88] = $s7
+ [$s6+92] = 0
+ [$s6+96] = 0
+ $s6 = 1
+ $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 Tree_SetRight [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
+ [$s6+84] = $s7
+ $s6 = 1
+ $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 Tree_SetLeft [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
+ [$s6+80] = $s7
+ $s6 = 1
+ $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 Tree_GetRight [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+84]
+ $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 Tree_GetLeft [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+80]
+ $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 Tree_GetKey [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+88]
+ $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 Tree_SetKey [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
+ [$s6+88] = $s7
+ $s6 = 1
+ $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 Tree_GetHas_Right [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+96]
+ $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 Tree_GetHas_Left [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+92]
+ $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 Tree_SetHas_Left [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
+ [$s6+92] = $s7
+ $s6 = 1
+ $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 Tree_SetHas_Right [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
+ [$s6+96] = $s7
+ $s6 = 1
+ $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 Tree_Compare [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 = 0
+ $s5 = $s7
+ $s3 = 1
+ $s2 = Add($s5 $s3 )
+ $s3 = $s2
+ $s2 = $s6
+ $s5 = $s7
+ $s7 = LtS($s2 $s5 )
+ $s5 = $s7
+ if0 $s5 goto :if100_else
+if100_body:
+ $s4 = 0
+ goto :if100_end
+if100_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
+ $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 Tree_Insert [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 = HeapAllocZ(104 )
+ [$s5+0] = :functable_Tree
+ $s4 = $s5
+ $s4 = $s4
+ $s5 = [$s4+0]
+ $s3 = [$s5+0]
+ $s5 = $s7
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s4
+ $a1 = $s5
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ $s5 = $s6
+ $s6 = 1
+while115_test:
+ $s2 = $s6
+ if0 $s2 goto :while115_end
+while115_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s3 = [$s2+20]
+ 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]
+ $s2 = $v0
+ $s3 = $s2
+ $s2 = $s7
+ $s1 = $s3
+ $s3 = LtS($s2 $s1 )
+ $s1 = $s3
+ if0 $s1 goto :if120_else
+if120_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s3 = [$s1+32]
+ 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]
+ $s1 = $v0
+ $s3 = $s1
+ if0 $s3 goto :if124_else
+if124_body:
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s1 = [$s3+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s5 = $s3
+ goto :if124_end
+if124_else:
+ $s6 = 0
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s1 = [$s3+36]
+ $s3 = 1
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s3
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s3 = [$s2+8]
+ $s2 = $s4
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+if124_end:
+ goto :if120_end
+if120_else:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s2 = [$s1+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s2 = $s1
+ if0 $s2 goto :if139_else
+if139_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ goto :if139_end
+if139_else:
+ $s6 = 0
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+40]
+ $s2 = 1
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s5 = $s3
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s2 = [$s3+4]
+ $s3 = $s4
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s3
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+if139_end:
+if120_end:
+ goto :while115_test
+while115_end:
+ $s6 = 1
+ $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 Tree_Delete [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
+ $s4 = $s6
+ $s3 = 1
+ $s2 = 0
+ $s1 = 1
+while155_test:
+ $s0 = $s3
+ if0 $s0 goto :while155_end
+while155_body:
+ $s5 = $s5
+ $s0 = [$s5+0]
+ $t7 = [$s0+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $t7 = $s0
+ $s0 = $s7
+ $t6 = $t7
+ $t5 = LtS($s0 $t6 )
+ $t6 = $t5
+ if0 $t6 goto :if160_else
+if160_body:
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t5 = [$t6+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t5 = $t6
+ if0 $t5 goto :if164_else
+if164_body:
+ $s4 = $s5
+ $s5 = $s5
+ $t5 = [$s5+0]
+ $t6 = [$t5+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t5 = $v0
+ $s5 = $t5
+ goto :if164_end
+if164_else:
+ $s3 = 0
+if164_end:
+ goto :if160_end
+if160_else:
+ $t5 = $t7
+ $t7 = $s7
+ $t6 = LtS($t5 $t7 )
+ $t7 = $t6
+ if0 $t7 goto :if171_else
+if171_body:
+ $s5 = $s5
+ $t7 = [$s5+0]
+ $t6 = [$t7+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t7 = $v0
+ $t6 = $t7
+ if0 $t6 goto :if175_else
+if175_body:
+ $s4 = $s5
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t7 = [$t6+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $s5 = $t6
+ goto :if175_end
+if175_else:
+ $s3 = 0
+if175_end:
+ goto :if171_end
+if171_else:
+ $t6 = $s1
+ if0 $t6 goto :if182_else
+if182_body:
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t7 = [$t6+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t7 = Eq($t6 0 )
+ $t6 = $t7
+ $s5 = $s5
+ $t7 = [$s5+0]
+ $t5 = [$t7+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t7 = $v0
+ $t5 = Eq($t7 0 )
+ $t7 = $t5
+ $t5 = Eq(1 $t6 )
+ $t6 = Eq(1 $t7 )
+ $t7 = Eq($t5 $t6 )
+ $t6 = $t7
+ if0 $t6 goto :if183_else
+if183_body:
+ $t6 = 1
+ goto :if183_end
+if183_else:
+ $t6 = [$s6+0]
+ $t7 = $s4
+ $t5 = $s5
+ $t6 = [$t6+56]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $t7
+ $a2 = $t5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $t6 = $s0
+if183_end:
+ goto :if182_end
+if182_else:
+ $s0 = [$s6+0]
+ $t5 = $s4
+ $t7 = $s5
+ $s0 = [$s0+56]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $t5
+ $a2 = $t7
+ call $s0
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t6 = $t6
+if182_end:
+ $s2 = 1
+ $s3 = 0
+if171_end:
+if160_end:
+ $s1 = 0
+ goto :while155_test
+while155_end:
+ $s1 = $s2
+ $v0 = $s1
+ $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 Tree_Remove [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
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :if206_else
+if206_body:
+ $s3 = [$s5+0]
+ $s4 = $s6
+ $s2 = $s7
+ $s3 = [$s3+64]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s4
+ $a2 = $s2
+ call $s3
+ $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
+ $s2 = [$s7+0]
+ $s1 = [$s2+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s1 = $s2
+ if0 $s1 goto :if214_else
+if214_body:
+ $s1 = [$s5+0]
+ $s2 = $s6
+ $s4 = $s7
+ $s1 = [$s1+60]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ $a2 = $s4
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ goto :if214_end
+if214_else:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+20]
+ 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]
+ $s3 = $v0
+ $s4 = $s3
+ $s6 = $s6
+ $s3 = [$s6+0]
+ $s7 = [$s3+16]
+ 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]
+ $s3 = $v0
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s5+0]
+ $s7 = $s4
+ $s4 = $s2
+ $s3 = [$s3+44]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s7
+ $a2 = $s4
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s4 = $s2
+ if0 $s4 goto :if232_else
+if232_body:
+ $s6 = $s6
+ $s4 = [$s6+0]
+ $s2 = [$s4+8]
+ $s4 = [$s5+100]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s2 = $s7
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s4 = [$s7+36]
+ $s7 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s2 = $s2
+ goto :if232_end
+if232_else:
+ $s6 = $s6
+ $s2 = [$s6+0]
+ $s7 = [$s2+4]
+ $s2 = [$s5+100]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s2
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s2 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s2 = [$s5+40]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ 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
+ $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 Tree_RemoveRight [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
+while254_test:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :while254_end
+while254_body:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+24]
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s2 = [$s3+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s2+0]
+ $s1 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s1
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ $s6 = $s7
+ $s7 = $s7
+ $s1 = [$s7+0]
+ $s3 = [$s1+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s7 = $s1
+ goto :while254_test
+while254_end:
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s1 = [$s7+4]
+ $s7 = [$s5+100]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s1 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s7 = [$s5+40]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s1 = $s1
+ $s1 = 1
+ $v0 = $s1
+ $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 Tree_RemoveLeft [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
+while282_test:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :while282_end
+while282_body:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+24]
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s2 = [$s3+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s2+0]
+ $s1 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s1
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ $s6 = $s7
+ $s7 = $s7
+ $s1 = [$s7+0]
+ $s3 = [$s1+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s7 = $s1
+ goto :while282_test
+while282_end:
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s1 = [$s7+8]
+ $s7 = [$s5+100]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s1 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s7 = [$s5+36]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s1 = $s1
+ $s1 = 1
+ $v0 = $s1
+ $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 Tree_Search [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
+ $s6 = 1
+ $s4 = 0
+while310_test:
+ $s3 = $s6
+ if0 $s3 goto :while310_end
+while310_body:
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s2 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = $s7
+ $s1 = $s2
+ $s0 = LtS($s3 $s1 )
+ $s1 = $s0
+ if0 $s1 goto :if315_else
+if315_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s0 = [$s1+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s0
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s0 = $s1
+ if0 $s0 goto :if319_else
+if319_body:
+ $s5 = $s5
+ $s0 = [$s5+0]
+ $s1 = [$s0+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $s5 = $s0
+ goto :if319_end
+if319_else:
+ $s6 = 0
+if319_end:
+ goto :if315_end
+if315_else:
+ $s0 = $s2
+ $s2 = $s7
+ $s1 = LtS($s0 $s2 )
+ $s2 = $s1
+ if0 $s2 goto :if326_else
+if326_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s1 = $s2
+ if0 $s1 goto :if330_else
+if330_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s2 = [$s1+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+ goto :if330_end
+if330_else:
+ $s6 = 0
+if330_end:
+ goto :if326_end
+if326_else:
+ $s4 = 1
+ $s6 = 0
+if326_end:
+if315_end:
+ goto :while310_test
+while310_end:
+ $s6 = $s4
+ $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 Tree_Print [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
+ $s5 = [$s6+0]
+ $s4 = $s7
+ $s5 = [$s5+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s4 = $s7
+ $s4 = 1
+ $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 Tree_RecPrint [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
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+32]
+ 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
+ if0 $s4 goto :if342_else
+if342_body:
+ $s4 = [$s6+0]
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s3 = [$s5+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ $s4 = [$s4+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s3
+ call $s4
+ $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:
+ $s3 = 1
+if342_end:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s5 = [$s3+20]
+ 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]
+ $s3 = $v0
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s3 = [$s5+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ if0 $s3 goto :if356_else
+if356_body:
+ $s3 = [$s6+0]
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+12]
+ 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
+ $s3 = [$s3+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ goto :if356_end
+if356_else:
+ $s3 = 1
+if356_end:
+ $s5 = 1
+ $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 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/LinkedList.vaporm b/output/LinkedList.vaporm
index d43ccb4..742fe43 100644
--- a/output/LinkedList.vaporm
+++ b/output/LinkedList.vaporm
@@ -499,7 +499,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 35]
+func List_Delete [in 0, out 0, local 14]
local[0] = $s0
local[1] = $s1
local[2] = $s2
@@ -522,37 +522,19 @@ func List_Delete [in 0, out 0, local 35]
$t7 = [$s6+40]
while65_test:
$s6 = Eq($s0 0 )
- $t0 = local[17]
- $t0 = $s6
- local[17] = $t0
+ $t6 = $s6
$s6 = Eq($s4 0 )
- $t0 = local[18]
- $t0 = $s6
- local[18] = $t0
- $t0 = local[17]
- $s6 = Eq(1 $t0 )
- local[17] = $t0
- $t0 = local[19]
- $t1 = local[18]
- $t0 = Eq(1 $t1 )
- local[18] = $t1
- $t1 = local[20]
- $t2 = local[19]
- $t1 = Eq($s6 $t2 )
- local[19] = $t2
- local[20] = $t1
- $t1 = local[20]
- $s6 = $t1
- local[20] = $t1
- if0 $s6 goto :while65_end
- local[19] = $t0
+ $t5 = $s6
+ $s6 = Eq(1 $t6 )
+ $t6 = Eq(1 $t5 )
+ $t5 = Eq($s6 $t6 )
+ $t6 = $t5
+ if0 $t6 goto :while65_end
while65_body:
$s7 = $s7
- $s6 = [$s7+0]
- $t0 = local[21]
- $t0 = [$s6+16]
- local[21] = $t0
- $s6 = $t7
+ $t6 = [$s7+0]
+ $t5 = [$t6+16]
+ $t6 = $t7
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -560,42 +542,28 @@ while65_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $s6
- $t0 = local[21]
- $t1 = local[21]
- call $t1
+ $a1 = $t6
+ call $t5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t3 = $v0
- local[21] = $t1
- $s6 = $t3
- local[21] = $t0
- if0 $s6 goto :if74_else
+ $s6 = $v0
+ $t6 = $s6
+ if0 $t6 goto :if74_else
if74_body:
$s4 = 1
- $s6 = $s2
- $t0 = local[22]
- $t0 = 0
- local[22] = $t0
- $t0 = local[23]
- $t1 = local[22]
- $t0 = LtS($s6 $t1 )
- local[22] = $t1
- $t1 = local[23]
- $s6 = $t1
- local[23] = $t1
+ $t6 = $s2
+ $s6 = 0
+ $t5 = LtS($t6 $s6 )
+ $s6 = $t5
if0 $s6 goto :if79_else
- local[23] = $t0
if79_body:
$s1 = $s1
$s6 = [$s1+0]
- $t0 = local[24]
- $t0 = [$s6+32]
- local[24] = $t0
+ $t5 = [$s6+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -603,44 +571,28 @@ if79_body:
local[12] = $t7
local[13] = $t8
$a0 = $s1
- $t0 = local[24]
- $t1 = local[24]
- call $t1
+ call $t5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t5 = $v0
- local[24] = $t1
- $s5 = $t5
- local[24] = $t0
+ $s6 = $v0
+ $s5 = $s6
goto :if79_end
if79_else:
$s6 = 0
- $t0 = local[25]
- $t0 = 555
- local[25] = $t0
- $t0 = local[26]
- $t1 = local[25]
- $t0 = Sub($s6 $t1 )
- local[25] = $t1
- $t1 = local[26]
- $s6 = $t1
- local[26] = $t1
- PrintIntS($s6 )
- local[26] = $t0
+ $t5 = 555
+ $t6 = Sub($s6 $t5 )
+ $t5 = $t6
+ PrintIntS($t5 )
$s3 = $s3
- $s6 = [$s3+0]
- $t0 = local[27]
- $t0 = [$s6+12]
- local[27] = $t0
+ $t5 = [$s3+0]
+ $t6 = [$t5+12]
$s1 = $s1
- $s6 = [$s1+0]
- $t0 = local[28]
- $t0 = [$s6+32]
- local[28] = $t0
+ $t5 = [$s1+0]
+ $s6 = [$t5+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -648,19 +600,15 @@ if79_else:
local[12] = $t7
local[13] = $t8
$a0 = $s1
- $t0 = local[28]
- $t1 = local[28]
- call $t1
+ call $s6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- local[28] = $t1
- $s6 = $t6
- local[28] = $t0
+ $t5 = $v0
+ $s6 = $t5
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -669,51 +617,33 @@ if79_else:
local[13] = $t8
$a0 = $s3
$a1 = $s6
- $t0 = local[27]
- $t1 = local[27]
- call $t1
+ call $t6
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t4 = $v0
- local[27] = $t1
- $s6 = $t4
- local[27] = $t0
+ $t5 = $v0
+ $s6 = $t5
$s6 = 0
- $t0 = local[29]
- $t0 = 555
- local[29] = $t0
- $t0 = local[30]
- $t1 = local[29]
- $t0 = Sub($s6 $t1 )
- local[29] = $t1
- $t1 = local[30]
- $s6 = $t1
- local[30] = $t1
- PrintIntS($s6 )
- local[30] = $t0
+ $t5 = 555
+ $t6 = Sub($s6 $t5 )
+ $t5 = $t6
+ PrintIntS($t5 )
if79_end:
goto :if74_end
if74_else:
- $s6 = 0
+ $t5 = 0
if74_end:
- $s6 = Eq($s4 0 )
- $t0 = local[31]
- $t0 = $s6
- local[31] = $t0
- $t0 = local[31]
- if0 $t0 goto :if101_else
- local[31] = $t0
+ $t5 = Eq($s4 0 )
+ $t6 = $t5
+ if0 $t6 goto :if101_else
if101_body:
$s3 = $s1
$s1 = $s1
- $s6 = [$s1+0]
- $t0 = local[32]
- $t0 = [$s6+32]
- local[32] = $t0
+ $t6 = [$s1+0]
+ $t5 = [$t6+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -721,28 +651,18 @@ if101_body:
local[12] = $t7
local[13] = $t8
$a0 = $s1
- $t0 = local[32]
- $t1 = local[32]
- call $t1
+ call $t5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t2 = local[14]
- $t2 = $v0
- local[14] = $t2
- local[32] = $t1
- $t1 = local[14]
- $s1 = $t1
- local[14] = $t1
+ $t6 = $v0
+ $s1 = $t6
$s1 = $s1
- local[32] = $t0
- $s6 = [$s1+0]
- $t0 = local[33]
- $t0 = [$s6+24]
- local[33] = $t0
+ $t6 = [$s1+0]
+ $t5 = [$t6+24]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -750,28 +670,18 @@ if101_body:
local[12] = $t7
local[13] = $t8
$a0 = $s1
- $t0 = local[33]
- $t1 = local[33]
- call $t1
+ call $t5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t2 = local[16]
- $t2 = $v0
- local[16] = $t2
- local[33] = $t1
- $t1 = local[16]
- $s0 = $t1
- local[16] = $t1
+ $t6 = $v0
+ $s0 = $t6
$s1 = $s1
- local[33] = $t0
- $s6 = [$s1+0]
- $t0 = local[34]
- $t0 = [$s6+28]
- local[34] = $t0
+ $t6 = [$s1+0]
+ $t5 = [$t6+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -779,32 +689,24 @@ if101_body:
local[12] = $t7
local[13] = $t8
$a0 = $s1
- $t0 = local[34]
- $t1 = local[34]
- call $t1
+ call $t5
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t2 = local[15]
- $t2 = $v0
- local[15] = $t2
- local[34] = $t1
- $t1 = local[15]
- $t7 = $t1
- local[15] = $t1
+ $t6 = $v0
+ $t7 = $t6
$s2 = 1
- local[34] = $t0
goto :if101_end
if101_else:
- $s6 = 0
+ $t5 = 0
if101_end:
goto :while65_test
while65_end:
- $t3 = $s5
- $v0 = $t3
+ $t7 = $s5
+ $v0 = $t7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -831,13 +733,13 @@ func List_Search [in 0, out 0, local 14]
$s2 = [$s6+40]
while113_test:
$s6 = Eq($s3 0 )
- $t5 = $s6
- if0 $t5 goto :while113_end
+ $s1 = $s6
+ if0 $s1 goto :while113_end
while113_body:
$s7 = $s7
- $t5 = [$s7+0]
- $s6 = [$t5+16]
- $t5 = $s2
+ $s1 = [$s7+0]
+ $s6 = [$s1+16]
+ $s1 = $s2
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -845,7 +747,7 @@ while113_body:
local[12] = $t7
local[13] = $t8
$a0 = $s7
- $a1 = $t5
+ $a1 = $s1
call $s6
$t3 = local[8]
$t4 = local[9]
@@ -853,18 +755,18 @@ while113_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t6 = $v0
- $t5 = $t6
- if0 $t5 goto :if116_else
+ $s0 = $v0
+ $s1 = $s0
+ if0 $s1 goto :if116_else
if116_body:
$s5 = 1
goto :if116_end
if116_else:
- $t5 = 0
+ $s1 = 0
if116_end:
$s4 = $s4
- $t5 = [$s4+0]
- $s6 = [$t5+32]
+ $s1 = [$s4+0]
+ $s0 = [$s1+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -872,7 +774,7 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- call $s6
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
@@ -882,8 +784,8 @@ if116_end:
$s1 = $v0
$s4 = $s1
$s4 = $s4
- $s6 = [$s4+0]
- $t5 = [$s6+24]
+ $s1 = [$s4+0]
+ $s0 = [$s1+24]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -891,18 +793,18 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- call $t5
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $t7 = $v0
- $s3 = $t7
+ $s1 = $v0
+ $s3 = $s1
$s4 = $s4
- $t5 = [$s4+0]
- $s6 = [$t5+28]
+ $s1 = [$s4+0]
+ $s0 = [$s1+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -910,19 +812,19 @@ if116_end:
local[12] = $t7
local[13] = $t8
$a0 = $s4
- call $s6
+ call $s0
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s2 = $s0
+ $s1 = $v0
+ $s2 = $s1
goto :while113_test
while113_end:
- $t6 = $s5
- $v0 = $t6
+ $s2 = $s5
+ $v0 = $s2
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
@@ -1010,12 +912,12 @@ func List_Print [in 0, out 0, local 14]
$s4 = [$s7+40]
while134_test:
$s7 = Eq($s5 0 )
- $t7 = $s7
- if0 $t7 goto :while134_end
+ $s3 = $s7
+ if0 $s3 goto :while134_end
while134_body:
$s4 = $s4
- $t7 = [$s4+0]
- $s7 = [$t7+4]
+ $s3 = [$s4+0]
+ $s7 = [$s3+4]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1030,12 +932,12 @@ while134_body:
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s0 = $v0
- $s7 = $s0
+ $s3 = $v0
+ $s7 = $s3
PrintIntS($s7 )
$s6 = $s6
$s7 = [$s6+0]
- $t7 = [$s7+32]
+ $s3 = [$s7+32]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1043,18 +945,18 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $t7
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s2 = $v0
- $s6 = $s2
+ $s7 = $v0
+ $s6 = $s7
$s6 = $s6
- $t7 = [$s6+0]
- $s7 = [$t7+24]
+ $s7 = [$s6+0]
+ $s3 = [$s7+24]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1062,18 +964,18 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $s7
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s3 = $v0
- $s5 = $s3
+ $s7 = $v0
+ $s5 = $s7
$s6 = $s6
$s7 = [$s6+0]
- $t7 = [$s7+28]
+ $s3 = [$s7+28]
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -1081,19 +983,19 @@ while134_body:
local[12] = $t7
local[13] = $t8
$a0 = $s6
- call $t7
+ call $s3
$t3 = local[8]
$t4 = local[9]
$t5 = local[10]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s1 = $v0
- $s4 = $s1
+ $s7 = $v0
+ $s4 = $s7
goto :while134_test
while134_end:
- $s0 = 1
- $v0 = $s0
+ $s4 = 1
+ $v0 = $s4
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/MoreThan4.vaporm b/output/MoreThan4.vaporm
index e69de29..7ce53e2 100644
--- a/output/MoreThan4.vaporm
+++ b/output/MoreThan4.vaporm
@@ -0,0 +1,187 @@
+const functable_MT4
+ :MT4_Start
+ :MT4_Change
+func Main [in 0, out 3, 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_MT4
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
+ $s7 = 1
+ $s4 = 2
+ $s3 = 3
+ $s2 = 4
+ $s1 = 5
+ $s0 = 6
+ 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
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t7 = $v0
+ $s0 = $t7
+ PrintIntS($s0 )
+ $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 MT4_Start [in 3, out 3, 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 = in[0]
+ $s1 = in[1]
+ $s2 = in[2]
+ $s0 = $s6
+ PrintIntS($s0 )
+ $s0 = $s7
+ PrintIntS($s0 )
+ $s0 = $s3
+ PrintIntS($s0 )
+ $s0 = $s4
+ PrintIntS($s0 )
+ $s0 = $s1
+ PrintIntS($s0 )
+ $s0 = $s2
+ PrintIntS($s0 )
+ $s0 = [$s5+0]
+ $t7 = $s2
+ $s2 = $s1
+ $s1 = $s4
+ $s4 = $s3
+ $s3 = $s7
+ $s7 = $s6
+ $s0 = [$s0+4]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $t7
+ $a2 = $s2
+ $a3 = $s1
+ out[0] = $s4
+ out[1] = $s3
+ out[2] = $s7
+ call $s0
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s7 = $s6
+ $s6 = $s7
+ $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 MT4_Change [in 3, 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 = in[0]
+ $s1 = in[1]
+ $s2 = in[2]
+ $s0 = $s6
+ PrintIntS($s0 )
+ $s0 = $s7
+ PrintIntS($s0 )
+ $s0 = $s3
+ PrintIntS($s0 )
+ $s0 = $s4
+ PrintIntS($s0 )
+ $s0 = $s1
+ PrintIntS($s0 )
+ $s0 = $s2
+ PrintIntS($s0 )
+ $s0 = 0
+ $v0 = $s0
+ $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/TreeVisitor.vaporm b/output/TreeVisitor.vaporm
index e69de29..51bb666 100644
--- a/output/TreeVisitor.vaporm
+++ b/output/TreeVisitor.vaporm
@@ -0,0 +1,2690 @@
+const functable_TV
+ :TV_Start
+const 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
+const functable_Visitor
+ :Visitor_visit
+const functable_MyVisitor
+ :MyVisitor_visit
+ :Visitor_visit
+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(4 )
+ [$s7+0] = :functable_TV
+ $s6 = $s7
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s5 = $s7
+ PrintIntS($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 TV_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 = HeapAllocZ(108 )
+ [$s6+0] = :functable_Tree
+ $s7 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+0]
+ $s6 = 16
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ 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
+ $s6 = [$s7+0]
+ $s4 = [$s6+72]
+ 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]
+ $s6 = $v0
+ $s6 = $s6
+ $s6 = 100000000
+ PrintIntS($s6 )
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 8
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+48]
+ $s5 = 24
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $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]
+ $s5 = [$s4+48]
+ $s4 = 4
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+48]
+ $s5 = 20
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $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]
+ $s5 = [$s4+48]
+ $s4 = 28
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s4 = [$s6+48]
+ $s6 = 14
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s4
+ $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]
+ $s6 = [$s5+72]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s6 = $s5
+ $s5 = 100000000
+ PrintIntS($s5 )
+ $s5 = HeapAllocZ(16 )
+ [$s5+0] = :functable_MyVisitor
+ $s6 = $s5
+ $s5 = 50000000
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+80]
+ $s5 = $s6
+ 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]
+ $s6 = $v0
+ $s5 = $s6
+ $s5 = 100000000
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 24
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 12
+ 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]
+ $s6 = $v0
+ $s5 = $s6
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 16
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+68]
+ $s5 = 50
+ 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]
+ $s6 = $v0
+ $s5 = $s6
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s6 = [$s5+68]
+ $s5 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s5
+ call $s6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s5 = $s4
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+52]
+ $s5 = 12
+ 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]
+ $s6 = $v0
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+72]
+ 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
+ $s6 = $s6
+ $s7 = $s7
+ $s6 = [$s7+0]
+ $s5 = [$s6+68]
+ $s6 = 12
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s6
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s6 = $s4
+ PrintIntS($s6 )
+ $s6 = 0
+ $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 Tree_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
+ $s6 = $a0
+ $s7 = $a1
+ [$s6+92] = $s7
+ [$s6+96] = 0
+ [$s6+100] = 0
+ $s6 = 1
+ $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 Tree_SetRight [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
+ [$s6+88] = $s7
+ $s6 = 1
+ $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 Tree_SetLeft [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
+ [$s6+84] = $s7
+ $s6 = 1
+ $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 Tree_GetRight [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+88]
+ $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 Tree_GetLeft [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+84]
+ $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 Tree_GetKey [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+92]
+ $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 Tree_SetKey [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
+ [$s6+92] = $s7
+ $s6 = 1
+ $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 Tree_GetHas_Right [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+100]
+ $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 Tree_GetHas_Left [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+96]
+ $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 Tree_SetHas_Left [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
+ [$s6+96] = $s7
+ $s6 = 1
+ $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 Tree_SetHas_Right [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
+ [$s6+100] = $s7
+ $s6 = 1
+ $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 Tree_Compare [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 = 0
+ $s5 = $s7
+ $s3 = 1
+ $s2 = Add($s5 $s3 )
+ $s3 = $s2
+ $s2 = $s6
+ $s5 = $s7
+ $s7 = LtS($s2 $s5 )
+ $s5 = $s7
+ if0 $s5 goto :if105_else
+if105_body:
+ $s4 = 0
+ goto :if105_end
+if105_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
+ $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 Tree_Insert [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 = HeapAllocZ(108 )
+ [$s5+0] = :functable_Tree
+ $s4 = $s5
+ $s4 = $s4
+ $s5 = [$s4+0]
+ $s3 = [$s5+0]
+ $s5 = $s7
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s4
+ $a1 = $s5
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ $s5 = $s6
+ $s6 = 1
+while120_test:
+ $s2 = $s6
+ if0 $s2 goto :while120_end
+while120_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s3 = [$s2+20]
+ 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]
+ $s2 = $v0
+ $s3 = $s2
+ $s2 = $s7
+ $s1 = $s3
+ $s3 = LtS($s2 $s1 )
+ $s1 = $s3
+ if0 $s1 goto :if125_else
+if125_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s3 = [$s1+32]
+ 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]
+ $s1 = $v0
+ $s3 = $s1
+ if0 $s3 goto :if129_else
+if129_body:
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s1 = [$s3+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s5 = $s3
+ goto :if129_end
+if129_else:
+ $s6 = 0
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s1 = [$s3+36]
+ $s3 = 1
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s3
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s3 = [$s2+8]
+ $s2 = $s4
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+if129_end:
+ goto :if125_end
+if125_else:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s2 = [$s1+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s2 = $s1
+ if0 $s2 goto :if144_else
+if144_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ goto :if144_end
+if144_else:
+ $s6 = 0
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+40]
+ $s2 = 1
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s5 = $s3
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s2 = [$s3+4]
+ $s3 = $s4
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s3
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+if144_end:
+if125_end:
+ goto :while120_test
+while120_end:
+ $s6 = 1
+ $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 Tree_Delete [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
+ $s4 = $s6
+ $s3 = 1
+ $s2 = 0
+ $s1 = 1
+while160_test:
+ $s0 = $s3
+ if0 $s0 goto :while160_end
+while160_body:
+ $s5 = $s5
+ $s0 = [$s5+0]
+ $t7 = [$s0+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $t7 = $s0
+ $s0 = $s7
+ $t6 = $t7
+ $t5 = LtS($s0 $t6 )
+ $t6 = $t5
+ if0 $t6 goto :if165_else
+if165_body:
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t5 = [$t6+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t5 = $t6
+ if0 $t5 goto :if169_else
+if169_body:
+ $s4 = $s5
+ $s5 = $s5
+ $t5 = [$s5+0]
+ $t6 = [$t5+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t5 = $v0
+ $s5 = $t5
+ goto :if169_end
+if169_else:
+ $s3 = 0
+if169_end:
+ goto :if165_end
+if165_else:
+ $t5 = $t7
+ $t7 = $s7
+ $t6 = LtS($t5 $t7 )
+ $t7 = $t6
+ if0 $t7 goto :if176_else
+if176_body:
+ $s5 = $s5
+ $t7 = [$s5+0]
+ $t6 = [$t7+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t7 = $v0
+ $t6 = $t7
+ if0 $t6 goto :if180_else
+if180_body:
+ $s4 = $s5
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t7 = [$t6+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $s5 = $t6
+ goto :if180_end
+if180_else:
+ $s3 = 0
+if180_end:
+ goto :if176_end
+if176_else:
+ $t6 = $s1
+ if0 $t6 goto :if187_else
+if187_body:
+ $s5 = $s5
+ $t6 = [$s5+0]
+ $t7 = [$t6+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t7 = Eq($t6 0 )
+ $t6 = $t7
+ $s5 = $s5
+ $t7 = [$s5+0]
+ $t5 = [$t7+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $t5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t7 = $v0
+ $t5 = Eq($t7 0 )
+ $t7 = $t5
+ $t5 = Eq(1 $t6 )
+ $t6 = Eq(1 $t7 )
+ $t7 = Eq($t5 $t6 )
+ $t6 = $t7
+ if0 $t6 goto :if188_else
+if188_body:
+ $t6 = 1
+ goto :if188_end
+if188_else:
+ $t6 = [$s6+0]
+ $t7 = $s4
+ $t5 = $s5
+ $t6 = [$t6+56]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $t7
+ $a2 = $t5
+ call $t6
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $t6 = $s0
+if188_end:
+ goto :if187_end
+if187_else:
+ $s0 = [$s6+0]
+ $t5 = $s4
+ $t7 = $s5
+ $s0 = [$s0+56]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $t5
+ $a2 = $t7
+ call $s0
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $t6 = $v0
+ $t6 = $t6
+if187_end:
+ $s2 = 1
+ $s3 = 0
+if176_end:
+if165_end:
+ $s1 = 0
+ goto :while160_test
+while160_end:
+ $s1 = $s2
+ $v0 = $s1
+ $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 Tree_Remove [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
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :if211_else
+if211_body:
+ $s3 = [$s5+0]
+ $s4 = $s6
+ $s2 = $s7
+ $s3 = [$s3+64]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s4
+ $a2 = $s2
+ call $s3
+ $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
+ $s2 = [$s7+0]
+ $s1 = [$s2+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s1 = $s2
+ if0 $s1 goto :if219_else
+if219_body:
+ $s1 = [$s5+0]
+ $s2 = $s6
+ $s4 = $s7
+ $s1 = [$s1+60]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ $a2 = $s4
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ goto :if219_end
+if219_else:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+20]
+ 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]
+ $s3 = $v0
+ $s4 = $s3
+ $s6 = $s6
+ $s3 = [$s6+0]
+ $s7 = [$s3+16]
+ 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]
+ $s3 = $v0
+ $s7 = $s3
+ $s3 = [$s7+0]
+ $s2 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s5+0]
+ $s7 = $s4
+ $s4 = $s2
+ $s3 = [$s3+44]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s7
+ $a2 = $s4
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s4 = $s2
+ if0 $s4 goto :if237_else
+if237_body:
+ $s6 = $s6
+ $s4 = [$s6+0]
+ $s2 = [$s4+8]
+ $s4 = [$s5+104]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s2 = $s7
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s4 = [$s7+36]
+ $s7 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s2 = $s2
+ goto :if237_end
+if237_else:
+ $s6 = $s6
+ $s2 = [$s6+0]
+ $s7 = [$s2+4]
+ $s2 = [$s5+104]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s2
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s2 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s2 = [$s5+40]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ 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
+ $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 Tree_RemoveRight [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
+while259_test:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :while259_end
+while259_body:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+24]
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s2 = [$s3+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s2+0]
+ $s1 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s1
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ $s6 = $s7
+ $s7 = $s7
+ $s1 = [$s7+0]
+ $s3 = [$s1+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s7 = $s1
+ goto :while259_test
+while259_end:
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s1 = [$s7+4]
+ $s7 = [$s5+104]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s1 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s7 = [$s5+40]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s1 = $s1
+ $s1 = 1
+ $v0 = $s1
+ $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 Tree_RemoveLeft [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
+while287_test:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s3 = [$s4+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s4 = $v0
+ $s3 = $s4
+ if0 $s3 goto :while287_end
+while287_body:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s4 = [$s3+24]
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s2 = [$s3+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = [$s2+0]
+ $s1 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s2
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ $a1 = $s1
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s1 = $s3
+ $s6 = $s7
+ $s7 = $s7
+ $s1 = [$s7+0]
+ $s3 = [$s1+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s7 = $s1
+ goto :while287_test
+while287_end:
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s1 = [$s7+8]
+ $s7 = [$s5+104]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s1 = $s5
+ $s6 = $s6
+ $s5 = [$s6+0]
+ $s7 = [$s5+36]
+ $s5 = 0
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s5
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s1 = $s1
+ $s1 = 1
+ $v0 = $s1
+ $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 Tree_Search [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
+ $s6 = 1
+ $s4 = 0
+while315_test:
+ $s3 = $s6
+ if0 $s3 goto :while315_end
+while315_body:
+ $s5 = $s5
+ $s3 = [$s5+0]
+ $s2 = [$s3+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s3 = $v0
+ $s2 = $s3
+ $s3 = $s7
+ $s1 = $s2
+ $s0 = LtS($s3 $s1 )
+ $s1 = $s0
+ if0 $s1 goto :if320_else
+if320_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s0 = [$s1+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s0
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s0 = $s1
+ if0 $s0 goto :if324_else
+if324_body:
+ $s5 = $s5
+ $s0 = [$s5+0]
+ $s1 = [$s0+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $s5 = $s0
+ goto :if324_end
+if324_else:
+ $s6 = 0
+if324_end:
+ goto :if320_end
+if320_else:
+ $s0 = $s2
+ $s2 = $s7
+ $s1 = LtS($s0 $s2 )
+ $s2 = $s1
+ if0 $s2 goto :if331_else
+if331_body:
+ $s5 = $s5
+ $s2 = [$s5+0]
+ $s1 = [$s2+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s1
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s1 = $s2
+ if0 $s1 goto :if335_else
+if335_body:
+ $s5 = $s5
+ $s1 = [$s5+0]
+ $s2 = [$s1+12]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s1 = $v0
+ $s5 = $s1
+ goto :if335_end
+if335_else:
+ $s6 = 0
+if335_end:
+ goto :if331_end
+if331_else:
+ $s4 = 1
+ $s6 = 0
+if331_end:
+if320_end:
+ goto :while315_test
+while315_end:
+ $s6 = $s4
+ $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 Tree_Print [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
+ $s5 = [$s6+0]
+ $s4 = $s7
+ $s5 = [$s5+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s7 = $v0
+ $s4 = $s7
+ $s4 = 1
+ $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 Tree_RecPrint [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
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+32]
+ 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
+ if0 $s4 goto :if347_else
+if347_body:
+ $s4 = [$s6+0]
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s3 = [$s5+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ $s4 = [$s4+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s3
+ call $s4
+ $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:
+ $s3 = 1
+if347_end:
+ $s7 = $s7
+ $s3 = [$s7+0]
+ $s5 = [$s3+20]
+ 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]
+ $s3 = $v0
+ $s5 = $s3
+ PrintIntS($s5 )
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s3 = [$s5+28]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ if0 $s3 goto :if361_else
+if361_body:
+ $s3 = [$s6+0]
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+12]
+ 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
+ $s3 = [$s3+76]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s4
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s3 = $s5
+ goto :if361_end
+if361_else:
+ $s3 = 1
+if361_end:
+ $s5 = 1
+ $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 Tree_accept [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 = 333
+ PrintIntS($s7 )
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s4 = [$s7+0]
+ $s7 = $s5
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s6
+ $a1 = $s7
+ call $s4
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s7 = $s5
+ $s7 = 0
+ $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 Visitor_visit [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
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+28]
+ 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
+ if0 $s4 goto :if378_else
+if378_body:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s5 = [$s4+12]
+ 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]
+ $s4 = $v0
+ [$s6+8] = $s4
+ $s4 = [$s6+8]
+ $s5 = [$s4+0]
+ $s3 = [$s5+80]
+ $s5 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s4
+ $a1 = $s5
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ goto :if378_end
+if378_else:
+ $s5 = 0
+if378_end:
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s2 = [$s5+32]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s2 = $s5
+ if0 $s2 goto :if389_else
+if389_body:
+ $s7 = $s7
+ $s2 = [$s7+0]
+ $s5 = [$s2+16]
+ 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]
+ $s2 = $v0
+ [$s6+4] = $s2
+ $s2 = [$s6+4]
+ $s5 = [$s2+0]
+ $s7 = [$s5+80]
+ $s5 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s2
+ $a1 = $s5
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s5 = $s6
+ goto :if389_end
+if389_else:
+ $s5 = 0
+if389_end:
+ $s6 = 0
+ $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 MyVisitor_visit [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
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s4 = [$s5+28]
+ 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
+ if0 $s4 goto :if401_else
+if401_body:
+ $s7 = $s7
+ $s4 = [$s7+0]
+ $s5 = [$s4+12]
+ 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]
+ $s4 = $v0
+ [$s6+12] = $s4
+ $s4 = [$s6+12]
+ $s5 = [$s4+0]
+ $s3 = [$s5+80]
+ $s5 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s4
+ $a1 = $s5
+ call $s3
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s2 = $v0
+ $s5 = $s2
+ goto :if401_end
+if401_else:
+ $s5 = 0
+if401_end:
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s2 = [$s5+20]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ $s2 = $s5
+ PrintIntS($s2 )
+ $s7 = $s7
+ $s2 = [$s7+0]
+ $s5 = [$s2+32]
+ 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]
+ $s2 = $v0
+ $s5 = $s2
+ if0 $s5 goto :if416_else
+if416_body:
+ $s7 = $s7
+ $s5 = [$s7+0]
+ $s2 = [$s5+16]
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s7
+ call $s2
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s5 = $v0
+ [$s6+8] = $s5
+ $s5 = [$s6+8]
+ $s2 = [$s5+0]
+ $s7 = [$s2+80]
+ $s2 = $s6
+ local[8] = $t3
+ local[9] = $t4
+ local[10] = $t5
+ local[11] = $t6
+ local[12] = $t7
+ local[13] = $t8
+ $a0 = $s5
+ $a1 = $s2
+ call $s7
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s6 = $v0
+ $s5 = $s6
+ goto :if416_end
+if416_else:
+ $s5 = 0
+if416_end:
+ $s6 = 0
+ $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/ex42.vaporm b/output/ex42.vaporm
index e69de29..1cd96c9 100644
--- a/output/ex42.vaporm
+++ b/output/ex42.vaporm
@@ -0,0 +1,108 @@
+const functable_A
+ :A_Init
+func Main [in 0, out 2, 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_A
+ $s6 = $s7
+ $s6 = $s6
+ $s7 = [$s6+0]
+ $s5 = [$s7+0]
+ $s7 = 42
+ $s4 = 10000
+ $s3 = 1
+ $s2 = 156
+ $s1 = 123
+ 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
+ call $s5
+ $t3 = local[8]
+ $t4 = local[9]
+ $t5 = local[10]
+ $t6 = local[11]
+ $t7 = local[12]
+ $t8 = local[13]
+ $s0 = $v0
+ $s1 = $s0
+ PrintIntS($s1 )
+ $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_Init [in 2, 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 = in[0]
+ $s2 = in[1]
+ [$s5+4] = $s6
+ [$s5+8] = $s7
+ [$s5+12] = $s3
+ [$s5+16] = $s4
+ [$s5+20] = $s2
+ $s2 = 1
+ $v0 = $s2
+ $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/ex45.vaporm b/output/ex45.vaporm
index 2e05671..ed1c490 100644
--- a/output/ex45.vaporm
+++ b/output/ex45.vaporm
@@ -51,7 +51,7 @@ func A_run [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s7 = $a0
+ $s6 = $a0
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -66,12 +66,12 @@ func A_run [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s6 = $v0
- [$s7+4] = $s6
- $s6 = [$s7+4]
- $s7 = [$s6+0]
- $s6 = $s7
- $v0 = $s6
+ $s7 = $v0
+ [$s6+4] = $s7
+ $s7 = [$s6+4]
+ $s6 = [$s7+0]
+ $s7 = $s6
+ $v0 = $s7
$s0 = local[0]
$s1 = local[1]
$s2 = local[2]
diff --git a/output/ex47.vaporm b/output/ex47.vaporm
index 7788591..75c498c 100644
--- a/output/ex47.vaporm
+++ b/output/ex47.vaporm
@@ -73,8 +73,8 @@ func A_set [in 0, out 0, local 14]
local[5] = $s5
local[6] = $s6
local[7] = $s7
- $s6 = $a0
- $s7 = $a1
+ $s5 = $a0
+ $s6 = $a1
local[8] = $t3
local[9] = $t4
local[10] = $t5
@@ -89,16 +89,16 @@ func A_set [in 0, out 0, local 14]
$t6 = local[11]
$t7 = local[12]
$t8 = local[13]
- $s5 = $v0
- [$s6+8] = $s5
- $s5 = [$s6+8]
+ $s7 = $v0
+ [$s5+8] = $s7
+ $s7 = [$s5+8]
$s4 = MulS(5 4 )
$s4 = Add($s4 4 )
- $s4 = Add($s5 $s4 )
- [$s4+0] = $s7
- $s4 = [$s6+8]
- $s6 = [$s4+0]
- $s4 = $s6
+ $s4 = Add($s7 $s4 )
+ [$s4+0] = $s6
+ $s4 = [$s5+8]
+ $s5 = [$s4+0]
+ $s4 = $s5
$v0 = $s4
$s0 = local[0]
$s1 = local[1]
diff --git a/vaporize/LIRDict.java b/vaporize/LIRDict.java
index 30bfed3..ffb1c3e 100644
--- a/vaporize/LIRDict.java
+++ b/vaporize/LIRDict.java
@@ -12,14 +12,17 @@ public class LIRDict {
private TreeSet<LIRVar> intervals;
private int spilled_num; // the number of spilled registers
+ private int in_num; // the number of arguments passed in through the stack
+ private int out_num; // the size of the out stack
private ControlFlowGraph cfg;
- public LIRDict(VFunction f, ControlFlowGraph cfg) {
+ public LIRDict(VFunction f, ControlFlowGraph cfg, int out_num) {
this.intervals = new TreeSet<LIRVar>((v1, v2) -> {
return (v1.compareTo(v2) != 0) ? v1.compareTo(v2) : v1.equals(v2) ? 0 : 1;
});
this.cfg = cfg;
+ this.out_num = out_num;
for (VInstr s : f.body) {
CFGNode n = cfg.getNode(s);
@@ -84,4 +87,8 @@ public class LIRDict {
return this.spilled_num;
}
+ public int getOutNum() {
+ return this.out_num;
+ }
+
}
diff --git a/vaporize/LIRVisitor.java b/vaporize/LIRVisitor.java
index 821573c..21f632d 100644
--- a/vaporize/LIRVisitor.java
+++ b/vaporize/LIRVisitor.java
@@ -15,6 +15,7 @@ public class LIRVisitor extends VInstr.VisitorPR<ControlFlowGraph, String, Runti
private Kettle kettle;
private ArrayList<LIRDict> lirs;
private CFGNode curr; // the current node being processed
+ private int curr_out_num;
private String dot_format; // a list of edges to be processed by graphviz
public LIRVisitor(VaporProgram vp, ArrayList<String> vapor) {
@@ -26,6 +27,7 @@ public class LIRVisitor extends VInstr.VisitorPR<ControlFlowGraph, String, Runti
for (VFunction f : vp.functions) {
ControlFlowGraph cfg = new ControlFlowGraph(f);
this.dot_format = "";
+ this.curr_out_num = 0;
MinimalLogger.info(String.format("LIRVisitor is collecting nodes for %s",
this.kettle.parseFuncName(f)));
@@ -86,7 +88,7 @@ public class LIRVisitor extends VInstr.VisitorPR<ControlFlowGraph, String, Runti
MinimalLogger.info(String.format("Gathering intervals for %s",
this.kettle.parseFuncName(f)));
- LIRDict lir = new LIRDict(f, cfg);
+ LIRDict lir = new LIRDict(f, cfg, this.curr_out_num);
this.lirs.add(lir);
MinimalLogger.info(String.format("Found intervals: %s",
lir.getIntervals().toString()));
@@ -222,8 +224,9 @@ public class LIRVisitor extends VInstr.VisitorPR<ControlFlowGraph, String, Runti
n.sourcePos.toString()));
///////////////////////////////////////////////////////////////
CFGNode curr = cfg.getNode(n);
+ this.curr_out_num = Math.max(this.curr_out_num, n.args.length-4);
if (n.dest != null)
- cfg.addReference(curr, n.dest.toString());
+ cfg.addDefinition(curr, n.dest.toString());
for (VOperand a : n.args) {
cfg.addReference(curr, a.toString());
}
diff --git a/vaporize/VaporizeVisitor.java b/vaporize/VaporizeVisitor.java
index ba319cb..f9ad6c0 100644
--- a/vaporize/VaporizeVisitor.java
+++ b/vaporize/VaporizeVisitor.java
@@ -26,7 +26,9 @@ public class VaporizeVisitor extends VInstr.VisitorP<LIRDict, RuntimeException>
// function in vp to be out of order?
for (int i = 0; i < vp.functions.length; ++i) {
this.addVaporm(String.format("func %s [in %d, out %d, local %d]",
- vp.functions[i].ident, 0, 0, interval_list.get(i).getSpilledNum() + 14));
+ vp.functions[i].ident, Math.max(vp.functions[i].params.length-4, 0),
+ interval_list.get(i).getOutNum(),
+ interval_list.get(i).getSpilledNum() + 14));
for (int j = 0; j < this.callee_save.length; ++j) {
this.addVaporm(String.format(" local[%s] = %s",
j,
@@ -34,11 +36,16 @@ public class VaporizeVisitor extends VInstr.VisitorP<LIRDict, RuntimeException>
}
for (int j = 0; j < vp.functions[i].params.length; ++j)
- this.addVaporm(String.format(" %s = %s",
- interval_list.get(i).getInterval(vp.functions[i].params[j].toString())
- .getAssignedRegister(),
- arg_pass[j]));
-
+ if (j < 4) { // is in a registers
+ this.addVaporm(String.format(" %s = %s",
+ interval_list.get(i).getInterval(vp.functions[i].params[j].toString())
+ .getAssignedRegister(),
+ arg_pass[j]));
+ } else // is in 'out'
+ this.addVaporm(String.format(" %s = in[%s]",
+ interval_list.get(i).getInterval(vp.functions[i].params[j].toString())
+ .getAssignedRegister(),
+ j-4));
TreeSet<Node> f = this.sortFunction(vp.functions[i]);
MinimalLogger.info(String.format("Starting loop with function:\n %s",
@@ -77,9 +84,12 @@ public class VaporizeVisitor extends VInstr.VisitorP<LIRDict, RuntimeException>
if (r.contains("local")) {// SPILL
int i = this.spill_stack.size();
String reg = this.spillers[i];
- this.addVaporm(String.format(" %s = %s",
- reg,
- r));
+ String str = String.format(" %s = %s",
+ reg,
+ r);
+ MinimalLogger.info(String.format("Adding string:\n%s",
+ str));
+ this.vaporm.add(str);
this.spill_stack.push(String.format(" %s = %s",
r,
reg));
@@ -101,6 +111,7 @@ public class VaporizeVisitor extends VInstr.VisitorP<LIRDict, RuntimeException>
MinimalLogger.info(String.format("Adding string:\n%s",
str));
this.vaporm.add(str);
+ this.emptySpillStack();
}
public void visit(LIRDict d, VAssign n) throws RuntimeException {
@@ -132,16 +143,21 @@ public class VaporizeVisitor extends VInstr.VisitorP<LIRDict, RuntimeException>
this.caller_save[i]));
}
- // FIXME for arg num > 4!
for (int i = 0; i < n.args.length; ++i) {
String reg = (n.args[i] instanceof VVarRef.Local) ?
this.getRegister(n.args[i].toString())
: n.args[i].toString();
- MinimalLogger.info(String.format("Adding argument for %s",
- n.args[i].toString()));
- this.addVaporm(String.format(" %s = %s",
- this.arg_pass[i],
- reg));
+ if (i < 4) {// we have registers
+ MinimalLogger.info(String.format("Adding argument for %s",
+ n.args[i].toString()));
+ this.addVaporm(String.format(" %s = %s",
+ this.arg_pass[i],
+ reg));
+ } else { // use 'out'
+ this.addVaporm(String.format(" out[%s] = %s",
+ i-4,
+ reg));
+ }
}
MinimalLogger.severe(String.format("n addr: %s",