procedure Bool.2 (): let Bool.24 : Int1 = true; ret Bool.24; procedure Num.19 (#Attr.2, #Attr.3): let Num.257 : I64 = lowlevel NumAdd #Attr.2 #Attr.3; ret Num.257; procedure Num.21 (#Attr.2, #Attr.3): let Num.256 : I64 = lowlevel NumMul #Attr.2 #Attr.3; ret Num.256; procedure Test.1 (Test.2, Test.3): let Test.15 : U8 = GetTagId Test.2; switch Test.15: case 0: let Test.14 : I64 = CallByName Test.7 Test.3 Test.2; ret Test.14; default: let Test.14 : I64 = CallByName Test.8 Test.3 Test.2; ret Test.14; procedure Test.7 (Test.9, #Attr.12): let Test.4 : I64 = UnionAtIndex (Id 0) (Index 0) #Attr.12; let Test.21 : I64 = CallByName Num.19 Test.9 Test.4; ret Test.21; procedure Test.8 (Test.10, #Attr.12): let Test.6 : Int1 = UnionAtIndex (Id 1) (Index 1) #Attr.12; let Test.5 : I64 = UnionAtIndex (Id 1) (Index 0) #Attr.12; if Test.6 then let Test.19 : I64 = CallByName Num.21 Test.10 Test.5; ret Test.19; else ret Test.10; procedure Test.0 (): let Test.4 : I64 = 1i64; let Test.5 : I64 = 2i64; let Test.6 : Int1 = CallByName Bool.2; joinpoint Test.17 Test.12: let Test.13 : I64 = 42i64; let Test.11 : I64 = CallByName Test.1 Test.12 Test.13; ret Test.11; in let Test.20 : Int1 = CallByName Bool.2; if Test.20 then let Test.16 : [C I64, C I64 Int1] = TagId(0) Test.4; jump Test.17 Test.16; else let Test.16 : [C I64, C I64 Int1] = TagId(1) Test.5 Test.6; jump Test.17 Test.16;