const vmt_TV :TV.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 :Tree.accept const vmt_Visitor :Visitor.visit const vmt_MyVisitor :MyVisitor.visit func Main() t.0 = HeapAllocZ(4) [t.0] = :vmt_TV if t.0 goto :null1 Error("null pointer") null1: t.1 = [t.0] t.1 = [t.1+0] t.2 = call t.1(t.0) PrintIntS(t.2) ret func TV.Start(this) t.0 = HeapAllocZ(28) [t.0] = :vmt_Tree root = t.0 if root goto :null2 Error("null pointer") null2: t.1 = [root] t.1 = [t.1+0] ntb = call t.1(root 16) if root goto :null3 Error("null pointer") null3: t.2 = [root] t.2 = [t.2+72] ntb = call t.2(root) PrintIntS(100000000) if root goto :null4 Error("null pointer") null4: t.3 = [root] t.3 = [t.3+48] ntb = call t.3(root 8) if root goto :null5 Error("null pointer") null5: t.4 = [root] t.4 = [t.4+48] ntb = call t.4(root 24) if root goto :null6 Error("null pointer") null6: t.5 = [root] t.5 = [t.5+48] ntb = call t.5(root 4) if root goto :null7 Error("null pointer") null7: t.6 = [root] t.6 = [t.6+48] ntb = call t.6(root 12) if root goto :null8 Error("null pointer") null8: t.7 = [root] t.7 = [t.7+48] ntb = call t.7(root 20) if root goto :null9 Error("null pointer") null9: t.8 = [root] t.8 = [t.8+48] ntb = call t.8(root 28) if root goto :null10 Error("null pointer") null10: t.9 = [root] t.9 = [t.9+48] ntb = call t.9(root 14) if root goto :null11 Error("null pointer") null11: t.10 = [root] t.10 = [t.10+72] ntb = call t.10(root) PrintIntS(100000000) t.11 = HeapAllocZ(12) [t.11] = :vmt_MyVisitor v = t.11 PrintIntS(50000000) if root goto :null12 Error("null pointer") null12: t.12 = [root] t.12 = [t.12+80] nti = call t.12(root v) PrintIntS(100000000) if root goto :null13 Error("null pointer") null13: t.13 = [root] t.13 = [t.13+68] t.14 = call t.13(root 24) PrintIntS(t.14) if root goto :null14 Error("null pointer") null14: t.15 = [root] t.15 = [t.15+68] t.16 = call t.15(root 12) PrintIntS(t.16) if root goto :null15 Error("null pointer") null15: t.17 = [root] t.17 = [t.17+68] t.18 = call t.17(root 16) PrintIntS(t.18) if root goto :null16 Error("null pointer") null16: t.19 = [root] t.19 = [t.19+68] t.20 = call t.19(root 50) PrintIntS(t.20) if root goto :null17 Error("null pointer") null17: t.21 = [root] t.21 = [t.21+68] t.22 = call t.21(root 12) PrintIntS(t.22) if root goto :null18 Error("null pointer") null18: t.23 = [root] t.23 = [t.23+52] ntb = call t.23(root 12) if root goto :null19 Error("null pointer") null19: t.24 = [root] t.24 = [t.24+72] ntb = call t.24(root) if root goto :null20 Error("null pointer") null20: t.25 = [root] t.25 = [t.25+68] t.26 = call t.25(root 12) PrintIntS(t.26) ret 0 func Tree.Init(this v_key) [this+12] = v_key [this+16] = 0 [this+20] = 0 ret 1 func Tree.SetRight(this rn) [this+8] = rn ret 1 func Tree.SetLeft(this ln) [this+4] = ln ret 1 func Tree.GetRight(this) t.0 = [this+8] ret t.0 func Tree.GetLeft(this) t.0 = [this+4] ret t.0 func Tree.GetKey(this) t.0 = [this+12] ret t.0 func Tree.SetKey(this v_key) [this+12] = v_key ret 1 func Tree.GetHas_Right(this) t.0 = [this+20] ret t.0 func Tree.GetHas_Left(this) t.0 = [this+16] ret t.0 func Tree.SetHas_Left(this val) [this+16] = val ret 1 func Tree.SetHas_Right(this val) [this+20] = val ret 1 func Tree.Compare(this num1 num2) ntb = 0 nti = Add(num2 1) t.0 = LtS(num1 num2) if0 t.0 goto :if1_else ntb = 0 goto :if1_end if1_else: t.1 = LtS(num1 nti) t.2 = Sub(1 t.1) if0 t.2 goto :if2_else ntb = 0 goto :if2_end if2_else: ntb = 1 if2_end: if1_end: ret ntb func Tree.Insert(this v_key) t.0 = HeapAllocZ(28) [t.0] = :vmt_Tree new_node = t.0 if new_node goto :null21 Error("null pointer") null21: t.1 = [new_node] t.1 = [t.1+0] ntb = call t.1(new_node v_key) current_node = this cont = 1 while1_top: if0 cont goto :while1_end if current_node goto :null22 Error("null pointer") null22: t.2 = [current_node] t.2 = [t.2+20] key_aux = call t.2(current_node) t.3 = LtS(v_key key_aux) if0 t.3 goto :if3_else if current_node goto :null23 Error("null pointer") null23: t.4 = [current_node] t.4 = [t.4+32] t.5 = call t.4(current_node) if0 t.5 goto :if4_else if current_node goto :null24 Error("null pointer") null24: t.6 = [current_node] t.6 = [t.6+16] current_node = call t.6(current_node) goto :if4_end if4_else: cont = 0 if current_node goto :null25 Error("null pointer") null25: t.7 = [current_node] t.7 = [t.7+36] ntb = call t.7(current_node 1) if current_node goto :null26 Error("null pointer") null26: t.8 = [current_node] t.8 = [t.8+8] ntb = call t.8(current_node new_node) if4_end: goto :if3_end if3_else: if current_node goto :null27 Error("null pointer") null27: t.9 = [current_node] t.9 = [t.9+28] t.10 = call t.9(current_node) if0 t.10 goto :if5_else if current_node goto :null28 Error("null pointer") null28: t.11 = [current_node] t.11 = [t.11+12] current_node = call t.11(current_node) goto :if5_end if5_else: cont = 0 if current_node goto :null29 Error("null pointer") null29: t.12 = [current_node] t.12 = [t.12+40] ntb = call t.12(current_node 1) if current_node goto :null30 Error("null pointer") null30: t.13 = [current_node] t.13 = [t.13+4] ntb = call t.13(current_node new_node) if5_end: if3_end: goto :while1_top while1_end: ret 1 func Tree.Delete(this v_key) current_node = this parent_node = this cont = 1 found = 0 is_root = 1 while2_top: if0 cont goto :while2_end if current_node goto :null31 Error("null pointer") null31: t.0 = [current_node] t.0 = [t.0+20] key_aux = call t.0(current_node) t.1 = LtS(v_key key_aux) if0 t.1 goto :if6_else if current_node goto :null32 Error("null pointer") null32: t.2 = [current_node] t.2 = [t.2+32] t.3 = call t.2(current_node) if0 t.3 goto :if7_else parent_node = current_node if current_node goto :null33 Error("null pointer") null33: t.4 = [current_node] t.4 = [t.4+16] current_node = call t.4(current_node) goto :if7_end if7_else: cont = 0 if7_end: goto :if6_end if6_else: t.5 = LtS(key_aux v_key) if0 t.5 goto :if8_else if current_node goto :null34 Error("null pointer") null34: t.6 = [current_node] t.6 = [t.6+28] t.7 = call t.6(current_node) if0 t.7 goto :if9_else parent_node = current_node if current_node goto :null35 Error("null pointer") null35: t.8 = [current_node] t.8 = [t.8+12] current_node = call t.8(current_node) goto :if9_end if9_else: cont = 0 if9_end: goto :if8_end if8_else: if0 is_root goto :if10_else if current_node goto :null36 Error("null pointer") null36: t.10 = [current_node] t.10 = [t.10+28] t.11 = call t.10(current_node) t.12 = Sub(1 t.11) if0 t.12 goto :ss1_else if current_node goto :null37 Error("null pointer") null37: t.13 = [current_node] t.13 = [t.13+32] t.14 = call t.13(current_node) t.9 = Sub(1 t.14) goto :ss1_end ss1_else: t.9 = 0 ss1_end: if0 t.9 goto :if11_else ntb = 1 goto :if11_end if11_else: t.15 = [this] t.15 = [t.15+56] ntb = call t.15(this parent_node current_node) if11_end: goto :if10_end if10_else: t.16 = [this] t.16 = [t.16+56] ntb = call t.16(this parent_node current_node) if10_end: found = 1 cont = 0 if8_end: if6_end: is_root = 0 goto :while2_top while2_end: ret found func Tree.Remove(this p_node c_node) if c_node goto :null38 Error("null pointer") null38: t.0 = [c_node] t.0 = [t.0+32] t.1 = call t.0(c_node) if0 t.1 goto :if12_else t.2 = [this] t.2 = [t.2+64] ntb = call t.2(this p_node c_node) goto :if12_end if12_else: if c_node goto :null39 Error("null pointer") null39: t.3 = [c_node] t.3 = [t.3+28] t.4 = call t.3(c_node) if0 t.4 goto :if13_else t.5 = [this] t.5 = [t.5+60] ntb = call t.5(this p_node c_node) goto :if13_end if13_else: if c_node goto :null40 Error("null pointer") null40: t.6 = [c_node] t.6 = [t.6+20] auxkey1 = call t.6(c_node) if p_node goto :null41 Error("null pointer") null41: t.7 = [p_node] t.7 = [t.7+16] t.8 = call t.7(p_node) if t.8 goto :null42 Error("null pointer") null42: t.9 = [t.8] t.9 = [t.9+20] auxkey2 = call t.9(t.8) t.10 = [this] t.10 = [t.10+44] t.11 = call t.10(this auxkey1 auxkey2) if0 t.11 goto :if14_else if p_node goto :null43 Error("null pointer") null43: t.12 = [p_node] t.12 = [t.12+8] t.13 = [this+24] ntb = call t.12(p_node t.13) if p_node goto :null44 Error("null pointer") null44: t.14 = [p_node] t.14 = [t.14+36] ntb = call t.14(p_node 0) goto :if14_end if14_else: if p_node goto :null45 Error("null pointer") null45: t.15 = [p_node] t.15 = [t.15+4] t.16 = [this+24] ntb = call t.15(p_node t.16) if p_node goto :null46 Error("null pointer") null46: t.17 = [p_node] t.17 = [t.17+40] ntb = call t.17(p_node 0) if14_end: if13_end: if12_end: ret 1 func Tree.RemoveRight(this p_node c_node) while3_top: if c_node goto :null47 Error("null pointer") null47: t.0 = [c_node] t.0 = [t.0+28] t.1 = call t.0(c_node) if0 t.1 goto :while3_end if c_node goto :null48 Error("null pointer") null48: t.2 = [c_node] t.2 = [t.2+24] if c_node goto :null49 Error("null pointer") null49: t.3 = [c_node] t.3 = [t.3+12] t.4 = call t.3(c_node) if t.4 goto :null50 Error("null pointer") null50: t.5 = [t.4] t.5 = [t.5+20] t.6 = call t.5(t.4) ntb = call t.2(c_node t.6) p_node = c_node if c_node goto :null51 Error("null pointer") null51: t.7 = [c_node] t.7 = [t.7+12] c_node = call t.7(c_node) goto :while3_top while3_end: if p_node goto :null52 Error("null pointer") null52: t.8 = [p_node] t.8 = [t.8+4] t.9 = [this+24] ntb = call t.8(p_node t.9) if p_node goto :null53 Error("null pointer") null53: t.10 = [p_node] t.10 = [t.10+40] ntb = call t.10(p_node 0) ret 1 func Tree.RemoveLeft(this p_node c_node) while4_top: if c_node goto :null54 Error("null pointer") null54: t.0 = [c_node] t.0 = [t.0+32] t.1 = call t.0(c_node) if0 t.1 goto :while4_end if c_node goto :null55 Error("null pointer") null55: t.2 = [c_node] t.2 = [t.2+24] if c_node goto :null56 Error("null pointer") null56: t.3 = [c_node] t.3 = [t.3+16] t.4 = call t.3(c_node) if t.4 goto :null57 Error("null pointer") null57: t.5 = [t.4] t.5 = [t.5+20] t.6 = call t.5(t.4) ntb = call t.2(c_node t.6) p_node = c_node if c_node goto :null58 Error("null pointer") null58: t.7 = [c_node] t.7 = [t.7+16] c_node = call t.7(c_node) goto :while4_top while4_end: if p_node goto :null59 Error("null pointer") null59: t.8 = [p_node] t.8 = [t.8+8] t.9 = [this+24] ntb = call t.8(p_node t.9) if p_node goto :null60 Error("null pointer") null60: t.10 = [p_node] t.10 = [t.10+36] ntb = call t.10(p_node 0) ret 1 func Tree.Search(this v_key) current_node = this cont = 1 ifound = 0 while5_top: if0 cont goto :while5_end if current_node goto :null61 Error("null pointer") null61: t.0 = [current_node] t.0 = [t.0+20] key_aux = call t.0(current_node) t.1 = LtS(v_key key_aux) if0 t.1 goto :if15_else if current_node goto :null62 Error("null pointer") null62: t.2 = [current_node] t.2 = [t.2+32] t.3 = call t.2(current_node) if0 t.3 goto :if16_else if current_node goto :null63 Error("null pointer") null63: t.4 = [current_node] t.4 = [t.4+16] current_node = call t.4(current_node) goto :if16_end if16_else: cont = 0 if16_end: goto :if15_end if15_else: t.5 = LtS(key_aux v_key) if0 t.5 goto :if17_else if current_node goto :null64 Error("null pointer") null64: t.6 = [current_node] t.6 = [t.6+28] t.7 = call t.6(current_node) if0 t.7 goto :if18_else if current_node goto :null65 Error("null pointer") null65: t.8 = [current_node] t.8 = [t.8+12] current_node = call t.8(current_node) goto :if18_end if18_else: cont = 0 if18_end: goto :if17_end if17_else: ifound = 1 cont = 0 if17_end: if15_end: goto :while5_top while5_end: ret ifound func Tree.Print(this) current_node = this t.0 = [this] t.0 = [t.0+76] ntb = call t.0(this current_node) ret 1 func Tree.RecPrint(this node) if node goto :null66 Error("null pointer") null66: t.0 = [node] t.0 = [t.0+32] t.1 = call t.0(node) if0 t.1 goto :if19_else t.2 = [this] t.2 = [t.2+76] if node goto :null67 Error("null pointer") null67: t.3 = [node] t.3 = [t.3+16] t.4 = call t.3(node) ntb = call t.2(this t.4) goto :if19_end if19_else: ntb = 1 if19_end: if node goto :null68 Error("null pointer") null68: t.5 = [node] t.5 = [t.5+20] t.6 = call t.5(node) PrintIntS(t.6) if node goto :null69 Error("null pointer") null69: t.7 = [node] t.7 = [t.7+28] t.8 = call t.7(node) if0 t.8 goto :if20_else t.9 = [this] t.9 = [t.9+76] if node goto :null70 Error("null pointer") null70: t.10 = [node] t.10 = [t.10+12] t.11 = call t.10(node) ntb = call t.9(this t.11) goto :if20_end if20_else: ntb = 1 if20_end: ret 1 func Tree.accept(this v) PrintIntS(333) if v goto :null71 Error("null pointer") null71: t.0 = [v] t.0 = [t.0+0] nti = call t.0(v this) ret 0 func Visitor.visit(this n) if n goto :null72 Error("null pointer") null72: t.0 = [n] t.0 = [t.0+28] t.1 = call t.0(n) if0 t.1 goto :if21_else if n goto :null73 Error("null pointer") null73: t.2 = [n] t.2 = [t.2+12] t.3 = call t.2(n) [this+8] = t.3 t.4 = [this+8] if t.4 goto :null74 Error("null pointer") null74: t.5 = [t.4] t.5 = [t.5+80] nti = call t.5(t.4 this) goto :if21_end if21_else: nti = 0 if21_end: if n goto :null75 Error("null pointer") null75: t.6 = [n] t.6 = [t.6+32] t.7 = call t.6(n) if0 t.7 goto :if22_else if n goto :null76 Error("null pointer") null76: t.8 = [n] t.8 = [t.8+16] t.9 = call t.8(n) [this+4] = t.9 t.10 = [this+4] if t.10 goto :null77 Error("null pointer") null77: t.11 = [t.10] t.11 = [t.11+80] nti = call t.11(t.10 this) goto :if22_end if22_else: nti = 0 if22_end: ret 0 func MyVisitor.visit(this n) if n goto :null78 Error("null pointer") null78: t.0 = [n] t.0 = [t.0+28] t.1 = call t.0(n) if0 t.1 goto :if23_else if n goto :null79 Error("null pointer") null79: t.2 = [n] t.2 = [t.2+12] t.3 = call t.2(n) [this+8] = t.3 t.4 = [this+8] if t.4 goto :null80 Error("null pointer") null80: t.5 = [t.4] t.5 = [t.5+80] nti = call t.5(t.4 this) goto :if23_end if23_else: nti = 0 if23_end: if n goto :null81 Error("null pointer") null81: t.6 = [n] t.6 = [t.6+20] t.7 = call t.6(n) PrintIntS(t.7) if n goto :null82 Error("null pointer") null82: t.8 = [n] t.8 = [t.8+32] t.9 = call t.8(n) if0 t.9 goto :if24_else if n goto :null83 Error("null pointer") null83: t.10 = [n] t.10 = [t.10+16] t.11 = call t.10(n) [this+4] = t.11 t.12 = [this+4] if t.12 goto :null84 Error("null pointer") null84: t.13 = [t.12] t.13 = [t.13+80] nti = call t.13(t.12 this) goto :if24_end if24_else: nti = 0 if24_end: ret 0