procedure Bool.11 (#Attr.2, #Attr.3): let Bool.24 : Int1 = lowlevel Eq #Attr.2 #Attr.3; ret Bool.24; procedure Bool.11 (#Attr.2, #Attr.3): let Bool.25 : Int1 = lowlevel Eq #Attr.2 #Attr.3; ret Bool.25; procedure Bool.3 (#Attr.2, #Attr.3): let Bool.23 : Int1 = lowlevel And #Attr.2 #Attr.3; ret Bool.23; procedure Inspect.250 (Inspect.251, Inspect.249): let Inspect.340 : Str = "\""; let Inspect.325 : Str = CallByName Inspect.63 Inspect.251 Inspect.340; dec Inspect.340; let Inspect.321 : Str = CallByName Inspect.252 Inspect.325 Inspect.249; let Inspect.322 : Str = "\""; let Inspect.320 : Str = CallByName Inspect.63 Inspect.321 Inspect.322; dec Inspect.322; ret Inspect.320; procedure Inspect.252 (Inspect.253, Inspect.249): let Inspect.338 : Str = "\u{feff}"; let Inspect.339 : Str = "\\u(feff)"; let Inspect.335 : Str = CallByName Str.45 Inspect.249 Inspect.338 Inspect.339; dec Inspect.338; dec Inspect.339; let Inspect.336 : Str = "\u{200b}"; let Inspect.337 : Str = "\\u(200b)"; let Inspect.332 : Str = CallByName Str.45 Inspect.335 Inspect.336 Inspect.337; dec Inspect.337; dec Inspect.336; let Inspect.333 : Str = "\u{200c}"; let Inspect.334 : Str = "\\u(200c)"; let Inspect.329 : Str = CallByName Str.45 Inspect.332 Inspect.333 Inspect.334; dec Inspect.334; dec Inspect.333; let Inspect.330 : Str = "\u{200d}"; let Inspect.331 : Str = "\\u(200d)"; let Inspect.254 : Str = CallByName Str.45 Inspect.329 Inspect.330 Inspect.331; dec Inspect.330; dec Inspect.331; let Inspect.328 : Str = CallByName Inspect.63 Inspect.253 Inspect.254; dec Inspect.254; ret Inspect.328; procedure Inspect.30 (Inspect.147): ret Inspect.147; procedure Inspect.33 (Inspect.152): let Inspect.308 : Str = CallByName Inspect.5 Inspect.152; let Inspect.307 : Str = CallByName Inspect.64 Inspect.308; ret Inspect.307; procedure Inspect.39 (Inspect.304): let Inspect.314 : Str = ""; ret Inspect.314; procedure Inspect.47 (Inspect.249): let Inspect.316 : Str = CallByName Inspect.30 Inspect.249; ret Inspect.316; procedure Inspect.5 (Inspect.150): let Inspect.315 : Str = CallByName Inspect.47 Inspect.150; let Inspect.312 : {} = Struct {}; let Inspect.311 : Str = CallByName Inspect.39 Inspect.312; let Inspect.310 : Str = CallByName Inspect.250 Inspect.311 Inspect.315; ret Inspect.310; procedure Inspect.63 (Inspect.303, Inspect.299): let Inspect.324 : Str = CallByName Str.3 Inspect.303 Inspect.299; ret Inspect.324; procedure Inspect.64 (Inspect.305): ret Inspect.305; procedure Num.20 (#Attr.2, #Attr.3): let Num.288 : U64 = lowlevel NumSub #Attr.2 #Attr.3; ret Num.288; procedure Num.22 (#Attr.2, #Attr.3): let Num.290 : Int1 = lowlevel NumLt #Attr.2 #Attr.3; ret Num.290; procedure Num.23 (#Attr.2, #Attr.3): let Num.292 : Int1 = lowlevel NumLte #Attr.2 #Attr.3; ret Num.292; procedure Num.25 (#Attr.2, #Attr.3): let Num.289 : Int1 = lowlevel NumGte #Attr.2 #Attr.3; ret Num.289; procedure Num.51 (#Attr.2, #Attr.3): let Num.286 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3; ret Num.286; procedure Num.53 (#Attr.2, #Attr.3): let Num.291 : U64 = lowlevel NumAddSaturated #Attr.2 #Attr.3; ret Num.291; procedure Num.77 (#Attr.2, #Attr.3): let Num.293 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3; ret Num.293; procedure Str.20 (#Attr.2): let Str.315 : Str = lowlevel StrWithCapacity #Attr.2; ret Str.315; procedure Str.3 (#Attr.2, #Attr.3): let Str.248 : Str = lowlevel StrConcat #Attr.2 #Attr.3; ret Str.248; procedure Str.35 (#Attr.2, #Attr.3): let Str.305 : U8 = lowlevel StrGetUnsafe #Attr.2 #Attr.3; ret Str.305; procedure Str.36 (#Attr.2): let Str.268 : U64 = lowlevel StrCountUtf8Bytes #Attr.2; ret Str.268; procedure Str.37 (#Attr.2, #Attr.3, #Attr.4): let Str.266 : Str = lowlevel StrSubstringUnsafe #Attr.2 #Attr.3 #Attr.4; ret Str.266; procedure Str.38 (Str.112, Str.113): let Str.262 : [C , C U64] = CallByName Str.57 Str.112 Str.113; let Str.275 : U8 = 1i64; let Str.276 : U8 = GetTagId Str.262; let Str.277 : Int1 = lowlevel Eq Str.275 Str.276; if Str.277 then let Str.114 : U64 = UnionAtIndex (Id 1) (Index 0) Str.262; let Str.271 : U64 = CallByName Str.36 Str.112; let Str.272 : U64 = CallByName Str.36 Str.113; let Str.270 : U64 = CallByName Num.20 Str.271 Str.272; let Str.115 : U64 = CallByName Num.20 Str.270 Str.114; let Str.269 : U64 = 0i64; inc Str.112; let Str.116 : Str = CallByName Str.37 Str.112 Str.269 Str.114; let Str.267 : U64 = CallByName Str.36 Str.113; let Str.265 : U64 = CallByName Num.51 Str.114 Str.267; let Str.117 : Str = CallByName Str.37 Str.112 Str.265 Str.115; let Str.264 : {Str, Str} = Struct {Str.117, Str.116}; let Str.263 : [C {}, C {Str, Str}] = TagId(1) Str.264; ret Str.263; else dec Str.112; let Str.274 : {} = Struct {}; let Str.273 : [C {}, C {Str, Str}] = TagId(0) Str.274; ret Str.273; procedure Str.45 (Str.91, Str.92, Str.93): inc Str.91; let Str.343 : [C {}, C {Str, Str}] = CallByName Str.38 Str.91 Str.92; let Str.351 : U8 = 1i64; let Str.352 : U8 = GetTagId Str.343; let Str.353 : Int1 = lowlevel Eq Str.351 Str.352; if Str.353 then let Str.350 : {Str, Str} = UnionAtIndex (Id 1) (Index 0) Str.343; let Str.95 : Str = StructAtIndex 0 Str.350; let Str.94 : Str = StructAtIndex 1 Str.350; let Str.348 : U64 = CallByName Str.36 Str.91; dec Str.91; let Str.347 : Str = CallByName Str.20 Str.348; let Str.346 : Str = CallByName Str.3 Str.347 Str.94; dec Str.94; let Str.345 : Str = CallByName Str.3 Str.346 Str.93; let Str.344 : Str = CallByName Str.56 Str.345 Str.95 Str.92 Str.93; ret Str.344; else dec Str.343; ret Str.91; procedure Str.56 (#Derived_gen.6, #Derived_gen.7, #Derived_gen.8, #Derived_gen.9): joinpoint Str.252 Str.96 Str.97 Str.98 Str.99: inc Str.97; let Str.253 : [C {}, C {Str, Str}] = CallByName Str.38 Str.97 Str.98; let Str.259 : U8 = 1i64; let Str.260 : U8 = GetTagId Str.253; let Str.261 : Int1 = lowlevel Eq Str.259 Str.260; if Str.261 then dec Str.97; let Str.258 : {Str, Str} = UnionAtIndex (Id 1) (Index 0) Str.253; let Str.101 : Str = StructAtIndex 0 Str.258; let Str.100 : Str = StructAtIndex 1 Str.258; let Str.256 : Str = CallByName Str.3 Str.96 Str.100; dec Str.100; let Str.255 : Str = CallByName Str.3 Str.256 Str.99; jump Str.252 Str.255 Str.101 Str.98 Str.99; else dec Str.98; dec Str.99; dec Str.253; let Str.257 : Str = CallByName Str.3 Str.96 Str.97; dec Str.97; ret Str.257; in inc #Derived_gen.8; inc #Derived_gen.9; jump Str.252 #Derived_gen.6 #Derived_gen.7 #Derived_gen.8 #Derived_gen.9; procedure Str.57 (Str.121, Str.122): let Str.123 : U64 = CallByName Str.36 Str.121; let Str.124 : U64 = CallByName Str.36 Str.122; let Str.125 : U64 = CallByName Num.77 Str.123 Str.124; let Str.279 : U64 = 0i64; let Str.278 : [C , C U64] = CallByName Str.58 Str.121 Str.122 Str.279 Str.125; ret Str.278; procedure Str.58 (#Derived_gen.2, #Derived_gen.3, #Derived_gen.4, #Derived_gen.5): joinpoint Str.280 Str.126 Str.127 Str.128 Str.129: let Str.282 : Int1 = CallByName Num.23 Str.128 Str.129; if Str.282 then let Str.286 : Int1 = CallByName Str.62 Str.126 Str.128 Str.127; if Str.286 then dec Str.127; dec Str.126; let Str.287 : [C , C U64] = TagId(1) Str.128; ret Str.287; else let Str.285 : U64 = 1i64; let Str.284 : U64 = CallByName Num.51 Str.128 Str.285; jump Str.280 Str.126 Str.127 Str.284 Str.129; else dec Str.127; dec Str.126; let Str.281 : [C , C U64] = TagId(0) ; ret Str.281; in inc #Derived_gen.3; inc #Derived_gen.2; jump Str.280 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5; procedure Str.61 (Str.152, Str.153): let Str.310 : Int1 = CallByName Num.22 Str.152 Str.153; if Str.310 then ret Str.152; else ret Str.153; procedure Str.62 (Str.154, Str.155, Str.156): let Str.157 : U64 = CallByName Str.36 Str.154; let Str.158 : U64 = CallByName Str.36 Str.156; let Str.308 : U64 = CallByName Num.53 Str.155 Str.158; let Str.159 : U64 = CallByName Str.61 Str.308 Str.157; let Str.307 : U64 = 0i64; inc Str.156; inc Str.154; let Str.289 : {U64, Str, U64, Str, U64, U64} = Struct {Str.159, Str.154, Str.155, Str.156, Str.307, Str.158}; let Str.288 : Int1 = CallByName Str.63 Str.289; ret Str.288; procedure Str.63 (Str.160): let Str.166 : U64 = StructAtIndex 0 Str.160; let Str.161 : Str = StructAtIndex 1 Str.160; let Str.162 : U64 = StructAtIndex 2 Str.160; let Str.163 : Str = StructAtIndex 3 Str.160; let Str.164 : U64 = StructAtIndex 4 Str.160; let Str.165 : U64 = StructAtIndex 5 Str.160; let Str.167 : Int1 = CallByName Num.25 Str.162 Str.166; if Str.167 then dec Str.163; dec Str.161; let Str.168 : Int1 = CallByName Bool.11 Str.164 Str.165; ret Str.168; else let Str.303 : U8 = CallByName Str.35 Str.161 Str.162; let Str.304 : U8 = CallByName Str.35 Str.163 Str.164; let Str.169 : Int1 = CallByName Bool.11 Str.303 Str.304; let Str.293 : U64 = StructAtIndex 0 Str.160; let Str.294 : Str = StructAtIndex 1 Str.160; let Str.296 : Str = StructAtIndex 3 Str.160; let Str.298 : U64 = StructAtIndex 5 Str.160; let Str.302 : U64 = 1i64; let Str.300 : U64 = CallByName Num.51 Str.164 Str.302; let Str.301 : U64 = 1i64; let Str.299 : U64 = CallByName Num.51 Str.162 Str.301; let Str.292 : {U64, Str, U64, Str, U64, U64} = Struct {Str.293, Str.294, Str.299, Str.296, Str.300, Str.298}; let Str.170 : Int1 = CallByName Str.63 Str.292; let Str.291 : Int1 = CallByName Bool.3 Str.169 Str.170; ret Str.291; procedure Test.0 (): let Test.5 : Str = "Hello "; let Test.2 : Str = "world"; inc Test.2; let Test.3 : Str = CallByName Inspect.33 Test.2; dbg Test.3; dec Test.3; let Test.8 : Str = "!"; let Test.6 : Str = CallByName Str.3 Test.2 Test.8; dec Test.8; let Test.4 : Str = CallByName Str.3 Test.5 Test.6; dec Test.6; ret Test.4;