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