procedure #Derived.0 (#Derived.1): let #Derived.6 : {Str} = Struct {#Derived.1}; let #Derived.5 : {Str} = CallByName Encode.22 #Derived.6; ret #Derived.5; procedure #Derived.2 (#Derived.3, #Derived.4, #Attr.12): let #Derived.1 : Str = StructAtIndex 0 #Attr.12; inc #Derived.1; dec #Attr.12; let #Derived.9 : {Str} = CallByName Json.17 #Derived.1; let #Derived.8 : List U8 = CallByName Encode.23 #Derived.3 #Derived.9 #Derived.4; ret #Derived.8; procedure Encode.22 (Encode.93): ret Encode.93; procedure Encode.22 (Encode.93): ret Encode.93; procedure Encode.23 (Encode.94, Encode.102, Encode.96): let Encode.107 : List U8 = CallByName #Derived.2 Encode.94 Encode.96 Encode.102; ret Encode.107; procedure Encode.23 (Encode.94, Encode.102, Encode.96): let Encode.114 : List U8 = CallByName Json.65 Encode.94 Encode.96 Encode.102; ret Encode.114; procedure Encode.25 (Encode.100, Encode.101): let Encode.104 : List U8 = Array []; let Encode.105 : {Str} = CallByName #Derived.0 Encode.100; let Encode.103 : List U8 = CallByName Encode.23 Encode.104 Encode.105 Encode.101; ret Encode.103; procedure Json.1 (): let Json.102 : {} = Struct {}; ret Json.102; procedure Json.17 (Json.64): let Json.104 : {Str} = Struct {Json.64}; let Json.103 : {Str} = CallByName Encode.22 Json.104; ret Json.103; procedure Json.65 (Json.66, Json.105, #Attr.12): let Json.64 : Str = StructAtIndex 0 #Attr.12; inc Json.64; dec #Attr.12; let Json.114 : I32 = 34i64; let Json.113 : U8 = CallByName Num.123 Json.114; let Json.111 : List U8 = CallByName List.4 Json.66 Json.113; let Json.112 : List U8 = CallByName Str.12 Json.64; let Json.108 : List U8 = CallByName List.8 Json.111 Json.112; let Json.110 : I32 = 34i64; let Json.109 : U8 = CallByName Num.123 Json.110; let Json.107 : List U8 = CallByName List.4 Json.108 Json.109; ret Json.107; procedure List.4 (#Attr.2, #Attr.3): let List.280 : List U8 = lowlevel ListAppend #Attr.2 #Attr.3; ret List.280; procedure List.8 (#Attr.2, #Attr.3): let List.281 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3; ret List.281; procedure Num.123 (#Attr.2): let Num.189 : U8 = lowlevel NumIntCast #Attr.2; ret Num.189; procedure Str.12 (#Attr.2): let Str.162 : List U8 = lowlevel StrToUtf8 #Attr.2; ret Str.162; procedure Str.9 (#Attr.2): let #Attr.3 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8 #Attr.2; let Str.158 : Int1 = StructAtIndex 2 #Attr.3; if Str.158 then let Str.160 : Str = StructAtIndex 1 #Attr.3; inc Str.160; dec #Attr.3; let Str.159 : [C {U64, U8}, C Str] = TagId(1) Str.160; ret Str.159; else let Str.156 : U8 = StructAtIndex 3 #Attr.3; let Str.157 : U64 = StructAtIndex 0 #Attr.3; dec #Attr.3; let Str.155 : {U64, U8} = Struct {Str.157, Str.156}; let Str.154 : [C {U64, U8}, C Str] = TagId(0) Str.155; ret Str.154; procedure Test.0 (): let Test.9 : Str = "abc"; let Test.10 : {} = CallByName Json.1; let Test.8 : List U8 = CallByName Encode.25 Test.9 Test.10; let Test.1 : [C {U64, U8}, C Str] = CallByName Str.9 Test.8; let Test.5 : U8 = 1i64; let Test.6 : U8 = GetTagId Test.1; let Test.7 : Int1 = lowlevel Eq Test.5 Test.6; if Test.7 then let Test.2 : Str = UnionAtIndex (Id 1) (Index 0) Test.1; inc Test.2; dec Test.1; ret Test.2; else dec Test.1; let Test.4 : Str = ""; ret Test.4;