summaryrefslogtreecommitdiff
path: root/vaporize/tests/BinaryTree.names.vaporm
diff options
context:
space:
mode:
Diffstat (limited to 'vaporize/tests/BinaryTree.names.vaporm')
-rw-r--r--vaporize/tests/BinaryTree.names.vaporm996
1 files changed, 996 insertions, 0 deletions
diff --git a/vaporize/tests/BinaryTree.names.vaporm b/vaporize/tests/BinaryTree.names.vaporm
new file mode 100644
index 0000000..e5785ee
--- /dev/null
+++ b/vaporize/tests/BinaryTree.names.vaporm
@@ -0,0 +1,996 @@
+const vmt_BT
+ :BT.Start
+
+const vmt_Tree
+ :Tree.Init
+ :Tree.SetRight
+ :Tree.SetLeft
+ :Tree.GetRight
+ :Tree.GetLeft
+ :Tree.GetKey
+ :Tree.SetKey
+ :Tree.GetHas_Right
+ :Tree.GetHas_Left
+ :Tree.SetHas_Left
+ :Tree.SetHas_Right
+ :Tree.Compare
+ :Tree.Insert
+ :Tree.Delete
+ :Tree.Remove
+ :Tree.RemoveRight
+ :Tree.RemoveLeft
+ :Tree.Search
+ :Tree.Print
+ :Tree.RecPrint
+
+func Main [in 0, out 0, local 0]
+ $t0{t.0} = HeapAllocZ(4)
+ [$t0{t.0}] = :vmt_BT
+ if $t0{t.0} goto :null1
+ Error("null pointer")
+null1:
+ $t1{t.1} = [$t0{t.0}]
+ $t1{t.1} = [$t1{t.1}]
+ $a0 = $t0{t.0}
+ call $t1{t.1}
+ $t1{t.2} = $v0
+ PrintIntS($t1{t.2})
+ ret
+
+func BT.Start [in 0, out 0, local 1]
+ local[0] = $s0
+ $t0{t.0} = HeapAllocZ(28)
+ [$t0{t.0}] = :vmt_Tree
+ $s0{root} = $t0{t.0}
+ if $s0{root} goto :null2
+ Error("null pointer")
+null2:
+ $t0{t.1} = [$s0{root}]
+ $t0{t.1} = [$t0{t.1}]
+ $a0 = $s0{root}
+ $a1 = 16
+ call $t0{t.1}
+ if $s0{root} goto :null3
+ Error("null pointer")
+null3:
+ $t0{t.2} = [$s0{root}]
+ $t0{t.2} = [$t0{t.2}+72]
+ $a0 = $s0{root}
+ call $t0{t.2}
+ PrintIntS(100000000)
+ if $s0{root} goto :null4
+ Error("null pointer")
+null4:
+ $t0{t.3} = [$s0{root}]
+ $t0{t.3} = [$t0{t.3}+48]
+ $a0 = $s0{root}
+ $a1 = 8
+ call $t0{t.3}
+ if $s0{root} goto :null5
+ Error("null pointer")
+null5:
+ $t0{t.4} = [$s0{root}]
+ $t0{t.4} = [$t0{t.4}+72]
+ $a0 = $s0{root}
+ call $t0{t.4}
+ if $s0{root} goto :null6
+ Error("null pointer")
+null6:
+ $t0{t.5} = [$s0{root}]
+ $t0{t.5} = [$t0{t.5}+48]
+ $a0 = $s0{root}
+ $a1 = 24
+ call $t0{t.5}
+ if $s0{root} goto :null7
+ Error("null pointer")
+null7:
+ $t0{t.6} = [$s0{root}]
+ $t0{t.6} = [$t0{t.6}+48]
+ $a0 = $s0{root}
+ $a1 = 4
+ call $t0{t.6}
+ if $s0{root} goto :null8
+ Error("null pointer")
+null8:
+ $t0{t.7} = [$s0{root}]
+ $t0{t.7} = [$t0{t.7}+48]
+ $a0 = $s0{root}
+ $a1 = 12
+ call $t0{t.7}
+ if $s0{root} goto :null9
+ Error("null pointer")
+null9:
+ $t0{t.8} = [$s0{root}]
+ $t0{t.8} = [$t0{t.8}+48]
+ $a0 = $s0{root}
+ $a1 = 20
+ call $t0{t.8}
+ if $s0{root} goto :null10
+ Error("null pointer")
+null10:
+ $t0{t.9} = [$s0{root}]
+ $t0{t.9} = [$t0{t.9}+48]
+ $a0 = $s0{root}
+ $a1 = 28
+ call $t0{t.9}
+ if $s0{root} goto :null11
+ Error("null pointer")
+null11:
+ $t0{t.10} = [$s0{root}]
+ $t0{t.10} = [$t0{t.10}+48]
+ $a0 = $s0{root}
+ $a1 = 14
+ call $t0{t.10}
+ if $s0{root} goto :null12
+ Error("null pointer")
+null12:
+ $t0{t.11} = [$s0{root}]
+ $t0{t.11} = [$t0{t.11}+72]
+ $a0 = $s0{root}
+ call $t0{t.11}
+ if $s0{root} goto :null13
+ Error("null pointer")
+null13:
+ $t0{t.12} = [$s0{root}]
+ $t0{t.12} = [$t0{t.12}+68]
+ $a0 = $s0{root}
+ $a1 = 24
+ call $t0{t.12}
+ $t0{t.13} = $v0
+ PrintIntS($t0{t.13})
+ if $s0{root} goto :null14
+ Error("null pointer")
+null14:
+ $t0{t.14} = [$s0{root}]
+ $t0{t.14} = [$t0{t.14}+68]
+ $a0 = $s0{root}
+ $a1 = 12
+ call $t0{t.14}
+ $t0{t.15} = $v0
+ PrintIntS($t0{t.15})
+ if $s0{root} goto :null15
+ Error("null pointer")
+null15:
+ $t0{t.16} = [$s0{root}]
+ $t0{t.16} = [$t0{t.16}+68]
+ $a0 = $s0{root}
+ $a1 = 16
+ call $t0{t.16}
+ $t0{t.17} = $v0
+ PrintIntS($t0{t.17})
+ if $s0{root} goto :null16
+ Error("null pointer")
+null16:
+ $t0{t.18} = [$s0{root}]
+ $t0{t.18} = [$t0{t.18}+68]
+ $a0 = $s0{root}
+ $a1 = 50
+ call $t0{t.18}
+ $t0{t.19} = $v0
+ PrintIntS($t0{t.19})
+ if $s0{root} goto :null17
+ Error("null pointer")
+null17:
+ $t0{t.20} = [$s0{root}]
+ $t0{t.20} = [$t0{t.20}+68]
+ $a0 = $s0{root}
+ $a1 = 12
+ call $t0{t.20}
+ $t0{t.21} = $v0
+ PrintIntS($t0{t.21})
+ if $s0{root} goto :null18
+ Error("null pointer")
+null18:
+ $t0{t.22} = [$s0{root}]
+ $t0{t.22} = [$t0{t.22}+52]
+ $a0 = $s0{root}
+ $a1 = 12
+ call $t0{t.22}
+ if $s0{root} goto :null19
+ Error("null pointer")
+null19:
+ $t0{t.23} = [$s0{root}]
+ $t0{t.23} = [$t0{t.23}+72]
+ $a0 = $s0{root}
+ call $t0{t.23}
+ if $s0{root} goto :null20
+ Error("null pointer")
+null20:
+ $t0{t.24} = [$s0{root}]
+ $t0{t.24} = [$t0{t.24}+68]
+ $a0 = $s0{root}
+ $a1 = 12
+ call $t0{t.24}
+ $t0{t.25} = $v0
+ PrintIntS($t0{t.25})
+ $v0 = 0
+ $s0 = local[0]
+ ret
+
+func Tree.Init [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{v_key} = $a1
+ [$t0{this}+12] = $t1{v_key}
+ [$t0{this}+16] = 0
+ [$t0{this}+20] = 0
+ $v0 = 1
+ ret
+
+func Tree.SetRight [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{rn} = $a1
+ [$t0{this}+8] = $t1{rn}
+ $v0 = 1
+ ret
+
+func Tree.SetLeft [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{ln} = $a1
+ [$t0{this}+4] = $t1{ln}
+ $v0 = 1
+ ret
+
+func Tree.GetRight [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t0{t.0} = [$t0{this}+8]
+ $v0 = $t0{t.0}
+ ret
+
+func Tree.GetLeft [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t0{t.0} = [$t0{this}+4]
+ $v0 = $t0{t.0}
+ ret
+
+func Tree.GetKey [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t0{t.0} = [$t0{this}+12]
+ $v0 = $t0{t.0}
+ ret
+
+func Tree.SetKey [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{v_key} = $a1
+ [$t0{this}+12] = $t1{v_key}
+ $v0 = 1
+ ret
+
+func Tree.GetHas_Right [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t0{t.0} = [$t0{this}+20]
+ $v0 = $t0{t.0}
+ ret
+
+func Tree.GetHas_Left [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t0{t.0} = [$t0{this}+16]
+ $v0 = $t0{t.0}
+ ret
+
+func Tree.SetHas_Left [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{val} = $a1
+ [$t0{this}+16] = $t1{val}
+ $v0 = 1
+ ret
+
+func Tree.SetHas_Right [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{val} = $a1
+ [$t0{this}+20] = $t1{val}
+ $v0 = 1
+ ret
+
+func Tree.Compare [in 0, out 0, local 0]
+ $t0{num1} = $a1
+ $t1{num2} = $a2
+ $t2{nti} = Add($t1{num2} 1)
+ $t1{t.0} = LtS($t0{num1} $t1{num2})
+ if0 $t1{t.0} goto :if1_else
+ $t1{ntb} = 0
+ goto :if1_end
+if1_else:
+ $t2{t.1} = LtS($t0{num1} $t2{nti})
+ $t2{t.2} = Sub(1 $t2{t.1})
+ if0 $t2{t.2} goto :if2_else
+ $t1{ntb} = 0
+ goto :if2_end
+if2_else:
+ $t1{ntb} = 1
+if2_end:
+if1_end:
+ $v0 = $t1{ntb}
+ ret
+
+func Tree.Insert [in 0, out 0, local 4]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ $s0{this} = $a0
+ $s1{v_key} = $a1
+ $t0{t.0} = HeapAllocZ(28)
+ [$t0{t.0}] = :vmt_Tree
+ $s2{new_node} = $t0{t.0}
+ if $s2{new_node} goto :null21
+ Error("null pointer")
+null21:
+ $t0{t.1} = [$s2{new_node}]
+ $t0{t.1} = [$t0{t.1}]
+ $a0 = $s2{new_node}
+ $a1 = $s1{v_key}
+ call $t0{t.1}
+ $s0{current_node} = $s0{this}
+ $s3{cont} = 1
+while1_top:
+ if0 $s3{cont} goto :while1_end
+ if $s0{current_node} goto :null22
+ Error("null pointer")
+null22:
+ $t0{t.2} = [$s0{current_node}]
+ $t0{t.2} = [$t0{t.2}+20]
+ $a0 = $s0{current_node}
+ call $t0{t.2}
+ $t0{key_aux} = $v0
+ $t0{t.3} = LtS($s1{v_key} $t0{key_aux})
+ if0 $t0{t.3} goto :if3_else
+ if $s0{current_node} goto :null23
+ Error("null pointer")
+null23:
+ $t0{t.4} = [$s0{current_node}]
+ $t0{t.4} = [$t0{t.4}+32]
+ $a0 = $s0{current_node}
+ call $t0{t.4}
+ $t0{t.5} = $v0
+ if0 $t0{t.5} goto :if4_else
+ if $s0{current_node} goto :null24
+ Error("null pointer")
+null24:
+ $t0{t.6} = [$s0{current_node}]
+ $t0{t.6} = [$t0{t.6}+16]
+ $a0 = $s0{current_node}
+ call $t0{t.6}
+ $s0{current_node} = $v0
+ goto :if4_end
+if4_else:
+ $s3{cont} = 0
+ if $s0{current_node} goto :null25
+ Error("null pointer")
+null25:
+ $t0{t.7} = [$s0{current_node}]
+ $t0{t.7} = [$t0{t.7}+36]
+ $a0 = $s0{current_node}
+ $a1 = 1
+ call $t0{t.7}
+ if $s0{current_node} goto :null26
+ Error("null pointer")
+null26:
+ $t0{t.8} = [$s0{current_node}]
+ $t0{t.8} = [$t0{t.8}+8]
+ $a0 = $s0{current_node}
+ $a1 = $s2{new_node}
+ call $t0{t.8}
+if4_end:
+ goto :if3_end
+if3_else:
+ if $s0{current_node} goto :null27
+ Error("null pointer")
+null27:
+ $t0{t.9} = [$s0{current_node}]
+ $t0{t.9} = [$t0{t.9}+28]
+ $a0 = $s0{current_node}
+ call $t0{t.9}
+ $t0{t.10} = $v0
+ if0 $t0{t.10} goto :if5_else
+ if $s0{current_node} goto :null28
+ Error("null pointer")
+null28:
+ $t0{t.11} = [$s0{current_node}]
+ $t0{t.11} = [$t0{t.11}+12]
+ $a0 = $s0{current_node}
+ call $t0{t.11}
+ $s0{current_node} = $v0
+ goto :if5_end
+if5_else:
+ $s3{cont} = 0
+ if $s0{current_node} goto :null29
+ Error("null pointer")
+null29:
+ $t0{t.12} = [$s0{current_node}]
+ $t0{t.12} = [$t0{t.12}+40]
+ $a0 = $s0{current_node}
+ $a1 = 1
+ call $t0{t.12}
+ if $s0{current_node} goto :null30
+ Error("null pointer")
+null30:
+ $t0{t.13} = [$s0{current_node}]
+ $t0{t.13} = [$t0{t.13}+4]
+ $a0 = $s0{current_node}
+ $a1 = $s2{new_node}
+ call $t0{t.13}
+if5_end:
+if3_end:
+ goto :while1_top
+while1_end:
+ $v0 = 1
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ ret
+
+func Tree.Delete [in 0, out 0, local 7]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ local[4] = $s4
+ local[5] = $s5
+ local[6] = $s6
+ $s0{this} = $a0
+ $s1{v_key} = $a1
+ $s2{current_node} = $s0{this}
+ $s3{parent_node} = $s0{this}
+ $s4{cont} = 1
+ $s5{found} = 0
+ $s6{is_root} = 1
+while2_top:
+ if0 $s4{cont} goto :while2_end
+ if $s2{current_node} goto :null31
+ Error("null pointer")
+null31:
+ $t0{t.0} = [$s2{current_node}]
+ $t0{t.0} = [$t0{t.0}+20]
+ $a0 = $s2{current_node}
+ call $t0{t.0}
+ $t0{key_aux} = $v0
+ $t1{t.1} = LtS($s1{v_key} $t0{key_aux})
+ if0 $t1{t.1} goto :if6_else
+ if $s2{current_node} goto :null32
+ Error("null pointer")
+null32:
+ $t1{t.2} = [$s2{current_node}]
+ $t1{t.2} = [$t1{t.2}+32]
+ $a0 = $s2{current_node}
+ call $t1{t.2}
+ $t1{t.3} = $v0
+ if0 $t1{t.3} goto :if7_else
+ $s3{parent_node} = $s2{current_node}
+ if $s2{current_node} goto :null33
+ Error("null pointer")
+null33:
+ $t1{t.4} = [$s2{current_node}]
+ $t1{t.4} = [$t1{t.4}+16]
+ $a0 = $s2{current_node}
+ call $t1{t.4}
+ $s2{current_node} = $v0
+ goto :if7_end
+if7_else:
+ $s4{cont} = 0
+if7_end:
+ goto :if6_end
+if6_else:
+ $t0{t.5} = LtS($t0{key_aux} $s1{v_key})
+ if0 $t0{t.5} goto :if8_else
+ if $s2{current_node} goto :null34
+ Error("null pointer")
+null34:
+ $t0{t.6} = [$s2{current_node}]
+ $t0{t.6} = [$t0{t.6}+28]
+ $a0 = $s2{current_node}
+ call $t0{t.6}
+ $t0{t.7} = $v0
+ if0 $t0{t.7} goto :if9_else
+ $s3{parent_node} = $s2{current_node}
+ if $s2{current_node} goto :null35
+ Error("null pointer")
+null35:
+ $t0{t.8} = [$s2{current_node}]
+ $t0{t.8} = [$t0{t.8}+12]
+ $a0 = $s2{current_node}
+ call $t0{t.8}
+ $s2{current_node} = $v0
+ goto :if9_end
+if9_else:
+ $s4{cont} = 0
+if9_end:
+ goto :if8_end
+if8_else:
+ if0 $s6{is_root} goto :if10_else
+ if $s2{current_node} goto :null36
+ Error("null pointer")
+null36:
+ $t0{t.10} = [$s2{current_node}]
+ $t0{t.10} = [$t0{t.10}+28]
+ $a0 = $s2{current_node}
+ call $t0{t.10}
+ $t0{t.11} = $v0
+ $t0{t.12} = Sub(1 $t0{t.11})
+ if0 $t0{t.12} goto :ss1_else
+ if $s2{current_node} goto :null37
+ Error("null pointer")
+null37:
+ $t0{t.13} = [$s2{current_node}]
+ $t0{t.13} = [$t0{t.13}+32]
+ $a0 = $s2{current_node}
+ call $t0{t.13}
+ $t0{t.14} = $v0
+ $t0{t.9} = Sub(1 $t0{t.14})
+ goto :ss1_end
+ss1_else:
+ $t0{t.9} = 0
+ss1_end:
+ if0 $t0{t.9} goto :if11_else
+ goto :if11_end
+if11_else:
+ $t0{t.15} = [$s0{this}]
+ $t0{t.15} = [$t0{t.15}+56]
+ $a0 = $s0{this}
+ $a1 = $s3{parent_node}
+ $a2 = $s2{current_node}
+ call $t0{t.15}
+if11_end:
+ goto :if10_end
+if10_else:
+ $t0{t.16} = [$s0{this}]
+ $t0{t.16} = [$t0{t.16}+56]
+ $a0 = $s0{this}
+ $a1 = $s3{parent_node}
+ $a2 = $s2{current_node}
+ call $t0{t.16}
+if10_end:
+ $s5{found} = 1
+ $s4{cont} = 0
+if8_end:
+if6_end:
+ $s6{is_root} = 0
+ goto :while2_top
+while2_end:
+ $v0 = $s5{found}
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ $s4 = local[4]
+ $s5 = local[5]
+ $s6 = local[6]
+ ret
+
+func Tree.Remove [in 0, out 0, local 3]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ $s0{this} = $a0
+ $s1{p_node} = $a1
+ $s2{c_node} = $a2
+ if $s2{c_node} goto :null38
+ Error("null pointer")
+null38:
+ $t0{t.0} = [$s2{c_node}]
+ $t0{t.0} = [$t0{t.0}+32]
+ $a0 = $s2{c_node}
+ call $t0{t.0}
+ $t0{t.1} = $v0
+ if0 $t0{t.1} goto :if12_else
+ $t0{t.2} = [$s0{this}]
+ $t0{t.2} = [$t0{t.2}+64]
+ $a0 = $s0{this}
+ $a1 = $s1{p_node}
+ $a2 = $s2{c_node}
+ call $t0{t.2}
+ goto :if12_end
+if12_else:
+ if $s2{c_node} goto :null39
+ Error("null pointer")
+null39:
+ $t0{t.3} = [$s2{c_node}]
+ $t0{t.3} = [$t0{t.3}+28]
+ $a0 = $s2{c_node}
+ call $t0{t.3}
+ $t0{t.4} = $v0
+ if0 $t0{t.4} goto :if13_else
+ $t0{t.5} = [$s0{this}]
+ $t0{t.5} = [$t0{t.5}+60]
+ $a0 = $s0{this}
+ $a1 = $s1{p_node}
+ $a2 = $s2{c_node}
+ call $t0{t.5}
+ goto :if13_end
+if13_else:
+ if $s2{c_node} goto :null40
+ Error("null pointer")
+null40:
+ $t0{t.6} = [$s2{c_node}]
+ $t0{t.6} = [$t0{t.6}+20]
+ $a0 = $s2{c_node}
+ call $t0{t.6}
+ $s2{auxkey1} = $v0
+ if $s1{p_node} goto :null41
+ Error("null pointer")
+null41:
+ $t0{t.7} = [$s1{p_node}]
+ $t0{t.7} = [$t0{t.7}+16]
+ $a0 = $s1{p_node}
+ call $t0{t.7}
+ $t0{t.8} = $v0
+ if $t0{t.8} goto :null42
+ Error("null pointer")
+null42:
+ $t1{t.9} = [$t0{t.8}]
+ $t1{t.9} = [$t1{t.9}+20]
+ $a0 = $t0{t.8}
+ call $t1{t.9}
+ $t1{auxkey2} = $v0
+ $t0{t.10} = [$s0{this}]
+ $t0{t.10} = [$t0{t.10}+44]
+ $a0 = $s0{this}
+ $a1 = $s2{auxkey1}
+ $a2 = $t1{auxkey2}
+ call $t0{t.10}
+ $t0{t.11} = $v0
+ if0 $t0{t.11} goto :if14_else
+ if $s1{p_node} goto :null43
+ Error("null pointer")
+null43:
+ $t0{t.12} = [$s1{p_node}]
+ $t0{t.12} = [$t0{t.12}+8]
+ $t1{t.13} = [$s0{this}+24]
+ $a0 = $s1{p_node}
+ $a1 = $t1{t.13}
+ call $t0{t.12}
+ if $s1{p_node} goto :null44
+ Error("null pointer")
+null44:
+ $t1{t.14} = [$s1{p_node}]
+ $t1{t.14} = [$t1{t.14}+36]
+ $a0 = $s1{p_node}
+ $a1 = 0
+ call $t1{t.14}
+ goto :if14_end
+if14_else:
+ if $s1{p_node} goto :null45
+ Error("null pointer")
+null45:
+ $t1{t.15} = [$s1{p_node}]
+ $t1{t.15} = [$t1{t.15}+4]
+ $t0{t.16} = [$s0{this}+24]
+ $a0 = $s1{p_node}
+ $a1 = $t0{t.16}
+ call $t1{t.15}
+ if $s1{p_node} goto :null46
+ Error("null pointer")
+null46:
+ $t0{t.17} = [$s1{p_node}]
+ $t0{t.17} = [$t0{t.17}+40]
+ $a0 = $s1{p_node}
+ $a1 = 0
+ call $t0{t.17}
+if14_end:
+if13_end:
+if12_end:
+ $v0 = 1
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ ret
+
+func Tree.RemoveRight [in 0, out 0, local 4]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ $s0{this} = $a0
+ $s1{p_node} = $a1
+ $s2{c_node} = $a2
+while3_top:
+ if $s2{c_node} goto :null47
+ Error("null pointer")
+null47:
+ $t0{t.0} = [$s2{c_node}]
+ $t0{t.0} = [$t0{t.0}+28]
+ $a0 = $s2{c_node}
+ call $t0{t.0}
+ $t0{t.1} = $v0
+ if0 $t0{t.1} goto :while3_end
+ if $s2{c_node} goto :null48
+ Error("null pointer")
+null48:
+ $s3{t.2} = [$s2{c_node}]
+ $s3{t.2} = [$s3{t.2}+24]
+ if $s2{c_node} goto :null49
+ Error("null pointer")
+null49:
+ $t0{t.3} = [$s2{c_node}]
+ $t0{t.3} = [$t0{t.3}+12]
+ $a0 = $s2{c_node}
+ call $t0{t.3}
+ $t0{t.4} = $v0
+ if $t0{t.4} goto :null50
+ Error("null pointer")
+null50:
+ $t1{t.5} = [$t0{t.4}]
+ $t1{t.5} = [$t1{t.5}+20]
+ $a0 = $t0{t.4}
+ call $t1{t.5}
+ $t1{t.6} = $v0
+ $a0 = $s2{c_node}
+ $a1 = $t1{t.6}
+ call $s3{t.2}
+ $s1{p_node} = $s2{c_node}
+ if $s2{c_node} goto :null51
+ Error("null pointer")
+null51:
+ $t1{t.7} = [$s2{c_node}]
+ $t1{t.7} = [$t1{t.7}+12]
+ $a0 = $s2{c_node}
+ call $t1{t.7}
+ $s2{c_node} = $v0
+ goto :while3_top
+while3_end:
+ if $s1{p_node} goto :null52
+ Error("null pointer")
+null52:
+ $t1{t.8} = [$s1{p_node}]
+ $t1{t.8} = [$t1{t.8}+4]
+ $t0{t.9} = [$s0{this}+24]
+ $a0 = $s1{p_node}
+ $a1 = $t0{t.9}
+ call $t1{t.8}
+ if $s1{p_node} goto :null53
+ Error("null pointer")
+null53:
+ $t0{t.10} = [$s1{p_node}]
+ $t0{t.10} = [$t0{t.10}+40]
+ $a0 = $s1{p_node}
+ $a1 = 0
+ call $t0{t.10}
+ $v0 = 1
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ ret
+
+func Tree.RemoveLeft [in 0, out 0, local 4]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ $s0{this} = $a0
+ $s1{p_node} = $a1
+ $s2{c_node} = $a2
+while4_top:
+ if $s2{c_node} goto :null54
+ Error("null pointer")
+null54:
+ $t0{t.0} = [$s2{c_node}]
+ $t0{t.0} = [$t0{t.0}+32]
+ $a0 = $s2{c_node}
+ call $t0{t.0}
+ $t0{t.1} = $v0
+ if0 $t0{t.1} goto :while4_end
+ if $s2{c_node} goto :null55
+ Error("null pointer")
+null55:
+ $s3{t.2} = [$s2{c_node}]
+ $s3{t.2} = [$s3{t.2}+24]
+ if $s2{c_node} goto :null56
+ Error("null pointer")
+null56:
+ $t0{t.3} = [$s2{c_node}]
+ $t0{t.3} = [$t0{t.3}+16]
+ $a0 = $s2{c_node}
+ call $t0{t.3}
+ $t0{t.4} = $v0
+ if $t0{t.4} goto :null57
+ Error("null pointer")
+null57:
+ $t1{t.5} = [$t0{t.4}]
+ $t1{t.5} = [$t1{t.5}+20]
+ $a0 = $t0{t.4}
+ call $t1{t.5}
+ $t1{t.6} = $v0
+ $a0 = $s2{c_node}
+ $a1 = $t1{t.6}
+ call $s3{t.2}
+ $s1{p_node} = $s2{c_node}
+ if $s2{c_node} goto :null58
+ Error("null pointer")
+null58:
+ $t1{t.7} = [$s2{c_node}]
+ $t1{t.7} = [$t1{t.7}+16]
+ $a0 = $s2{c_node}
+ call $t1{t.7}
+ $s2{c_node} = $v0
+ goto :while4_top
+while4_end:
+ if $s1{p_node} goto :null59
+ Error("null pointer")
+null59:
+ $t1{t.8} = [$s1{p_node}]
+ $t1{t.8} = [$t1{t.8}+8]
+ $t0{t.9} = [$s0{this}+24]
+ $a0 = $s1{p_node}
+ $a1 = $t0{t.9}
+ call $t1{t.8}
+ if $s1{p_node} goto :null60
+ Error("null pointer")
+null60:
+ $t0{t.10} = [$s1{p_node}]
+ $t0{t.10} = [$t0{t.10}+36]
+ $a0 = $s1{p_node}
+ $a1 = 0
+ call $t0{t.10}
+ $v0 = 1
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ ret
+
+func Tree.Search [in 0, out 0, local 4]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ local[3] = $s3
+ $t0{this} = $a0
+ $s0{v_key} = $a1
+ $s1{current_node} = $t0{this}
+ $s2{cont} = 1
+ $s3{ifound} = 0
+while5_top:
+ if0 $s2{cont} goto :while5_end
+ if $s1{current_node} goto :null61
+ Error("null pointer")
+null61:
+ $t0{t.0} = [$s1{current_node}]
+ $t0{t.0} = [$t0{t.0}+20]
+ $a0 = $s1{current_node}
+ call $t0{t.0}
+ $t0{key_aux} = $v0
+ $t1{t.1} = LtS($s0{v_key} $t0{key_aux})
+ if0 $t1{t.1} goto :if15_else
+ if $s1{current_node} goto :null62
+ Error("null pointer")
+null62:
+ $t1{t.2} = [$s1{current_node}]
+ $t1{t.2} = [$t1{t.2}+32]
+ $a0 = $s1{current_node}
+ call $t1{t.2}
+ $t1{t.3} = $v0
+ if0 $t1{t.3} goto :if16_else
+ if $s1{current_node} goto :null63
+ Error("null pointer")
+null63:
+ $t1{t.4} = [$s1{current_node}]
+ $t1{t.4} = [$t1{t.4}+16]
+ $a0 = $s1{current_node}
+ call $t1{t.4}
+ $s1{current_node} = $v0
+ goto :if16_end
+if16_else:
+ $s2{cont} = 0
+if16_end:
+ goto :if15_end
+if15_else:
+ $t0{t.5} = LtS($t0{key_aux} $s0{v_key})
+ if0 $t0{t.5} goto :if17_else
+ if $s1{current_node} goto :null64
+ Error("null pointer")
+null64:
+ $t0{t.6} = [$s1{current_node}]
+ $t0{t.6} = [$t0{t.6}+28]
+ $a0 = $s1{current_node}
+ call $t0{t.6}
+ $t0{t.7} = $v0
+ if0 $t0{t.7} goto :if18_else
+ if $s1{current_node} goto :null65
+ Error("null pointer")
+null65:
+ $t0{t.8} = [$s1{current_node}]
+ $t0{t.8} = [$t0{t.8}+12]
+ $a0 = $s1{current_node}
+ call $t0{t.8}
+ $s1{current_node} = $v0
+ goto :if18_end
+if18_else:
+ $s2{cont} = 0
+if18_end:
+ goto :if17_end
+if17_else:
+ $s3{ifound} = 1
+ $s2{cont} = 0
+if17_end:
+if15_end:
+ goto :while5_top
+while5_end:
+ $v0 = $s3{ifound}
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ $s3 = local[3]
+ ret
+
+func Tree.Print [in 0, out 0, local 0]
+ $t0{this} = $a0
+ $t1{current_node} = $t0{this}
+ $t2{t.0} = [$t0{this}]
+ $t2{t.0} = [$t2{t.0}+76]
+ $a0 = $t0{this}
+ $a1 = $t1{current_node}
+ call $t2{t.0}
+ $v0 = 1
+ ret
+
+func Tree.RecPrint [in 0, out 0, local 3]
+ local[0] = $s0
+ local[1] = $s1
+ local[2] = $s2
+ $s0{this} = $a0
+ $s1{node} = $a1
+ if $s1{node} goto :null66
+ Error("null pointer")
+null66:
+ $t0{t.0} = [$s1{node}]
+ $t0{t.0} = [$t0{t.0}+32]
+ $a0 = $s1{node}
+ call $t0{t.0}
+ $t0{t.1} = $v0
+ if0 $t0{t.1} goto :if19_else
+ $s2{t.2} = [$s0{this}]
+ $s2{t.2} = [$s2{t.2}+76]
+ if $s1{node} goto :null67
+ Error("null pointer")
+null67:
+ $t0{t.3} = [$s1{node}]
+ $t0{t.3} = [$t0{t.3}+16]
+ $a0 = $s1{node}
+ call $t0{t.3}
+ $t0{t.4} = $v0
+ $a0 = $s0{this}
+ $a1 = $t0{t.4}
+ call $s2{t.2}
+ goto :if19_end
+if19_else:
+if19_end:
+ if $s1{node} goto :null68
+ Error("null pointer")
+null68:
+ $t0{t.5} = [$s1{node}]
+ $t0{t.5} = [$t0{t.5}+20]
+ $a0 = $s1{node}
+ call $t0{t.5}
+ $t0{t.6} = $v0
+ PrintIntS($t0{t.6})
+ if $s1{node} goto :null69
+ Error("null pointer")
+null69:
+ $t0{t.7} = [$s1{node}]
+ $t0{t.7} = [$t0{t.7}+28]
+ $a0 = $s1{node}
+ call $t0{t.7}
+ $t0{t.8} = $v0
+ if0 $t0{t.8} goto :if20_else
+ $s2{t.9} = [$s0{this}]
+ $s2{t.9} = [$s2{t.9}+76]
+ if $s1{node} goto :null70
+ Error("null pointer")
+null70:
+ $t0{t.10} = [$s1{node}]
+ $t0{t.10} = [$t0{t.10}+12]
+ $a0 = $s1{node}
+ call $t0{t.10}
+ $t0{t.11} = $v0
+ $a0 = $s0{this}
+ $a1 = $t0{t.11}
+ call $s2{t.9}
+ goto :if20_end
+if20_else:
+if20_end:
+ $v0 = 1
+ $s0 = local[0]
+ $s1 = local[1]
+ $s2 = local[2]
+ ret
+