procedure List.2 (#Attr.2, #Attr.3): let List.144 : U64 = lowlevel ListLen #Attr.2; let List.141 : Int1 = lowlevel NumLt #Attr.3 List.144; if List.141 then let List.143 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3; let List.142 : [C {}, C I64] = Ok List.143; ret List.142; else let List.140 : {} = Struct {}; let List.139 : [C {}, C I64] = Err List.140; ret List.139; 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; dec Test.6; ret Test.5; procedure Test.0 (): let Test.4 : {} = Struct {}; let Test.3 : [C {}, C I64] = CallByName Test.1 Test.4; ret Test.3;