procedure Bool.1 (): let Bool.21 : Int1 = false; ret Bool.21; procedure Bool.9 (#Attr.2, #Attr.3): let Bool.22 : Int1 = lowlevel Eq #Attr.2 #Attr.3; ret Bool.22; procedure Bool.9 (#Attr.2, #Attr.3): let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3; ret Bool.23; procedure Inspect.245 (Inspect.246, Inspect.244): let Inspect.317 : Str = "\""; let Inspect.316 : Str = CallByName Inspect.63 Inspect.246 Inspect.317; dec Inspect.317; let Inspect.312 : Str = CallByName Inspect.63 Inspect.316 Inspect.244; let Inspect.313 : Str = "\""; let Inspect.311 : Str = CallByName Inspect.63 Inspect.312 Inspect.313; dec Inspect.313; ret Inspect.311; procedure Inspect.30 (Inspect.147): ret Inspect.147; procedure Inspect.33 (Inspect.152): let Inspect.300 : Str = CallByName Inspect.5 Inspect.152; let Inspect.299 : Str = CallByName Inspect.64 Inspect.300; ret Inspect.299; procedure Inspect.39 (Inspect.296): let Inspect.306 : Str = ""; ret Inspect.306; procedure Inspect.47 (Inspect.243): let Inspect.327 : Str = "\u{feff}"; let Inspect.328 : Str = "\\u(feff)"; let Inspect.324 : Str = CallByName Str.45 Inspect.243 Inspect.327 Inspect.328; dec Inspect.327; dec Inspect.328; let Inspect.325 : Str = "\u{200b}"; let Inspect.326 : Str = "\\u(200b)"; let Inspect.321 : Str = CallByName Str.45 Inspect.324 Inspect.325 Inspect.326; dec Inspect.326; dec Inspect.325; let Inspect.322 : Str = "\u{200c}"; let Inspect.323 : Str = "\\u(200c)"; let Inspect.318 : Str = CallByName Str.45 Inspect.321 Inspect.322 Inspect.323; dec Inspect.322; dec Inspect.323; let Inspect.319 : Str = "\u{200d}"; let Inspect.320 : Str = "\\u(200d)"; let Inspect.244 : Str = CallByName Str.45 Inspect.318 Inspect.319 Inspect.320; dec Inspect.319; dec Inspect.320; let Inspect.308 : Str = CallByName Inspect.30 Inspect.244; ret Inspect.308; procedure Inspect.5 (Inspect.150): let Inspect.307 : Str = CallByName Inspect.47 Inspect.150; let Inspect.304 : {} = Struct {}; let Inspect.303 : Str = CallByName Inspect.39 Inspect.304; let Inspect.302 : Str = CallByName Inspect.245 Inspect.303 Inspect.307; dec Inspect.307; ret Inspect.302; procedure Inspect.63 (Inspect.295, Inspect.291): let Inspect.315 : Str = CallByName Str.3 Inspect.295 Inspect.291; ret Inspect.315; procedure Inspect.64 (Inspect.297): ret Inspect.297; procedure Num.20 (#Attr.2, #Attr.3): let Num.294 : U64 = lowlevel NumSub #Attr.2 #Attr.3; ret Num.294; procedure Num.22 (#Attr.2, #Attr.3): let Num.296 : Int1 = lowlevel NumLt #Attr.2 #Attr.3; ret Num.296; procedure Num.23 (#Attr.2, #Attr.3): let Num.298 : Int1 = lowlevel NumLte #Attr.2 #Attr.3; ret Num.298; procedure Num.25 (#Attr.2, #Attr.3): let Num.295 : Int1 = lowlevel NumGte #Attr.2 #Attr.3; ret Num.295; procedure Num.51 (#Attr.2, #Attr.3): let Num.292 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3; ret Num.292; procedure Num.53 (#Attr.2, #Attr.3): let Num.297 : U64 = lowlevel NumAddSaturated #Attr.2 #Attr.3; ret Num.297; procedure Num.77 (#Attr.2, #Attr.3): let Num.299 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3; ret Num.299; procedure Str.20 (#Attr.2): let Str.458 : Str = lowlevel StrWithCapacity #Attr.2; ret Str.458; procedure Str.3 (#Attr.2, #Attr.3): let Str.390 : Str = lowlevel StrConcat #Attr.2 #Attr.3; ret Str.390; procedure Str.35 (#Attr.2, #Attr.3): let Str.448 : U8 = lowlevel StrGetUnsafe #Attr.2 #Attr.3; ret Str.448; procedure Str.36 (#Attr.2): let Str.410 : U64 = lowlevel StrCountUtf8Bytes #Attr.2; ret Str.410; procedure Str.37 (#Attr.2, #Attr.3, #Attr.4): let Str.408 : Str = lowlevel StrSubstringUnsafe #Attr.2 #Attr.3 #Attr.4; ret Str.408; procedure Str.38 (Str.215, Str.216): let Str.404 : [C , C U64] = CallByName Str.66 Str.215 Str.216; let Str.417 : U8 = 1i64; let Str.418 : U8 = GetTagId Str.404; let Str.419 : Int1 = lowlevel Eq Str.417 Str.418; if Str.419 then let Str.217 : U64 = UnionAtIndex (Id 1) (Index 0) Str.404; let Str.413 : U64 = CallByName Str.36 Str.215; let Str.414 : U64 = CallByName Str.36 Str.216; let Str.412 : U64 = CallByName Num.20 Str.413 Str.414; let Str.218 : U64 = CallByName Num.20 Str.412 Str.217; let Str.411 : U64 = 0i64; inc Str.215; let Str.219 : Str = CallByName Str.37 Str.215 Str.411 Str.217; let Str.409 : U64 = CallByName Str.36 Str.216; let Str.407 : U64 = CallByName Num.51 Str.217 Str.409; let Str.220 : Str = CallByName Str.37 Str.215 Str.407 Str.218; let Str.406 : {Str, Str} = Struct {Str.220, Str.219}; let Str.405 : [C {}, C {Str, Str}] = TagId(1) Str.406; ret Str.405; else dec Str.215; let Str.416 : {} = Struct {}; let Str.415 : [C {}, C {Str, Str}] = TagId(0) Str.416; ret Str.415; procedure Str.45 (Str.194, Str.195, Str.196): inc Str.194; let Str.486 : [C {}, C {Str, Str}] = CallByName Str.38 Str.194 Str.195; let Str.494 : U8 = 1i64; let Str.495 : U8 = GetTagId Str.486; let Str.496 : Int1 = lowlevel Eq Str.494 Str.495; if Str.496 then let Str.493 : {Str, Str} = UnionAtIndex (Id 1) (Index 0) Str.486; let Str.198 : Str = StructAtIndex 0 Str.493; let Str.197 : Str = StructAtIndex 1 Str.493; let Str.491 : U64 = CallByName Str.36 Str.194; dec Str.194; let Str.490 : Str = CallByName Str.20 Str.491; let Str.489 : Str = CallByName Str.3 Str.490 Str.197; dec Str.197; let Str.488 : Str = CallByName Str.3 Str.489 Str.196; let Str.487 : Str = CallByName Str.65 Str.488 Str.198 Str.195 Str.196; ret Str.487; else dec Str.486; ret Str.194; procedure Str.65 (Bool.24, Bool.25, Bool.26, Bool.27): joinpoint Str.394 Str.199 Str.200 Str.201 Str.202: inc Str.200; let Str.395 : [C {}, C {Str, Str}] = CallByName Str.38 Str.200 Str.201; let Str.401 : U8 = 1i64; let Str.402 : U8 = GetTagId Str.395; let Str.403 : Int1 = lowlevel Eq Str.401 Str.402; if Str.403 then dec Str.200; let Str.400 : {Str, Str} = UnionAtIndex (Id 1) (Index 0) Str.395; let Str.204 : Str = StructAtIndex 0 Str.400; let Str.203 : Str = StructAtIndex 1 Str.400; let Str.398 : Str = CallByName Str.3 Str.199 Str.203; dec Str.203; let Str.397 : Str = CallByName Str.3 Str.398 Str.202; jump Str.394 Str.397 Str.204 Str.201 Str.202; else dec Str.395; dec Str.201; dec Str.202; let Str.399 : Str = CallByName Str.3 Str.199 Str.200; dec Str.200; ret Str.399; in inc Bool.26; inc Bool.27; jump Str.394 Bool.24 Bool.25 Bool.26 Bool.27; procedure Str.66 (Str.224, Str.225): let Str.226 : U64 = CallByName Str.36 Str.224; let Str.227 : U64 = CallByName Str.36 Str.225; let Str.228 : U64 = CallByName Num.77 Str.226 Str.227; let Str.421 : U64 = 0i64; let Str.420 : [C , C U64] = CallByName Str.67 Str.224 Str.225 Str.421 Str.228; ret Str.420; procedure Str.67 (Bool.28, Bool.29, Bool.30, Bool.31): joinpoint Str.422 Str.229 Str.230 Str.231 Str.232: let Str.424 : Int1 = CallByName Num.23 Str.231 Str.232; if Str.424 then let Str.428 : Int1 = CallByName Str.71 Str.229 Str.231 Str.230; if Str.428 then dec Str.230; dec Str.229; let Str.429 : [C , C U64] = TagId(1) Str.231; ret Str.429; else let Str.427 : U64 = 1i64; let Str.426 : U64 = CallByName Num.51 Str.231 Str.427; jump Str.422 Str.229 Str.230 Str.426 Str.232; else dec Str.230; dec Str.229; let Str.423 : [C , C U64] = TagId(0) ; ret Str.423; in inc Bool.29; inc Bool.28; jump Str.422 Bool.28 Bool.29 Bool.30 Bool.31; procedure Str.70 (Str.255, Str.256): let Str.453 : Int1 = CallByName Num.22 Str.255 Str.256; if Str.453 then ret Str.255; else ret Str.256; procedure Str.71 (Str.257, Str.258, Str.259): let Str.260 : U64 = CallByName Str.36 Str.257; let Str.261 : U64 = CallByName Str.36 Str.259; let Str.451 : U64 = CallByName Num.53 Str.258 Str.261; let Str.262 : U64 = CallByName Str.70 Str.451 Str.260; let Str.450 : U64 = 0i64; inc Str.257; inc Str.259; let Str.431 : {U64, Str, U64, Str, U64, U64} = Struct {Str.262, Str.257, Str.258, Str.259, Str.450, Str.261}; let Str.430 : Int1 = CallByName Str.72 Str.431; ret Str.430; procedure Str.72 (Str.263): let Str.269 : U64 = StructAtIndex 0 Str.263; let Str.264 : Str = StructAtIndex 1 Str.263; let Str.265 : U64 = StructAtIndex 2 Str.263; let Str.266 : Str = StructAtIndex 3 Str.263; let Str.267 : U64 = StructAtIndex 4 Str.263; let Str.268 : U64 = StructAtIndex 5 Str.263; let Str.270 : Int1 = CallByName Num.25 Str.265 Str.269; if Str.270 then dec Str.266; dec Str.264; let Str.271 : Int1 = CallByName Bool.9 Str.267 Str.268; ret Str.271; else let Str.446 : U8 = CallByName Str.35 Str.264 Str.265; let Str.447 : U8 = CallByName Str.35 Str.266 Str.267; let Str.272 : Int1 = CallByName Bool.9 Str.446 Str.447; let Str.436 : U64 = StructAtIndex 0 Str.263; let Str.437 : Str = StructAtIndex 1 Str.263; let Str.439 : Str = StructAtIndex 3 Str.263; let Str.441 : U64 = StructAtIndex 5 Str.263; let Str.445 : U64 = 1i64; let Str.443 : U64 = CallByName Num.51 Str.267 Str.445; let Str.444 : U64 = 1i64; let Str.442 : U64 = CallByName Num.51 Str.265 Str.444; let Str.435 : {U64, Str, U64, Str, U64, U64} = Struct {Str.436, Str.437, Str.442, Str.439, Str.443, Str.441}; let Str.273 : Int1 = CallByName Str.72 Str.435; if Str.272 then ret Str.273; else let Str.433 : Int1 = CallByName Bool.1; ret Str.433; procedure Test.0 (): let Test.4 : Str = "Hello "; let Test.1 : Str = "world"; inc Test.1; let Test.2 : Str = CallByName Inspect.33 Test.1; dbg Test.2; dec Test.2; let Test.7 : Str = "!"; let Test.5 : Str = CallByName Str.3 Test.1 Test.7; dec Test.7; let Test.3 : Str = CallByName Str.3 Test.4 Test.5; dec Test.5; ret Test.3;