procedure Num.19 (#Attr.2, #Attr.3): let Num.292 : I64 = lowlevel NumAdd #Attr.2 #Attr.3; ret Num.292; procedure Test.4 (Test.27): let Test.39 : [C [, C *self *self] *self, ] = TagId(0) ; let Test.40 : I64 = 0i64; let Test.38 : I64 = CallByName Test.5 Test.27 Test.39 Test.40; ret Test.38; procedure Test.5 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2): joinpoint Test.41 Test.29 Test.30 Test.31: let Test.51 : U8 = 0i64; let Test.52 : U8 = GetTagId Test.29; let Test.53 : Int1 = lowlevel Eq Test.51 Test.52; if Test.53 then let Test.32 : [, C *self *self] = UnionAtIndex (Id 0) (Index 0) Test.29; let Test.33 : [, C *self *self] = UnionAtIndex (Id 0) (Index 1) Test.29; joinpoint #Derived_gen.3 #Derived_gen.6: let #Derived_gen.7 : [C [, C *self *self] *self, ] = lowlevel PtrCast #Derived_gen.6; let Test.43 : [C [, C *self *self] *self, ] = Reuse #Derived_gen.7 UpdateModeId { id: 1 } TagId(1) Test.33 Test.30; let Test.45 : I64 = 1i64; let Test.44 : I64 = CallByName Num.19 Test.31 Test.45; jump Test.41 Test.32 Test.43 Test.44; in let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique Test.29; if #Derived_gen.4 then jump #Derived_gen.3 Test.29; else inc Test.32; inc Test.33; decref Test.29; let #Derived_gen.8 : [, C *self *self] = NullPointer; jump #Derived_gen.3 #Derived_gen.8; else let Test.48 : U8 = 1i64; let Test.49 : U8 = GetTagId Test.30; let Test.50 : Int1 = lowlevel Eq Test.48 Test.49; if Test.50 then let Test.35 : [, C *self *self] = UnionAtIndex (Id 1) (Index 0) Test.30; let Test.36 : [C [, C *self *self] *self, ] = UnionAtIndex (Id 1) (Index 1) Test.30; let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.30; if #Derived_gen.5 then free Test.30; jump Test.41 Test.35 Test.36 Test.31; else inc Test.35; inc Test.36; decref Test.30; jump Test.41 Test.35 Test.36 Test.31; else ret Test.31; in jump Test.41 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2; procedure Test.0 (): let Test.64 : [, C *self *self] = TagId(1) ; let Test.65 : [, C *self *self] = TagId(1) ; let Test.62 : [, C *self *self] = TagId(0) Test.64 Test.65; let Test.63 : [, C *self *self] = TagId(1) ; let Test.58 : [, C *self *self] = TagId(0) Test.62 Test.63; let Test.60 : [, C *self *self] = TagId(1) ; let Test.61 : [, C *self *self] = TagId(1) ; let Test.59 : [, C *self *self] = TagId(0) Test.60 Test.61; let Test.54 : [, C *self *self] = TagId(0) Test.58 Test.59; let Test.56 : [, C *self *self] = TagId(1) ; let Test.57 : [, C *self *self] = TagId(1) ; let Test.55 : [, C *self *self] = TagId(0) Test.56 Test.57; let Test.10 : [, C *self *self] = TagId(0) Test.54 Test.55; let Test.37 : I64 = CallByName Test.4 Test.10; ret Test.37;