procedure Num.19 (#Attr.2, #Attr.3): let Num.289 : I64 = lowlevel NumAdd #Attr.2 #Attr.3; ret Num.289; 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 (Bool.21, Bool.22, Bool.23): 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 Bool.24 Bool.27: let Bool.28 : [C [, C *self *self] *self, ] = lowlevel PtrCast Bool.27; let Test.43 : [C [, C *self *self] *self, ] = Reuse Bool.28 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 Bool.25 : Int1 = lowlevel RefCountIsUnique Test.29; if Bool.25 then jump Bool.24 Test.29; else inc Test.32; inc Test.33; decref Test.29; let Bool.29 : [, C *self *self] = NullPointer; jump Bool.24 Bool.29; 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 Bool.26 : Int1 = lowlevel RefCountIsUnique Test.30; if Bool.26 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 Bool.21 Bool.22 Bool.23; 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;