diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-04-29 16:44:42 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-04-29 16:44:42 -0600 |
commit | 3dfeff8e8e4c84929e35880bf0bbdea64c085fc0 (patch) | |
tree | 1194536158c8a1c40acd9b19b83a943724c47eca | |
parent | bc7af8fdf0e2f6560c7d7fa6c17f893409c4830c (diff) |
Messy in+out argument passing, observe MoreThan4.vapor passes
-rw-r--r-- | output/BinaryTree.vaporm | 2304 | ||||
-rw-r--r-- | output/LinkedList.vaporm | 318 | ||||
-rw-r--r-- | output/MoreThan4.vaporm | 187 | ||||
-rw-r--r-- | output/TreeVisitor.vaporm | 2690 | ||||
-rw-r--r-- | output/ex42.vaporm | 108 | ||||
-rw-r--r-- | output/ex45.vaporm | 14 | ||||
-rw-r--r-- | output/ex47.vaporm | 20 | ||||
-rw-r--r-- | vaporize/LIRDict.java | 9 | ||||
-rw-r--r-- | vaporize/LIRVisitor.java | 7 | ||||
-rw-r--r-- | vaporize/VaporizeVisitor.java | 46 |
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", |