procedure Num.22 (#Attr.2, #Attr.3): let Test.19 : I64 = lowlevel NumAdd #Attr.2 #Attr.3; ret Test.19; procedure Num.23 (#Attr.2, #Attr.3): let Test.22 : I64 = lowlevel NumSub #Attr.2 #Attr.3; ret Test.22; procedure Num.25 (#Attr.2, #Attr.3): let Test.26 : Int1 = lowlevel NumLt #Attr.2 #Attr.3; ret Test.26; procedure Test.1 (Test.27, Test.28, Test.29): joinpoint Test.12 Test.2 Test.3 Test.4: let Test.14 : Int1 = CallByName Num.25 Test.3 Test.4; if Test.14 then dec Test.2; let Test.25 : List [] = Array []; let Test.24 : I64 = 0i64; let Test.23 : {I64, List []} = Struct {Test.24, Test.25}; let Test.5 : I64 = StructAtIndex 0 Test.23; let Test.6 : List [] = StructAtIndex 1 Test.23; inc Test.6; dec Test.23; let Test.21 : I64 = 1i64; let Test.20 : I64 = CallByName Num.23 Test.5 Test.21; let Test.16 : List I64 = CallByName Test.1 Test.6 Test.3 Test.20; let Test.18 : I64 = 1i64; let Test.17 : I64 = CallByName Num.22 Test.5 Test.18; jump Test.12 Test.16 Test.17 Test.4; else ret Test.2; in jump Test.12 Test.27 Test.28 Test.29; procedure Test.0 (): let Test.9 : List I64 = Array []; let Test.10 : I64 = 0i64; let Test.11 : I64 = 0i64; let Test.8 : List I64 = CallByName Test.1 Test.9 Test.10 Test.11; ret Test.8;