procedure List.2 (List.105, List.106): let List.575 : U64 = CallByName List.6 List.105; let List.571 : Int1 = CallByName Num.22 List.106 List.575; if List.571 then let List.573 : I64 = CallByName List.66 List.105 List.106; dec List.105; let List.572 : [C {}, C I64] = TagId(1) List.573; ret List.572; else dec List.105; let List.570 : {} = Struct {}; let List.569 : [C {}, C I64] = TagId(0) List.570; ret List.569; procedure List.6 (#Attr.2): let List.576 : U64 = lowlevel ListLen #Attr.2; ret List.576; procedure List.66 (#Attr.2, #Attr.3): let List.574 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3; ret List.574; procedure Num.22 (#Attr.2, #Attr.3): let Num.291 : Int1 = lowlevel NumLt #Attr.2 #Attr.3; ret Num.291; procedure Test.1 (Test.2): let Test.6 : List I64 = Array [1i64, 2i64, 3i64]; let Test.7 : U64 = 0i64; let Test.5 : [C {}, C I64] = CallByName List.2 Test.6 Test.7; ret Test.5; procedure Test.0 (): let Test.4 : {} = Struct {}; let Test.3 : [C {}, C I64] = CallByName Test.1 Test.4; ret Test.3;