Merge remote-tracking branch 'origin/main' into walk-with-index

This commit is contained in:
Richard Feldman 2023-08-17 00:08:50 -04:00
commit d63144489a
No known key found for this signature in database
GPG key ID: F1F21AA5B1D9E43B
50 changed files with 2087 additions and 1891 deletions

View file

@ -3,96 +3,96 @@ procedure Bool.11 (#Attr.2, #Attr.3):
ret Bool.24;
procedure List.26 (List.172, List.173, List.174):
let List.549 : [C U64, C U64] = CallByName List.96 List.172 List.173 List.174;
let List.552 : U8 = 1i64;
let List.553 : U8 = GetTagId List.549;
let List.554 : Int1 = lowlevel Eq List.552 List.553;
if List.554 then
let List.175 : U64 = UnionAtIndex (Id 1) (Index 0) List.549;
let List.550 : [C U64, C U64] = CallByName List.96 List.172 List.173 List.174;
let List.553 : U8 = 1i64;
let List.554 : U8 = GetTagId List.550;
let List.555 : Int1 = lowlevel Eq List.553 List.554;
if List.555 then
let List.175 : U64 = UnionAtIndex (Id 1) (Index 0) List.550;
ret List.175;
else
let List.176 : U64 = UnionAtIndex (Id 0) (Index 0) List.549;
let List.176 : U64 = UnionAtIndex (Id 0) (Index 0) List.550;
ret List.176;
procedure List.29 (List.317, List.318):
let List.548 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.548 List.318;
let List.534 : List U8 = CallByName List.43 List.317 List.319;
ret List.534;
procedure List.43 (List.315, List.316):
let List.546 : U64 = CallByName List.6 List.315;
let List.545 : U64 = CallByName Num.77 List.546 List.316;
let List.536 : {U64, U64} = Struct {List.316, List.545};
let List.535 : List U8 = CallByName List.49 List.315 List.536;
let List.549 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.549 List.318;
let List.535 : List U8 = CallByName List.43 List.317 List.319;
ret List.535;
procedure List.49 (List.389, List.390):
let List.543 : U64 = StructAtIndex 0 List.390;
let List.544 : U64 = 0i64;
let List.541 : Int1 = CallByName Bool.11 List.543 List.544;
if List.541 then
dec List.389;
let List.542 : List U8 = Array [];
ret List.542;
procedure List.43 (List.315, List.316):
let List.547 : U64 = CallByName List.6 List.315;
let List.546 : U64 = CallByName Num.77 List.547 List.316;
let List.537 : {U64, U64} = Struct {List.316, List.546};
let List.536 : List U8 = CallByName List.49 List.315 List.537;
ret List.536;
procedure List.49 (List.390, List.391):
let List.544 : U64 = StructAtIndex 0 List.391;
let List.545 : U64 = 0i64;
let List.542 : Int1 = CallByName Bool.11 List.544 List.545;
if List.542 then
dec List.390;
let List.543 : List U8 = Array [];
ret List.543;
else
let List.538 : U64 = StructAtIndex 1 List.390;
let List.539 : U64 = StructAtIndex 0 List.390;
let List.537 : List U8 = CallByName List.72 List.389 List.538 List.539;
ret List.537;
let List.539 : U64 = StructAtIndex 1 List.391;
let List.540 : U64 = StructAtIndex 0 List.391;
let List.538 : List U8 = CallByName List.72 List.390 List.539 List.540;
ret List.538;
procedure List.6 (#Attr.2):
let List.547 : U64 = lowlevel ListLen #Attr.2;
ret List.547;
let List.548 : U64 = lowlevel ListLen #Attr.2;
ret List.548;
procedure List.66 (#Attr.2, #Attr.3):
let List.570 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.570;
let List.571 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.540 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.540;
let List.541 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.541;
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.558 List.452 List.453 List.454 List.455 List.456:
let List.560 : Int1 = CallByName Num.22 List.455 List.456;
if List.560 then
let List.569 : U8 = CallByName List.66 List.452 List.455;
let List.561 : [C U64, C U64] = CallByName Test.4 List.453 List.569;
let List.566 : U8 = 1i64;
let List.567 : U8 = GetTagId List.561;
let List.568 : Int1 = lowlevel Eq List.566 List.567;
if List.568 then
let List.457 : U64 = UnionAtIndex (Id 1) (Index 0) List.561;
let List.564 : U64 = 1i64;
let List.563 : U64 = CallByName Num.19 List.455 List.564;
jump List.558 List.452 List.457 List.454 List.563 List.456;
joinpoint List.559 List.453 List.454 List.455 List.456 List.457:
let List.561 : Int1 = CallByName Num.22 List.456 List.457;
if List.561 then
let List.570 : U8 = CallByName List.66 List.453 List.456;
let List.562 : [C U64, C U64] = CallByName Test.4 List.454 List.570;
let List.567 : U8 = 1i64;
let List.568 : U8 = GetTagId List.562;
let List.569 : Int1 = lowlevel Eq List.567 List.568;
if List.569 then
let List.458 : U64 = UnionAtIndex (Id 1) (Index 0) List.562;
let List.565 : U64 = 1i64;
let List.564 : U64 = CallByName Num.51 List.456 List.565;
jump List.559 List.453 List.458 List.455 List.564 List.457;
else
dec List.452;
let List.458 : U64 = UnionAtIndex (Id 0) (Index 0) List.561;
let List.565 : [C U64, C U64] = TagId(0) List.458;
ret List.565;
dec List.453;
let List.459 : U64 = UnionAtIndex (Id 0) (Index 0) List.562;
let List.566 : [C U64, C U64] = TagId(0) List.459;
ret List.566;
else
dec List.452;
let List.559 : [C U64, C U64] = TagId(1) List.453;
ret List.559;
dec List.453;
let List.560 : [C U64, C U64] = TagId(1) List.454;
ret List.560;
in
jump List.558 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
jump List.559 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.96 (List.449, List.450, List.451):
let List.556 : U64 = 0i64;
let List.557 : U64 = CallByName List.6 List.449;
let List.555 : [C U64, C U64] = CallByName List.80 List.449 List.450 List.451 List.556 List.557;
ret List.555;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.294;
procedure List.96 (List.450, List.451, List.452):
let List.557 : U64 = 0i64;
let List.558 : U64 = CallByName List.6 List.450;
let List.556 : [C U64, C U64] = CallByName List.80 List.450 List.451 List.452 List.557 List.558;
ret List.556;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.295;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.294;
procedure Num.77 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.293;

View file

@ -1,7 +1,7 @@
procedure List.5 (#Attr.2, #Attr.3):
let List.534 : List {} = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
let List.535 : List {} = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
decref #Attr.2;
ret List.534;
ret List.535;
procedure Test.2 (Test.3):
let Test.7 : {} = Struct {};

View file

@ -1,7 +1,7 @@
procedure List.5 (#Attr.2, #Attr.3):
let List.534 : List [] = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
let List.535 : List [] = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
decref #Attr.2;
ret List.534;
ret List.535;
procedure Test.2 (Test.3):
let Test.7 : {} = Struct {};

View file

@ -1,31 +1,31 @@
procedure List.18 (List.145, List.146, List.147):
let List.535 : U64 = 0i64;
let List.536 : U64 = CallByName List.6 List.145;
let List.534 : [<r>C {}, C *self {{}, []}] = CallByName List.86 List.145 List.146 List.147 List.535 List.536;
ret List.534;
let List.536 : U64 = 0i64;
let List.537 : U64 = CallByName List.6 List.145;
let List.535 : [<r>C {}, C *self {{}, []}] = CallByName List.86 List.145 List.146 List.147 List.536 List.537;
ret List.535;
procedure List.6 (#Attr.2):
let List.545 : U64 = lowlevel ListLen #Attr.2;
ret List.545;
let List.546 : U64 = lowlevel ListLen #Attr.2;
ret List.546;
procedure List.66 (#Attr.2, #Attr.3):
let List.544 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.544;
let List.545 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.545;
procedure List.86 (#Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14, #Derived_gen.15):
joinpoint List.537 List.148 List.149 List.150 List.151 List.152:
let List.539 : Int1 = CallByName Num.22 List.151 List.152;
if List.539 then
let List.543 : [] = CallByName List.66 List.148 List.151;
let List.153 : [<r>C {}, C *self {{}, []}] = CallByName Test.29 List.149 List.543 List.150;
let List.542 : U64 = 1i64;
let List.541 : U64 = CallByName Num.51 List.151 List.542;
jump List.537 List.148 List.153 List.150 List.541 List.152;
joinpoint List.538 List.148 List.149 List.150 List.151 List.152:
let List.540 : Int1 = CallByName Num.22 List.151 List.152;
if List.540 then
let List.544 : [] = CallByName List.66 List.148 List.151;
let List.153 : [<r>C {}, C *self {{}, []}] = CallByName Test.29 List.149 List.544 List.150;
let List.543 : U64 = 1i64;
let List.542 : U64 = CallByName Num.51 List.151 List.543;
jump List.538 List.148 List.153 List.150 List.542 List.152;
else
dec List.148;
ret List.149;
in
jump List.537 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
jump List.538 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -3,48 +3,48 @@ procedure Bool.1 ():
ret Bool.24;
procedure List.2 (List.100, List.101):
let List.548 : U64 = CallByName List.6 List.100;
let List.544 : Int1 = CallByName Num.22 List.101 List.548;
if List.544 then
let List.546 : Str = CallByName List.66 List.100 List.101;
inc List.546;
let List.549 : U64 = CallByName List.6 List.100;
let List.545 : Int1 = CallByName Num.22 List.101 List.549;
if List.545 then
let List.547 : Str = CallByName List.66 List.100 List.101;
inc List.547;
dec List.100;
let List.545 : [C {}, C Str] = TagId(1) List.546;
ret List.545;
let List.546 : [C {}, C Str] = TagId(1) List.547;
ret List.546;
else
dec List.100;
let List.543 : {} = Struct {};
let List.542 : [C {}, C Str] = TagId(0) List.543;
ret List.542;
let List.544 : {} = Struct {};
let List.543 : [C {}, C Str] = TagId(0) List.544;
ret List.543;
procedure List.5 (#Attr.2, #Attr.3):
let List.550 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.10 #Attr.3;
let List.551 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.10 #Attr.3;
decref #Attr.2;
ret List.550;
ret List.551;
procedure List.6 (#Attr.2):
let List.549 : U64 = lowlevel ListLen #Attr.2;
ret List.549;
let List.550 : U64 = lowlevel ListLen #Attr.2;
ret List.550;
procedure List.66 (#Attr.2, #Attr.3):
let List.547 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.547;
let List.548 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.548;
procedure List.9 (List.306):
let List.541 : U64 = 0i64;
let List.534 : [C {}, C Str] = CallByName List.2 List.306 List.541;
let List.538 : U8 = 1i64;
let List.539 : U8 = GetTagId List.534;
let List.540 : Int1 = lowlevel Eq List.538 List.539;
if List.540 then
let List.307 : Str = UnionAtIndex (Id 1) (Index 0) List.534;
let List.535 : [C {}, C Str] = TagId(1) List.307;
ret List.535;
else
dec List.534;
let List.537 : {} = Struct {};
let List.536 : [C {}, C Str] = TagId(0) List.537;
let List.542 : U64 = 0i64;
let List.535 : [C {}, C Str] = CallByName List.2 List.306 List.542;
let List.539 : U8 = 1i64;
let List.540 : U8 = GetTagId List.535;
let List.541 : Int1 = lowlevel Eq List.539 List.540;
if List.541 then
let List.307 : Str = UnionAtIndex (Id 1) (Index 0) List.535;
let List.536 : [C {}, C Str] = TagId(1) List.307;
ret List.536;
else
dec List.535;
let List.538 : {} = Struct {};
let List.537 : [C {}, C Str] = TagId(0) List.538;
ret List.537;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,6 +1,6 @@
procedure List.6 (#Attr.2):
let List.534 : U64 = lowlevel ListLen #Attr.2;
ret List.534;
let List.535 : U64 = lowlevel ListLen #Attr.2;
ret List.535;
procedure Test.1 (Test.5):
let Test.2 : I64 = 41i64;

View file

@ -3,33 +3,33 @@ procedure Bool.2 ():
ret Bool.23;
procedure List.18 (List.145, List.146, List.147):
let List.535 : U64 = 0i64;
let List.536 : U64 = CallByName List.6 List.145;
let List.534 : [<rnw><null>, C *self Int1, C *self Int1] = CallByName List.86 List.145 List.146 List.147 List.535 List.536;
ret List.534;
let List.536 : U64 = 0i64;
let List.537 : U64 = CallByName List.6 List.145;
let List.535 : [<rnw><null>, C *self Int1, C *self Int1] = CallByName List.86 List.145 List.146 List.147 List.536 List.537;
ret List.535;
procedure List.6 (#Attr.2):
let List.545 : U64 = lowlevel ListLen #Attr.2;
ret List.545;
let List.546 : U64 = lowlevel ListLen #Attr.2;
ret List.546;
procedure List.66 (#Attr.2, #Attr.3):
let List.544 : Int1 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.544;
let List.545 : Int1 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.545;
procedure List.86 (#Derived_gen.5, #Derived_gen.6, #Derived_gen.7, #Derived_gen.8, #Derived_gen.9):
joinpoint List.537 List.148 List.149 List.150 List.151 List.152:
let List.539 : Int1 = CallByName Num.22 List.151 List.152;
if List.539 then
let List.543 : Int1 = CallByName List.66 List.148 List.151;
let List.153 : [<rnw><null>, C *self Int1, C *self Int1] = CallByName Test.6 List.149 List.543 List.150;
let List.542 : U64 = 1i64;
let List.541 : U64 = CallByName Num.51 List.151 List.542;
jump List.537 List.148 List.153 List.150 List.541 List.152;
joinpoint List.538 List.148 List.149 List.150 List.151 List.152:
let List.540 : Int1 = CallByName Num.22 List.151 List.152;
if List.540 then
let List.544 : Int1 = CallByName List.66 List.148 List.151;
let List.153 : [<rnw><null>, C *self Int1, C *self Int1] = CallByName Test.6 List.149 List.544 List.150;
let List.543 : U64 = 1i64;
let List.542 : U64 = CallByName Num.51 List.151 List.543;
jump List.538 List.148 List.153 List.150 List.542 List.152;
else
dec List.148;
ret List.149;
in
jump List.537 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7 #Derived_gen.8 #Derived_gen.9;
jump List.538 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7 #Derived_gen.8 #Derived_gen.9;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -25,67 +25,67 @@ procedure Dict.4 (Dict.562):
ret Dict.100;
procedure List.11 (List.124, List.125):
let List.535 : List I8 = CallByName List.68 List.125;
let List.534 : List I8 = CallByName List.84 List.124 List.125 List.535;
ret List.534;
let List.536 : List I8 = CallByName List.68 List.125;
let List.535 : List I8 = CallByName List.84 List.124 List.125 List.536;
ret List.535;
procedure List.11 (List.124, List.125):
let List.547 : List U64 = CallByName List.68 List.125;
let List.546 : List U64 = CallByName List.84 List.124 List.125 List.547;
let List.548 : List U64 = CallByName List.68 List.125;
let List.547 : List U64 = CallByName List.84 List.124 List.125 List.548;
ret List.547;
procedure List.68 (#Attr.2):
let List.546 : List I8 = lowlevel ListWithCapacity #Attr.2;
ret List.546;
procedure List.68 (#Attr.2):
let List.545 : List I8 = lowlevel ListWithCapacity #Attr.2;
ret List.545;
procedure List.68 (#Attr.2):
let List.557 : List U64 = lowlevel ListWithCapacity #Attr.2;
ret List.557;
let List.558 : List U64 = lowlevel ListWithCapacity #Attr.2;
ret List.558;
procedure List.71 (#Attr.2, #Attr.3):
let List.542 : List I8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.542;
let List.543 : List I8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.543;
procedure List.71 (#Attr.2, #Attr.3):
let List.554 : List U64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.554;
let List.555 : List U64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.555;
procedure List.84 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2):
joinpoint List.536 List.126 List.127 List.128:
let List.544 : U64 = 0i64;
let List.538 : Int1 = CallByName Num.24 List.127 List.544;
if List.538 then
let List.543 : U64 = 1i64;
let List.540 : U64 = CallByName Num.20 List.127 List.543;
let List.541 : List I8 = CallByName List.71 List.128 List.126;
jump List.536 List.126 List.540 List.541;
joinpoint List.537 List.126 List.127 List.128:
let List.545 : U64 = 0i64;
let List.539 : Int1 = CallByName Num.24 List.127 List.545;
if List.539 then
let List.544 : U64 = 1i64;
let List.541 : U64 = CallByName Num.75 List.127 List.544;
let List.542 : List I8 = CallByName List.71 List.128 List.126;
jump List.537 List.126 List.541 List.542;
else
ret List.128;
in
jump List.536 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2;
jump List.537 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2;
procedure List.84 (#Derived_gen.3, #Derived_gen.4, #Derived_gen.5):
joinpoint List.548 List.126 List.127 List.128:
let List.556 : U64 = 0i64;
let List.550 : Int1 = CallByName Num.24 List.127 List.556;
if List.550 then
let List.555 : U64 = 1i64;
let List.552 : U64 = CallByName Num.20 List.127 List.555;
let List.553 : List U64 = CallByName List.71 List.128 List.126;
jump List.548 List.126 List.552 List.553;
joinpoint List.549 List.126 List.127 List.128:
let List.557 : U64 = 0i64;
let List.551 : Int1 = CallByName Num.24 List.127 List.557;
if List.551 then
let List.556 : U64 = 1i64;
let List.553 : U64 = CallByName Num.75 List.127 List.556;
let List.554 : List U64 = CallByName List.71 List.128 List.126;
jump List.549 List.126 List.553 List.554;
else
ret List.128;
in
jump List.548 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.293;
jump List.549 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.295;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.293;
procedure Test.0 ():
let Test.3 : {} = Struct {};
let Test.2 : {List {[], []}, List U64, List I8, U64} = CallByName Dict.1 Test.3;

View file

@ -3,26 +3,26 @@ procedure Bool.1 ():
ret Bool.23;
procedure List.2 (List.100, List.101):
let List.540 : U64 = CallByName List.6 List.100;
let List.536 : Int1 = CallByName Num.22 List.101 List.540;
if List.536 then
let List.538 : {} = CallByName List.66 List.100 List.101;
let List.541 : U64 = CallByName List.6 List.100;
let List.537 : Int1 = CallByName Num.22 List.101 List.541;
if List.537 then
let List.539 : {} = CallByName List.66 List.100 List.101;
dec List.100;
let List.537 : [C {}, C {}] = TagId(1) List.538;
ret List.537;
let List.538 : [C {}, C {}] = TagId(1) List.539;
ret List.538;
else
dec List.100;
let List.535 : {} = Struct {};
let List.534 : [C {}, C {}] = TagId(0) List.535;
ret List.534;
let List.536 : {} = Struct {};
let List.535 : [C {}, C {}] = TagId(0) List.536;
ret List.535;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.66 (#Attr.2, #Attr.3):
let List.539 : {} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.539;
let List.540 : {} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,16 +1,16 @@
procedure List.4 (List.116, List.117):
let List.537 : U64 = 1i64;
let List.535 : List U8 = CallByName List.70 List.116 List.537;
let List.534 : List U8 = CallByName List.71 List.535 List.117;
ret List.534;
let List.538 : U64 = 1i64;
let List.536 : List U8 = CallByName List.70 List.116 List.538;
let List.535 : List U8 = CallByName List.71 List.536 List.117;
ret List.535;
procedure List.70 (#Attr.2, #Attr.3):
let List.538 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.538;
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
procedure List.71 (#Attr.2, #Attr.3):
let List.536 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.536;
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure Test.23 (Test.24, Test.35, Test.22):
let Test.37 : List U8 = CallByName List.4 Test.24 Test.22;

View file

@ -78,263 +78,267 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.13 (#Attr.2, #Attr.3):
let List.678 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.678;
let List.679 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.679;
procedure List.18 (List.145, List.146, List.147):
let List.564 : U64 = 0i64;
let List.565 : U64 = CallByName List.6 List.145;
let List.563 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.564 List.565;
ret List.563;
let List.565 : U64 = 0i64;
let List.566 : U64 = CallByName List.6 List.145;
let List.564 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.565 List.566;
ret List.564;
procedure List.18 (List.145, List.146, List.147):
let List.624 : U64 = 0i64;
let List.625 : U64 = CallByName List.6 List.145;
let List.623 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.624 List.625;
ret List.623;
let List.625 : U64 = 0i64;
let List.626 : U64 = CallByName List.6 List.145;
let List.624 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.625 List.626;
ret List.624;
procedure List.18 (List.145, List.146, List.147):
let List.636 : U64 = 0i64;
let List.637 : U64 = CallByName List.6 List.145;
let List.635 : List U8 = CallByName List.86 List.145 List.146 List.147 List.636 List.637;
ret List.635;
let List.637 : U64 = 0i64;
let List.638 : U64 = CallByName List.6 List.145;
let List.636 : List U8 = CallByName List.86 List.145 List.146 List.147 List.637 List.638;
ret List.636;
procedure List.26 (List.172, List.173, List.174):
let List.695 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.698 : U8 = 1i64;
let List.699 : U8 = GetTagId List.695;
let List.700 : Int1 = lowlevel Eq List.698 List.699;
if List.700 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.695;
let List.696 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.699 : U8 = 1i64;
let List.700 : U8 = GetTagId List.696;
let List.701 : Int1 = lowlevel Eq List.699 List.700;
if List.701 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.696;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.695;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.696;
ret List.176;
procedure List.31 (#Attr.2, #Attr.3):
let List.660 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.660;
let List.661 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.661;
procedure List.38 (List.311):
let List.668 : U64 = 0i64;
let List.667 : List Str = CallByName List.31 List.311 List.668;
ret List.667;
let List.669 : U64 = 0i64;
let List.668 : List Str = CallByName List.31 List.311 List.669;
ret List.668;
procedure List.4 (List.116, List.117):
let List.619 : U64 = 1i64;
let List.618 : List Str = CallByName List.70 List.116 List.619;
let List.617 : List Str = CallByName List.71 List.618 List.117;
ret List.617;
let List.620 : U64 = 1i64;
let List.619 : List Str = CallByName List.70 List.116 List.620;
let List.618 : List Str = CallByName List.71 List.619 List.117;
ret List.618;
procedure List.4 (List.116, List.117):
let List.622 : U64 = 1i64;
let List.621 : List U8 = CallByName List.70 List.116 List.622;
let List.620 : List U8 = CallByName List.71 List.621 List.117;
ret List.620;
let List.623 : U64 = 1i64;
let List.622 : List U8 = CallByName List.70 List.116 List.623;
let List.621 : List U8 = CallByName List.71 List.622 List.117;
ret List.621;
procedure List.49 (List.389, List.390):
let List.687 : U64 = StructAtIndex 0 List.390;
let List.688 : U64 = 0i64;
let List.685 : Int1 = CallByName Bool.11 List.687 List.688;
if List.685 then
dec List.389;
let List.686 : List U8 = Array [];
ret List.686;
procedure List.49 (List.390, List.391):
let List.688 : U64 = StructAtIndex 0 List.391;
let List.689 : U64 = 0i64;
let List.686 : Int1 = CallByName Bool.11 List.688 List.689;
if List.686 then
dec List.390;
let List.687 : List U8 = Array [];
ret List.687;
else
let List.682 : U64 = StructAtIndex 1 List.390;
let List.683 : U64 = StructAtIndex 0 List.390;
let List.681 : List U8 = CallByName List.72 List.389 List.682 List.683;
ret List.681;
let List.683 : U64 = StructAtIndex 1 List.391;
let List.684 : U64 = StructAtIndex 0 List.391;
let List.682 : List U8 = CallByName List.72 List.390 List.683 List.684;
ret List.682;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.693 List.407:
let List.691 : U64 = 0i64;
let List.690 : {U64, U64} = Struct {List.407, List.691};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.690;
let List.689 : U64 = CallByName Num.20 List.406 List.407;
let List.680 : {U64, U64} = Struct {List.689, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.680;
let List.679 : {List U8, List U8} = Struct {List.408, List.409};
ret List.679;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.694 List.408:
let List.692 : U64 = 0i64;
let List.691 : {U64, U64} = Struct {List.408, List.692};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.691;
let List.690 : U64 = CallByName Num.75 List.407 List.408;
let List.681 : {U64, U64} = Struct {List.690, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.681;
let List.680 : {List U8, List U8} = Struct {List.409, List.410};
ret List.680;
in
let List.694 : Int1 = CallByName Num.24 List.406 List.405;
if List.694 then
jump List.693 List.405;
let List.695 : Int1 = CallByName Num.24 List.407 List.406;
if List.695 then
jump List.694 List.406;
else
jump List.693 List.406;
jump List.694 List.407;
procedure List.6 (#Attr.2):
let List.593 : U64 = lowlevel ListLen #Attr.2;
ret List.593;
procedure List.6 (#Attr.2):
let List.674 : U64 = lowlevel ListLen #Attr.2;
ret List.674;
let List.594 : U64 = lowlevel ListLen #Attr.2;
ret List.594;
procedure List.6 (#Attr.2):
let List.675 : U64 = lowlevel ListLen #Attr.2;
ret List.675;
procedure List.6 (#Attr.2):
let List.677 : U64 = lowlevel ListLen #Attr.2;
ret List.677;
let List.676 : U64 = lowlevel ListLen #Attr.2;
ret List.676;
procedure List.6 (#Attr.2):
let List.678 : U64 = lowlevel ListLen #Attr.2;
ret List.678;
procedure List.66 (#Attr.2, #Attr.3):
let List.573 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.573;
let List.574 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.574;
procedure List.66 (#Attr.2, #Attr.3):
let List.633 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.633;
let List.634 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.634;
procedure List.66 (#Attr.2, #Attr.3):
let List.645 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.645;
let List.646 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.646;
procedure List.68 (#Attr.2):
let List.670 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.670;
let List.671 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.671;
procedure List.68 (#Attr.2):
let List.672 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.672;
let List.673 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.673;
procedure List.70 (#Attr.2, #Attr.3):
let List.599 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.599;
let List.600 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.600;
procedure List.70 (#Attr.2, #Attr.3):
let List.616 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.616;
let List.617 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.617;
procedure List.71 (#Attr.2, #Attr.3):
let List.597 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.597;
let List.598 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.598;
procedure List.71 (#Attr.2, #Attr.3):
let List.614 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.614;
let List.615 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.615;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.684 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.684;
let List.685 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.685;
procedure List.8 (#Attr.2, #Attr.3):
let List.649 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.649;
let List.650 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.650;
procedure List.8 (#Attr.2, #Attr.3):
let List.657 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.657;
let List.658 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.658;
procedure List.80 (#Derived_gen.25, #Derived_gen.26, #Derived_gen.27, #Derived_gen.28, #Derived_gen.29):
joinpoint List.704 List.452 List.453 List.454 List.455 List.456:
let List.706 : Int1 = CallByName Num.22 List.455 List.456;
if List.706 then
let List.715 : U8 = CallByName List.66 List.452 List.455;
let List.707 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.715;
let List.712 : U8 = 1i64;
let List.713 : U8 = GetTagId List.707;
let List.714 : Int1 = lowlevel Eq List.712 List.713;
if List.714 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.707;
let List.710 : U64 = 1i64;
let List.709 : U64 = CallByName Num.19 List.455 List.710;
jump List.704 List.452 List.457 List.454 List.709 List.456;
joinpoint List.705 List.453 List.454 List.455 List.456 List.457:
let List.707 : Int1 = CallByName Num.22 List.456 List.457;
if List.707 then
let List.716 : U8 = CallByName List.66 List.453 List.456;
let List.708 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.716;
let List.713 : U8 = 1i64;
let List.714 : U8 = GetTagId List.708;
let List.715 : Int1 = lowlevel Eq List.713 List.714;
if List.715 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.708;
let List.711 : U64 = 1i64;
let List.710 : U64 = CallByName Num.51 List.456 List.711;
jump List.705 List.453 List.458 List.455 List.710 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.707;
let List.711 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.711;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.708;
let List.712 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.712;
else
dec List.452;
let List.705 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.705;
dec List.453;
let List.706 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.706;
in
jump List.704 #Derived_gen.25 #Derived_gen.26 #Derived_gen.27 #Derived_gen.28 #Derived_gen.29;
jump List.705 #Derived_gen.25 #Derived_gen.26 #Derived_gen.27 #Derived_gen.28 #Derived_gen.29;
procedure List.86 (#Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33, #Derived_gen.34):
joinpoint List.566 List.148 List.149 List.150 List.151 List.152:
let List.568 : Int1 = CallByName Num.22 List.151 List.152;
if List.568 then
let List.572 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.572;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.572 List.150;
let List.571 : U64 = 1i64;
let List.570 : U64 = CallByName Num.51 List.151 List.571;
jump List.566 List.148 List.153 List.150 List.570 List.152;
joinpoint List.567 List.148 List.149 List.150 List.151 List.152:
let List.569 : Int1 = CallByName Num.22 List.151 List.152;
if List.569 then
let List.573 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.573;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.573 List.150;
let List.572 : U64 = 1i64;
let List.571 : U64 = CallByName Num.51 List.151 List.572;
jump List.567 List.148 List.153 List.150 List.571 List.152;
else
dec List.148;
ret List.149;
in
jump List.566 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
jump List.567 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
procedure List.86 (#Derived_gen.44, #Derived_gen.45, #Derived_gen.46, #Derived_gen.47, #Derived_gen.48):
joinpoint List.638 List.148 List.149 List.150 List.151 List.152:
let List.640 : Int1 = CallByName Num.22 List.151 List.152;
if List.640 then
let List.644 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.644;
let List.643 : U64 = 1i64;
let List.642 : U64 = CallByName Num.51 List.151 List.643;
jump List.638 List.148 List.153 List.150 List.642 List.152;
joinpoint List.639 List.148 List.149 List.150 List.151 List.152:
let List.641 : Int1 = CallByName Num.22 List.151 List.152;
if List.641 then
let List.645 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.645;
let List.644 : U64 = 1i64;
let List.643 : U64 = CallByName Num.51 List.151 List.644;
jump List.639 List.148 List.153 List.150 List.643 List.152;
else
dec List.148;
ret List.149;
in
jump List.638 #Derived_gen.44 #Derived_gen.45 #Derived_gen.46 #Derived_gen.47 #Derived_gen.48;
jump List.639 #Derived_gen.44 #Derived_gen.45 #Derived_gen.46 #Derived_gen.47 #Derived_gen.48;
procedure List.86 (#Derived_gen.49, #Derived_gen.50, #Derived_gen.51, #Derived_gen.52, #Derived_gen.53):
joinpoint List.626 List.148 List.149 List.150 List.151 List.152:
let List.628 : Int1 = CallByName Num.22 List.151 List.152;
if List.628 then
let List.632 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.632;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.632 List.150;
let List.631 : U64 = 1i64;
let List.630 : U64 = CallByName Num.51 List.151 List.631;
jump List.626 List.148 List.153 List.150 List.630 List.152;
joinpoint List.627 List.148 List.149 List.150 List.151 List.152:
let List.629 : Int1 = CallByName Num.22 List.151 List.152;
if List.629 then
let List.633 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.633;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.633 List.150;
let List.632 : U64 = 1i64;
let List.631 : U64 = CallByName Num.51 List.151 List.632;
jump List.627 List.148 List.153 List.150 List.631 List.152;
else
dec List.148;
ret List.149;
in
jump List.626 #Derived_gen.49 #Derived_gen.50 #Derived_gen.51 #Derived_gen.52 #Derived_gen.53;
jump List.627 #Derived_gen.49 #Derived_gen.50 #Derived_gen.51 #Derived_gen.52 #Derived_gen.53;
procedure List.96 (List.449, List.450, List.451):
let List.702 : U64 = 0i64;
let List.703 : U64 = CallByName List.6 List.449;
let List.701 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.702 List.703;
ret List.701;
procedure List.96 (List.450, List.451, List.452):
let List.703 : U64 = 0i64;
let List.704 : U64 = CallByName List.6 List.450;
let List.702 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.703 List.704;
ret List.702;
procedure Num.127 (#Attr.2):
let Num.307 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.307;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.321 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.321;
let Num.311 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.311;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.319 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.319;
let Num.308 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.308;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.313 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.313;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.318 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.318;
let Num.319 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.319;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.320 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.320;
let Num.321 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.321;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.315 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.315;
let Num.316 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.316;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.320 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.320;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.312 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -51,233 +51,237 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.13 (#Attr.2, #Attr.3):
let List.618 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.618;
let List.619 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.619;
procedure List.18 (List.145, List.146, List.147):
let List.564 : U64 = 0i64;
let List.565 : U64 = CallByName List.6 List.145;
let List.563 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.564 List.565;
ret List.563;
let List.565 : U64 = 0i64;
let List.566 : U64 = CallByName List.6 List.145;
let List.564 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.565 List.566;
ret List.564;
procedure List.18 (List.145, List.146, List.147):
let List.576 : U64 = 0i64;
let List.577 : U64 = CallByName List.6 List.145;
let List.575 : List U8 = CallByName List.86 List.145 List.146 List.147 List.576 List.577;
ret List.575;
let List.577 : U64 = 0i64;
let List.578 : U64 = CallByName List.6 List.145;
let List.576 : List U8 = CallByName List.86 List.145 List.146 List.147 List.577 List.578;
ret List.576;
procedure List.26 (List.172, List.173, List.174):
let List.635 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.638 : U8 = 1i64;
let List.639 : U8 = GetTagId List.635;
let List.640 : Int1 = lowlevel Eq List.638 List.639;
if List.640 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.635;
let List.636 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.639 : U8 = 1i64;
let List.640 : U8 = GetTagId List.636;
let List.641 : Int1 = lowlevel Eq List.639 List.640;
if List.641 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.636;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.635;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.636;
ret List.176;
procedure List.31 (#Attr.2, #Attr.3):
let List.600 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.600;
let List.601 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.601;
procedure List.38 (List.311):
let List.608 : U64 = 0i64;
let List.607 : List Str = CallByName List.31 List.311 List.608;
ret List.607;
let List.609 : U64 = 0i64;
let List.608 : List Str = CallByName List.31 List.311 List.609;
ret List.608;
procedure List.4 (List.116, List.117):
let List.559 : U64 = 1i64;
let List.558 : List Str = CallByName List.70 List.116 List.559;
let List.557 : List Str = CallByName List.71 List.558 List.117;
ret List.557;
let List.560 : U64 = 1i64;
let List.559 : List Str = CallByName List.70 List.116 List.560;
let List.558 : List Str = CallByName List.71 List.559 List.117;
ret List.558;
procedure List.4 (List.116, List.117):
let List.562 : U64 = 1i64;
let List.561 : List U8 = CallByName List.70 List.116 List.562;
let List.560 : List U8 = CallByName List.71 List.561 List.117;
ret List.560;
let List.563 : U64 = 1i64;
let List.562 : List U8 = CallByName List.70 List.116 List.563;
let List.561 : List U8 = CallByName List.71 List.562 List.117;
ret List.561;
procedure List.49 (List.389, List.390):
let List.627 : U64 = StructAtIndex 0 List.390;
let List.628 : U64 = 0i64;
let List.625 : Int1 = CallByName Bool.11 List.627 List.628;
if List.625 then
dec List.389;
let List.626 : List U8 = Array [];
ret List.626;
procedure List.49 (List.390, List.391):
let List.628 : U64 = StructAtIndex 0 List.391;
let List.629 : U64 = 0i64;
let List.626 : Int1 = CallByName Bool.11 List.628 List.629;
if List.626 then
dec List.390;
let List.627 : List U8 = Array [];
ret List.627;
else
let List.622 : U64 = StructAtIndex 1 List.390;
let List.623 : U64 = StructAtIndex 0 List.390;
let List.621 : List U8 = CallByName List.72 List.389 List.622 List.623;
ret List.621;
let List.623 : U64 = StructAtIndex 1 List.391;
let List.624 : U64 = StructAtIndex 0 List.391;
let List.622 : List U8 = CallByName List.72 List.390 List.623 List.624;
ret List.622;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.633 List.407:
let List.631 : U64 = 0i64;
let List.630 : {U64, U64} = Struct {List.407, List.631};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.630;
let List.629 : U64 = CallByName Num.20 List.406 List.407;
let List.620 : {U64, U64} = Struct {List.629, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.620;
let List.619 : {List U8, List U8} = Struct {List.408, List.409};
ret List.619;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.634 List.408:
let List.632 : U64 = 0i64;
let List.631 : {U64, U64} = Struct {List.408, List.632};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.631;
let List.630 : U64 = CallByName Num.75 List.407 List.408;
let List.621 : {U64, U64} = Struct {List.630, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.621;
let List.620 : {List U8, List U8} = Struct {List.409, List.410};
ret List.620;
in
let List.634 : Int1 = CallByName Num.24 List.406 List.405;
if List.634 then
jump List.633 List.405;
let List.635 : Int1 = CallByName Num.24 List.407 List.406;
if List.635 then
jump List.634 List.406;
else
jump List.633 List.406;
procedure List.6 (#Attr.2):
let List.614 : U64 = lowlevel ListLen #Attr.2;
ret List.614;
jump List.634 List.407;
procedure List.6 (#Attr.2):
let List.615 : U64 = lowlevel ListLen #Attr.2;
ret List.615;
procedure List.6 (#Attr.2):
let List.617 : U64 = lowlevel ListLen #Attr.2;
ret List.617;
let List.616 : U64 = lowlevel ListLen #Attr.2;
ret List.616;
procedure List.6 (#Attr.2):
let List.618 : U64 = lowlevel ListLen #Attr.2;
ret List.618;
procedure List.66 (#Attr.2, #Attr.3):
let List.573 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.573;
let List.574 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.574;
procedure List.66 (#Attr.2, #Attr.3):
let List.585 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.585;
let List.586 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.586;
procedure List.68 (#Attr.2):
let List.610 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.610;
let List.611 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.611;
procedure List.68 (#Attr.2):
let List.612 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.612;
let List.613 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.613;
procedure List.70 (#Attr.2, #Attr.3):
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
let List.540 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.540;
procedure List.70 (#Attr.2, #Attr.3):
let List.556 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.556;
let List.557 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.557;
procedure List.71 (#Attr.2, #Attr.3):
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
let List.538 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.538;
procedure List.71 (#Attr.2, #Attr.3):
let List.554 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.554;
let List.555 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.555;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.624 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.624;
let List.625 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.625;
procedure List.8 (#Attr.2, #Attr.3):
let List.589 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.589;
let List.590 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.590;
procedure List.8 (#Attr.2, #Attr.3):
let List.597 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.597;
let List.598 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.598;
procedure List.80 (#Derived_gen.10, #Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14):
joinpoint List.644 List.452 List.453 List.454 List.455 List.456:
let List.646 : Int1 = CallByName Num.22 List.455 List.456;
if List.646 then
let List.655 : U8 = CallByName List.66 List.452 List.455;
let List.647 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.655;
let List.652 : U8 = 1i64;
let List.653 : U8 = GetTagId List.647;
let List.654 : Int1 = lowlevel Eq List.652 List.653;
if List.654 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.647;
let List.650 : U64 = 1i64;
let List.649 : U64 = CallByName Num.19 List.455 List.650;
jump List.644 List.452 List.457 List.454 List.649 List.456;
joinpoint List.645 List.453 List.454 List.455 List.456 List.457:
let List.647 : Int1 = CallByName Num.22 List.456 List.457;
if List.647 then
let List.656 : U8 = CallByName List.66 List.453 List.456;
let List.648 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.656;
let List.653 : U8 = 1i64;
let List.654 : U8 = GetTagId List.648;
let List.655 : Int1 = lowlevel Eq List.653 List.654;
if List.655 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.648;
let List.651 : U64 = 1i64;
let List.650 : U64 = CallByName Num.51 List.456 List.651;
jump List.645 List.453 List.458 List.455 List.650 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.647;
let List.651 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.651;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.648;
let List.652 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.652;
else
dec List.452;
let List.645 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.645;
dec List.453;
let List.646 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.646;
in
jump List.644 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14;
jump List.645 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14;
procedure List.86 (#Derived_gen.15, #Derived_gen.16, #Derived_gen.17, #Derived_gen.18, #Derived_gen.19):
joinpoint List.566 List.148 List.149 List.150 List.151 List.152:
let List.568 : Int1 = CallByName Num.22 List.151 List.152;
if List.568 then
let List.572 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.572;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.572 List.150;
let List.571 : U64 = 1i64;
let List.570 : U64 = CallByName Num.51 List.151 List.571;
jump List.566 List.148 List.153 List.150 List.570 List.152;
joinpoint List.567 List.148 List.149 List.150 List.151 List.152:
let List.569 : Int1 = CallByName Num.22 List.151 List.152;
if List.569 then
let List.573 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.573;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.573 List.150;
let List.572 : U64 = 1i64;
let List.571 : U64 = CallByName Num.51 List.151 List.572;
jump List.567 List.148 List.153 List.150 List.571 List.152;
else
dec List.148;
ret List.149;
in
jump List.566 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19;
jump List.567 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19;
procedure List.86 (#Derived_gen.31, #Derived_gen.32, #Derived_gen.33, #Derived_gen.34, #Derived_gen.35):
joinpoint List.578 List.148 List.149 List.150 List.151 List.152:
let List.580 : Int1 = CallByName Num.22 List.151 List.152;
if List.580 then
let List.584 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.584;
let List.583 : U64 = 1i64;
let List.582 : U64 = CallByName Num.51 List.151 List.583;
jump List.578 List.148 List.153 List.150 List.582 List.152;
joinpoint List.579 List.148 List.149 List.150 List.151 List.152:
let List.581 : Int1 = CallByName Num.22 List.151 List.152;
if List.581 then
let List.585 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.585;
let List.584 : U64 = 1i64;
let List.583 : U64 = CallByName Num.51 List.151 List.584;
jump List.579 List.148 List.153 List.150 List.583 List.152;
else
dec List.148;
ret List.149;
in
jump List.578 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34 #Derived_gen.35;
jump List.579 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34 #Derived_gen.35;
procedure List.96 (List.449, List.450, List.451):
let List.642 : U64 = 0i64;
let List.643 : U64 = CallByName List.6 List.449;
let List.641 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.642 List.643;
ret List.641;
procedure List.96 (List.450, List.451, List.452):
let List.643 : U64 = 0i64;
let List.644 : U64 = CallByName List.6 List.450;
let List.642 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.643 List.644;
ret List.642;
procedure Num.127 (#Attr.2):
let Num.297 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.297;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.311 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.311;
let Num.301 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.301;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.309 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.309;
let Num.298 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.298;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.303 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.303;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.308 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.308;
let Num.309 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.309;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.310 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.310;
let Num.311 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.311;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.305 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.305;
let Num.306 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.306;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.310 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.310;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.302 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -58,233 +58,237 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.13 (#Attr.2, #Attr.3):
let List.618 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.618;
let List.619 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.619;
procedure List.18 (List.145, List.146, List.147):
let List.564 : U64 = 0i64;
let List.565 : U64 = CallByName List.6 List.145;
let List.563 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.564 List.565;
ret List.563;
let List.565 : U64 = 0i64;
let List.566 : U64 = CallByName List.6 List.145;
let List.564 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.565 List.566;
ret List.564;
procedure List.18 (List.145, List.146, List.147):
let List.576 : U64 = 0i64;
let List.577 : U64 = CallByName List.6 List.145;
let List.575 : List U8 = CallByName List.86 List.145 List.146 List.147 List.576 List.577;
ret List.575;
let List.577 : U64 = 0i64;
let List.578 : U64 = CallByName List.6 List.145;
let List.576 : List U8 = CallByName List.86 List.145 List.146 List.147 List.577 List.578;
ret List.576;
procedure List.26 (List.172, List.173, List.174):
let List.635 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.638 : U8 = 1i64;
let List.639 : U8 = GetTagId List.635;
let List.640 : Int1 = lowlevel Eq List.638 List.639;
if List.640 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.635;
let List.636 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.639 : U8 = 1i64;
let List.640 : U8 = GetTagId List.636;
let List.641 : Int1 = lowlevel Eq List.639 List.640;
if List.641 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.636;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.635;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.636;
ret List.176;
procedure List.31 (#Attr.2, #Attr.3):
let List.600 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.600;
let List.601 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.601;
procedure List.38 (List.311):
let List.608 : U64 = 0i64;
let List.607 : List Str = CallByName List.31 List.311 List.608;
ret List.607;
let List.609 : U64 = 0i64;
let List.608 : List Str = CallByName List.31 List.311 List.609;
ret List.608;
procedure List.4 (List.116, List.117):
let List.559 : U64 = 1i64;
let List.558 : List Str = CallByName List.70 List.116 List.559;
let List.557 : List Str = CallByName List.71 List.558 List.117;
ret List.557;
let List.560 : U64 = 1i64;
let List.559 : List Str = CallByName List.70 List.116 List.560;
let List.558 : List Str = CallByName List.71 List.559 List.117;
ret List.558;
procedure List.4 (List.116, List.117):
let List.562 : U64 = 1i64;
let List.561 : List U8 = CallByName List.70 List.116 List.562;
let List.560 : List U8 = CallByName List.71 List.561 List.117;
ret List.560;
let List.563 : U64 = 1i64;
let List.562 : List U8 = CallByName List.70 List.116 List.563;
let List.561 : List U8 = CallByName List.71 List.562 List.117;
ret List.561;
procedure List.49 (List.389, List.390):
let List.627 : U64 = StructAtIndex 0 List.390;
let List.628 : U64 = 0i64;
let List.625 : Int1 = CallByName Bool.11 List.627 List.628;
if List.625 then
dec List.389;
let List.626 : List U8 = Array [];
ret List.626;
procedure List.49 (List.390, List.391):
let List.628 : U64 = StructAtIndex 0 List.391;
let List.629 : U64 = 0i64;
let List.626 : Int1 = CallByName Bool.11 List.628 List.629;
if List.626 then
dec List.390;
let List.627 : List U8 = Array [];
ret List.627;
else
let List.622 : U64 = StructAtIndex 1 List.390;
let List.623 : U64 = StructAtIndex 0 List.390;
let List.621 : List U8 = CallByName List.72 List.389 List.622 List.623;
ret List.621;
let List.623 : U64 = StructAtIndex 1 List.391;
let List.624 : U64 = StructAtIndex 0 List.391;
let List.622 : List U8 = CallByName List.72 List.390 List.623 List.624;
ret List.622;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.633 List.407:
let List.631 : U64 = 0i64;
let List.630 : {U64, U64} = Struct {List.407, List.631};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.630;
let List.629 : U64 = CallByName Num.20 List.406 List.407;
let List.620 : {U64, U64} = Struct {List.629, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.620;
let List.619 : {List U8, List U8} = Struct {List.408, List.409};
ret List.619;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.634 List.408:
let List.632 : U64 = 0i64;
let List.631 : {U64, U64} = Struct {List.408, List.632};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.631;
let List.630 : U64 = CallByName Num.75 List.407 List.408;
let List.621 : {U64, U64} = Struct {List.630, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.621;
let List.620 : {List U8, List U8} = Struct {List.409, List.410};
ret List.620;
in
let List.634 : Int1 = CallByName Num.24 List.406 List.405;
if List.634 then
jump List.633 List.405;
let List.635 : Int1 = CallByName Num.24 List.407 List.406;
if List.635 then
jump List.634 List.406;
else
jump List.633 List.406;
procedure List.6 (#Attr.2):
let List.614 : U64 = lowlevel ListLen #Attr.2;
ret List.614;
jump List.634 List.407;
procedure List.6 (#Attr.2):
let List.615 : U64 = lowlevel ListLen #Attr.2;
ret List.615;
procedure List.6 (#Attr.2):
let List.617 : U64 = lowlevel ListLen #Attr.2;
ret List.617;
let List.616 : U64 = lowlevel ListLen #Attr.2;
ret List.616;
procedure List.6 (#Attr.2):
let List.618 : U64 = lowlevel ListLen #Attr.2;
ret List.618;
procedure List.66 (#Attr.2, #Attr.3):
let List.573 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.573;
let List.574 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.574;
procedure List.66 (#Attr.2, #Attr.3):
let List.585 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.585;
let List.586 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.586;
procedure List.68 (#Attr.2):
let List.610 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.610;
let List.611 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.611;
procedure List.68 (#Attr.2):
let List.612 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.612;
let List.613 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.613;
procedure List.70 (#Attr.2, #Attr.3):
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
let List.540 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.540;
procedure List.70 (#Attr.2, #Attr.3):
let List.556 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.556;
let List.557 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.557;
procedure List.71 (#Attr.2, #Attr.3):
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
let List.538 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.538;
procedure List.71 (#Attr.2, #Attr.3):
let List.554 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.554;
let List.555 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.555;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.624 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.624;
let List.625 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.625;
procedure List.8 (#Attr.2, #Attr.3):
let List.589 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.589;
let List.590 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.590;
procedure List.8 (#Attr.2, #Attr.3):
let List.597 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.597;
let List.598 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.598;
procedure List.80 (#Derived_gen.14, #Derived_gen.15, #Derived_gen.16, #Derived_gen.17, #Derived_gen.18):
joinpoint List.644 List.452 List.453 List.454 List.455 List.456:
let List.646 : Int1 = CallByName Num.22 List.455 List.456;
if List.646 then
let List.655 : U8 = CallByName List.66 List.452 List.455;
let List.647 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.655;
let List.652 : U8 = 1i64;
let List.653 : U8 = GetTagId List.647;
let List.654 : Int1 = lowlevel Eq List.652 List.653;
if List.654 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.647;
let List.650 : U64 = 1i64;
let List.649 : U64 = CallByName Num.19 List.455 List.650;
jump List.644 List.452 List.457 List.454 List.649 List.456;
joinpoint List.645 List.453 List.454 List.455 List.456 List.457:
let List.647 : Int1 = CallByName Num.22 List.456 List.457;
if List.647 then
let List.656 : U8 = CallByName List.66 List.453 List.456;
let List.648 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.656;
let List.653 : U8 = 1i64;
let List.654 : U8 = GetTagId List.648;
let List.655 : Int1 = lowlevel Eq List.653 List.654;
if List.655 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.648;
let List.651 : U64 = 1i64;
let List.650 : U64 = CallByName Num.51 List.456 List.651;
jump List.645 List.453 List.458 List.455 List.650 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.647;
let List.651 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.651;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.648;
let List.652 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.652;
else
dec List.452;
let List.645 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.645;
dec List.453;
let List.646 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.646;
in
jump List.644 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18;
jump List.645 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18;
procedure List.86 (#Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22, #Derived_gen.23):
joinpoint List.566 List.148 List.149 List.150 List.151 List.152:
let List.568 : Int1 = CallByName Num.22 List.151 List.152;
if List.568 then
let List.572 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.572;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.572 List.150;
let List.571 : U64 = 1i64;
let List.570 : U64 = CallByName Num.51 List.151 List.571;
jump List.566 List.148 List.153 List.150 List.570 List.152;
joinpoint List.567 List.148 List.149 List.150 List.151 List.152:
let List.569 : Int1 = CallByName Num.22 List.151 List.152;
if List.569 then
let List.573 : {Str, Str} = CallByName List.66 List.148 List.151;
inc List.573;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.237 List.149 List.573 List.150;
let List.572 : U64 = 1i64;
let List.571 : U64 = CallByName Num.51 List.151 List.572;
jump List.567 List.148 List.153 List.150 List.571 List.152;
else
dec List.148;
ret List.149;
in
jump List.566 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23;
jump List.567 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23;
procedure List.86 (#Derived_gen.35, #Derived_gen.36, #Derived_gen.37, #Derived_gen.38, #Derived_gen.39):
joinpoint List.578 List.148 List.149 List.150 List.151 List.152:
let List.580 : Int1 = CallByName Num.22 List.151 List.152;
if List.580 then
let List.584 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.584;
let List.583 : U64 = 1i64;
let List.582 : U64 = CallByName Num.51 List.151 List.583;
jump List.578 List.148 List.153 List.150 List.582 List.152;
joinpoint List.579 List.148 List.149 List.150 List.151 List.152:
let List.581 : Int1 = CallByName Num.22 List.151 List.152;
if List.581 then
let List.585 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.585;
let List.584 : U64 = 1i64;
let List.583 : U64 = CallByName Num.51 List.151 List.584;
jump List.579 List.148 List.153 List.150 List.583 List.152;
else
dec List.148;
ret List.149;
in
jump List.578 #Derived_gen.35 #Derived_gen.36 #Derived_gen.37 #Derived_gen.38 #Derived_gen.39;
jump List.579 #Derived_gen.35 #Derived_gen.36 #Derived_gen.37 #Derived_gen.38 #Derived_gen.39;
procedure List.96 (List.449, List.450, List.451):
let List.642 : U64 = 0i64;
let List.643 : U64 = CallByName List.6 List.449;
let List.641 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.642 List.643;
ret List.641;
procedure List.96 (List.450, List.451, List.452):
let List.643 : U64 = 0i64;
let List.644 : U64 = CallByName List.6 List.450;
let List.642 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.643 List.644;
ret List.642;
procedure Num.127 (#Attr.2):
let Num.297 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.297;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.311 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.311;
let Num.301 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.301;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.309 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.309;
let Num.298 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.298;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.303 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.303;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.308 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.308;
let Num.309 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.309;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.310 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.310;
let Num.311 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.311;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.305 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.305;
let Num.306 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.306;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.310 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.310;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.302 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -16,146 +16,146 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.18 (List.145, List.146, List.147):
let List.548 : U64 = 0i64;
let List.549 : U64 = CallByName List.6 List.145;
let List.547 : List U8 = CallByName List.86 List.145 List.146 List.147 List.548 List.549;
ret List.547;
let List.549 : U64 = 0i64;
let List.550 : U64 = CallByName List.6 List.145;
let List.548 : List U8 = CallByName List.86 List.145 List.146 List.147 List.549 List.550;
ret List.548;
procedure List.26 (List.172, List.173, List.174):
let List.574 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.577 : U8 = 1i64;
let List.578 : U8 = GetTagId List.574;
let List.579 : Int1 = lowlevel Eq List.577 List.578;
if List.579 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.574;
let List.575 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.578 : U8 = 1i64;
let List.579 : U8 = GetTagId List.575;
let List.580 : Int1 = lowlevel Eq List.578 List.579;
if List.580 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.575;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.574;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.575;
ret List.176;
procedure List.49 (List.389, List.390):
let List.566 : U64 = StructAtIndex 0 List.390;
let List.567 : U64 = 0i64;
let List.564 : Int1 = CallByName Bool.11 List.566 List.567;
if List.564 then
dec List.389;
let List.565 : List U8 = Array [];
ret List.565;
procedure List.49 (List.390, List.391):
let List.567 : U64 = StructAtIndex 0 List.391;
let List.568 : U64 = 0i64;
let List.565 : Int1 = CallByName Bool.11 List.567 List.568;
if List.565 then
dec List.390;
let List.566 : List U8 = Array [];
ret List.566;
else
let List.561 : U64 = StructAtIndex 1 List.390;
let List.562 : U64 = StructAtIndex 0 List.390;
let List.560 : List U8 = CallByName List.72 List.389 List.561 List.562;
ret List.560;
let List.562 : U64 = StructAtIndex 1 List.391;
let List.563 : U64 = StructAtIndex 0 List.391;
let List.561 : List U8 = CallByName List.72 List.390 List.562 List.563;
ret List.561;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.572 List.407:
let List.570 : U64 = 0i64;
let List.569 : {U64, U64} = Struct {List.407, List.570};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.569;
let List.568 : U64 = CallByName Num.20 List.406 List.407;
let List.559 : {U64, U64} = Struct {List.568, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.559;
let List.558 : {List U8, List U8} = Struct {List.408, List.409};
ret List.558;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.573 List.408:
let List.571 : U64 = 0i64;
let List.570 : {U64, U64} = Struct {List.408, List.571};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.570;
let List.569 : U64 = CallByName Num.75 List.407 List.408;
let List.560 : {U64, U64} = Struct {List.569, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.560;
let List.559 : {List U8, List U8} = Struct {List.409, List.410};
ret List.559;
in
let List.573 : Int1 = CallByName Num.24 List.406 List.405;
if List.573 then
jump List.572 List.405;
let List.574 : Int1 = CallByName Num.24 List.407 List.406;
if List.574 then
jump List.573 List.406;
else
jump List.572 List.406;
jump List.573 List.407;
procedure List.6 (#Attr.2):
let List.546 : U64 = lowlevel ListLen #Attr.2;
ret List.546;
let List.547 : U64 = lowlevel ListLen #Attr.2;
ret List.547;
procedure List.66 (#Attr.2, #Attr.3):
let List.557 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.557;
let List.558 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.558;
procedure List.68 (#Attr.2):
let List.544 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.544;
let List.545 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.545;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.563 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.563;
let List.564 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.564;
procedure List.8 (#Attr.2, #Attr.3):
let List.542 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.542;
let List.543 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.543;
procedure List.80 (#Derived_gen.8, #Derived_gen.9, #Derived_gen.10, #Derived_gen.11, #Derived_gen.12):
joinpoint List.583 List.452 List.453 List.454 List.455 List.456:
let List.585 : Int1 = CallByName Num.22 List.455 List.456;
if List.585 then
let List.594 : U8 = CallByName List.66 List.452 List.455;
let List.586 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.594;
let List.591 : U8 = 1i64;
let List.592 : U8 = GetTagId List.586;
let List.593 : Int1 = lowlevel Eq List.591 List.592;
if List.593 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.586;
let List.589 : U64 = 1i64;
let List.588 : U64 = CallByName Num.19 List.455 List.589;
jump List.583 List.452 List.457 List.454 List.588 List.456;
joinpoint List.584 List.453 List.454 List.455 List.456 List.457:
let List.586 : Int1 = CallByName Num.22 List.456 List.457;
if List.586 then
let List.595 : U8 = CallByName List.66 List.453 List.456;
let List.587 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.595;
let List.592 : U8 = 1i64;
let List.593 : U8 = GetTagId List.587;
let List.594 : Int1 = lowlevel Eq List.592 List.593;
if List.594 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.587;
let List.590 : U64 = 1i64;
let List.589 : U64 = CallByName Num.51 List.456 List.590;
jump List.584 List.453 List.458 List.455 List.589 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.586;
let List.590 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.590;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.587;
let List.591 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.591;
else
dec List.452;
let List.584 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.584;
dec List.453;
let List.585 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.585;
in
jump List.583 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12;
jump List.584 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12;
procedure List.86 (#Derived_gen.3, #Derived_gen.4, #Derived_gen.5, #Derived_gen.6, #Derived_gen.7):
joinpoint List.550 List.148 List.149 List.150 List.151 List.152:
let List.552 : Int1 = CallByName Num.22 List.151 List.152;
if List.552 then
let List.556 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.556;
let List.555 : U64 = 1i64;
let List.554 : U64 = CallByName Num.51 List.151 List.555;
jump List.550 List.148 List.153 List.150 List.554 List.152;
joinpoint List.551 List.148 List.149 List.150 List.151 List.152:
let List.553 : Int1 = CallByName Num.22 List.151 List.152;
if List.553 then
let List.557 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.557;
let List.556 : U64 = 1i64;
let List.555 : U64 = CallByName Num.51 List.151 List.556;
jump List.551 List.148 List.153 List.150 List.555 List.152;
else
dec List.148;
ret List.149;
in
jump List.550 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7;
jump List.551 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7;
procedure List.96 (List.449, List.450, List.451):
let List.581 : U64 = 0i64;
let List.582 : U64 = CallByName List.6 List.449;
let List.580 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.581 List.582;
ret List.580;
procedure List.96 (List.450, List.451, List.452):
let List.582 : U64 = 0i64;
let List.583 : U64 = CallByName List.6 List.450;
let List.581 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.582 List.583;
ret List.581;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.301 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.301;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.299 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.299;
let Num.293 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.293;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.295 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.295;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.298 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.298;
let Num.299 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.299;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.300 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.300;
let Num.301 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.301;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.296 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.296;
let Num.297 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.297;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.300 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.300;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -45,194 +45,198 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.18 (List.145, List.146, List.147):
let List.562 : U64 = 0i64;
let List.563 : U64 = CallByName List.6 List.145;
let List.561 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.562 List.563;
ret List.561;
let List.563 : U64 = 0i64;
let List.564 : U64 = CallByName List.6 List.145;
let List.562 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.563 List.564;
ret List.562;
procedure List.18 (List.145, List.146, List.147):
let List.574 : U64 = 0i64;
let List.575 : U64 = CallByName List.6 List.145;
let List.573 : List U8 = CallByName List.86 List.145 List.146 List.147 List.574 List.575;
ret List.573;
let List.575 : U64 = 0i64;
let List.576 : U64 = CallByName List.6 List.145;
let List.574 : List U8 = CallByName List.86 List.145 List.146 List.147 List.575 List.576;
ret List.574;
procedure List.26 (List.172, List.173, List.174):
let List.615 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.618 : U8 = 1i64;
let List.619 : U8 = GetTagId List.615;
let List.620 : Int1 = lowlevel Eq List.618 List.619;
if List.620 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.615;
let List.616 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.619 : U8 = 1i64;
let List.620 : U8 = GetTagId List.616;
let List.621 : Int1 = lowlevel Eq List.619 List.620;
if List.621 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.616;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.615;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.616;
ret List.176;
procedure List.4 (List.116, List.117):
let List.560 : U64 = 1i64;
let List.559 : List U8 = CallByName List.70 List.116 List.560;
let List.558 : List U8 = CallByName List.71 List.559 List.117;
ret List.558;
let List.561 : U64 = 1i64;
let List.560 : List U8 = CallByName List.70 List.116 List.561;
let List.559 : List U8 = CallByName List.71 List.560 List.117;
ret List.559;
procedure List.49 (List.389, List.390):
let List.607 : U64 = StructAtIndex 0 List.390;
let List.608 : U64 = 0i64;
let List.605 : Int1 = CallByName Bool.11 List.607 List.608;
if List.605 then
dec List.389;
let List.606 : List U8 = Array [];
ret List.606;
procedure List.49 (List.390, List.391):
let List.608 : U64 = StructAtIndex 0 List.391;
let List.609 : U64 = 0i64;
let List.606 : Int1 = CallByName Bool.11 List.608 List.609;
if List.606 then
dec List.390;
let List.607 : List U8 = Array [];
ret List.607;
else
let List.602 : U64 = StructAtIndex 1 List.390;
let List.603 : U64 = StructAtIndex 0 List.390;
let List.601 : List U8 = CallByName List.72 List.389 List.602 List.603;
ret List.601;
let List.603 : U64 = StructAtIndex 1 List.391;
let List.604 : U64 = StructAtIndex 0 List.391;
let List.602 : List U8 = CallByName List.72 List.390 List.603 List.604;
ret List.602;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.613 List.407:
let List.611 : U64 = 0i64;
let List.610 : {U64, U64} = Struct {List.407, List.611};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.610;
let List.609 : U64 = CallByName Num.20 List.406 List.407;
let List.600 : {U64, U64} = Struct {List.609, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.600;
let List.599 : {List U8, List U8} = Struct {List.408, List.409};
ret List.599;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.614 List.408:
let List.612 : U64 = 0i64;
let List.611 : {U64, U64} = Struct {List.408, List.612};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.611;
let List.610 : U64 = CallByName Num.75 List.407 List.408;
let List.601 : {U64, U64} = Struct {List.610, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.601;
let List.600 : {List U8, List U8} = Struct {List.409, List.410};
ret List.600;
in
let List.614 : Int1 = CallByName Num.24 List.406 List.405;
if List.614 then
jump List.613 List.405;
let List.615 : Int1 = CallByName Num.24 List.407 List.406;
if List.615 then
jump List.614 List.406;
else
jump List.613 List.406;
jump List.614 List.407;
procedure List.6 (#Attr.2):
let List.585 : U64 = lowlevel ListLen #Attr.2;
ret List.585;
let List.586 : U64 = lowlevel ListLen #Attr.2;
ret List.586;
procedure List.6 (#Attr.2):
let List.587 : U64 = lowlevel ListLen #Attr.2;
ret List.587;
let List.588 : U64 = lowlevel ListLen #Attr.2;
ret List.588;
procedure List.66 (#Attr.2, #Attr.3):
let List.571 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
let List.572 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.572;
procedure List.66 (#Attr.2, #Attr.3):
let List.583 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.583;
let List.584 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.584;
procedure List.68 (#Attr.2):
let List.598 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.598;
let List.599 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.599;
procedure List.70 (#Attr.2, #Attr.3):
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
let List.540 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.540;
procedure List.71 (#Attr.2, #Attr.3):
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
let List.538 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.538;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.604 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.604;
let List.605 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.605;
procedure List.8 (#Attr.2, #Attr.3):
let List.596 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.596;
let List.597 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.597;
procedure List.80 (#Derived_gen.16, #Derived_gen.17, #Derived_gen.18, #Derived_gen.19, #Derived_gen.20):
joinpoint List.624 List.452 List.453 List.454 List.455 List.456:
let List.626 : Int1 = CallByName Num.22 List.455 List.456;
if List.626 then
let List.635 : U8 = CallByName List.66 List.452 List.455;
let List.627 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.635;
let List.632 : U8 = 1i64;
let List.633 : U8 = GetTagId List.627;
let List.634 : Int1 = lowlevel Eq List.632 List.633;
if List.634 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.627;
let List.630 : U64 = 1i64;
let List.629 : U64 = CallByName Num.19 List.455 List.630;
jump List.624 List.452 List.457 List.454 List.629 List.456;
joinpoint List.625 List.453 List.454 List.455 List.456 List.457:
let List.627 : Int1 = CallByName Num.22 List.456 List.457;
if List.627 then
let List.636 : U8 = CallByName List.66 List.453 List.456;
let List.628 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.636;
let List.633 : U8 = 1i64;
let List.634 : U8 = GetTagId List.628;
let List.635 : Int1 = lowlevel Eq List.633 List.634;
if List.635 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.628;
let List.631 : U64 = 1i64;
let List.630 : U64 = CallByName Num.51 List.456 List.631;
jump List.625 List.453 List.458 List.455 List.630 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.627;
let List.631 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.631;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.628;
let List.632 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.632;
else
dec List.452;
let List.625 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.625;
dec List.453;
let List.626 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.626;
in
jump List.624 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20;
jump List.625 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20;
procedure List.86 (#Derived_gen.21, #Derived_gen.22, #Derived_gen.23, #Derived_gen.24, #Derived_gen.25):
joinpoint List.576 List.148 List.149 List.150 List.151 List.152:
let List.578 : Int1 = CallByName Num.22 List.151 List.152;
if List.578 then
let List.582 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.582;
let List.581 : U64 = 1i64;
let List.580 : U64 = CallByName Num.51 List.151 List.581;
jump List.576 List.148 List.153 List.150 List.580 List.152;
joinpoint List.577 List.148 List.149 List.150 List.151 List.152:
let List.579 : Int1 = CallByName Num.22 List.151 List.152;
if List.579 then
let List.583 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.583;
let List.582 : U64 = 1i64;
let List.581 : U64 = CallByName Num.51 List.151 List.582;
jump List.577 List.148 List.153 List.150 List.581 List.152;
else
dec List.148;
ret List.149;
in
jump List.576 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24 #Derived_gen.25;
jump List.577 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24 #Derived_gen.25;
procedure List.86 (#Derived_gen.29, #Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33):
joinpoint List.564 List.148 List.149 List.150 List.151 List.152:
let List.566 : Int1 = CallByName Num.22 List.151 List.152;
if List.566 then
let List.570 : Str = CallByName List.66 List.148 List.151;
inc List.570;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.570 List.150;
let List.569 : U64 = 1i64;
let List.568 : U64 = CallByName Num.51 List.151 List.569;
jump List.564 List.148 List.153 List.150 List.568 List.152;
joinpoint List.565 List.148 List.149 List.150 List.151 List.152:
let List.567 : Int1 = CallByName Num.22 List.151 List.152;
if List.567 then
let List.571 : Str = CallByName List.66 List.148 List.151;
inc List.571;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.571 List.150;
let List.570 : U64 = 1i64;
let List.569 : U64 = CallByName Num.51 List.151 List.570;
jump List.565 List.148 List.153 List.150 List.569 List.152;
else
dec List.148;
ret List.149;
in
jump List.564 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
jump List.565 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
procedure List.96 (List.449, List.450, List.451):
let List.622 : U64 = 0i64;
let List.623 : U64 = CallByName List.6 List.449;
let List.621 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.622 List.623;
ret List.621;
procedure List.96 (List.450, List.451, List.452):
let List.623 : U64 = 0i64;
let List.624 : U64 = CallByName List.6 List.450;
let List.622 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.623 List.624;
ret List.622;
procedure Num.127 (#Attr.2):
let Num.299 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.299;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.313 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.313;
let Num.303 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.303;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.311 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.311;
let Num.300 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.300;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.305 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.305;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.310 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.310;
let Num.311 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.311;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.312 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.312;
let Num.313 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.313;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.307 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.307;
let Num.308 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.308;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.312 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.312;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.304 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -48,194 +48,198 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.18 (List.145, List.146, List.147):
let List.562 : U64 = 0i64;
let List.563 : U64 = CallByName List.6 List.145;
let List.561 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.562 List.563;
ret List.561;
let List.563 : U64 = 0i64;
let List.564 : U64 = CallByName List.6 List.145;
let List.562 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.563 List.564;
ret List.562;
procedure List.18 (List.145, List.146, List.147):
let List.574 : U64 = 0i64;
let List.575 : U64 = CallByName List.6 List.145;
let List.573 : List U8 = CallByName List.86 List.145 List.146 List.147 List.574 List.575;
ret List.573;
let List.575 : U64 = 0i64;
let List.576 : U64 = CallByName List.6 List.145;
let List.574 : List U8 = CallByName List.86 List.145 List.146 List.147 List.575 List.576;
ret List.574;
procedure List.26 (List.172, List.173, List.174):
let List.615 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.618 : U8 = 1i64;
let List.619 : U8 = GetTagId List.615;
let List.620 : Int1 = lowlevel Eq List.618 List.619;
if List.620 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.615;
let List.616 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.619 : U8 = 1i64;
let List.620 : U8 = GetTagId List.616;
let List.621 : Int1 = lowlevel Eq List.619 List.620;
if List.621 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.616;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.615;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.616;
ret List.176;
procedure List.4 (List.116, List.117):
let List.560 : U64 = 1i64;
let List.559 : List U8 = CallByName List.70 List.116 List.560;
let List.558 : List U8 = CallByName List.71 List.559 List.117;
ret List.558;
let List.561 : U64 = 1i64;
let List.560 : List U8 = CallByName List.70 List.116 List.561;
let List.559 : List U8 = CallByName List.71 List.560 List.117;
ret List.559;
procedure List.49 (List.389, List.390):
let List.607 : U64 = StructAtIndex 0 List.390;
let List.608 : U64 = 0i64;
let List.605 : Int1 = CallByName Bool.11 List.607 List.608;
if List.605 then
dec List.389;
let List.606 : List U8 = Array [];
ret List.606;
procedure List.49 (List.390, List.391):
let List.608 : U64 = StructAtIndex 0 List.391;
let List.609 : U64 = 0i64;
let List.606 : Int1 = CallByName Bool.11 List.608 List.609;
if List.606 then
dec List.390;
let List.607 : List U8 = Array [];
ret List.607;
else
let List.602 : U64 = StructAtIndex 1 List.390;
let List.603 : U64 = StructAtIndex 0 List.390;
let List.601 : List U8 = CallByName List.72 List.389 List.602 List.603;
ret List.601;
let List.603 : U64 = StructAtIndex 1 List.391;
let List.604 : U64 = StructAtIndex 0 List.391;
let List.602 : List U8 = CallByName List.72 List.390 List.603 List.604;
ret List.602;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.613 List.407:
let List.611 : U64 = 0i64;
let List.610 : {U64, U64} = Struct {List.407, List.611};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.610;
let List.609 : U64 = CallByName Num.20 List.406 List.407;
let List.600 : {U64, U64} = Struct {List.609, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.600;
let List.599 : {List U8, List U8} = Struct {List.408, List.409};
ret List.599;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.614 List.408:
let List.612 : U64 = 0i64;
let List.611 : {U64, U64} = Struct {List.408, List.612};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.611;
let List.610 : U64 = CallByName Num.75 List.407 List.408;
let List.601 : {U64, U64} = Struct {List.610, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.601;
let List.600 : {List U8, List U8} = Struct {List.409, List.410};
ret List.600;
in
let List.614 : Int1 = CallByName Num.24 List.406 List.405;
if List.614 then
jump List.613 List.405;
let List.615 : Int1 = CallByName Num.24 List.407 List.406;
if List.615 then
jump List.614 List.406;
else
jump List.613 List.406;
jump List.614 List.407;
procedure List.6 (#Attr.2):
let List.585 : U64 = lowlevel ListLen #Attr.2;
ret List.585;
let List.586 : U64 = lowlevel ListLen #Attr.2;
ret List.586;
procedure List.6 (#Attr.2):
let List.587 : U64 = lowlevel ListLen #Attr.2;
ret List.587;
let List.588 : U64 = lowlevel ListLen #Attr.2;
ret List.588;
procedure List.66 (#Attr.2, #Attr.3):
let List.571 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
let List.572 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.572;
procedure List.66 (#Attr.2, #Attr.3):
let List.583 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.583;
let List.584 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.584;
procedure List.68 (#Attr.2):
let List.598 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.598;
let List.599 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.599;
procedure List.70 (#Attr.2, #Attr.3):
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
let List.540 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.540;
procedure List.71 (#Attr.2, #Attr.3):
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
let List.538 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.538;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.604 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.604;
let List.605 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.605;
procedure List.8 (#Attr.2, #Attr.3):
let List.596 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.596;
let List.597 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.597;
procedure List.80 (#Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14, #Derived_gen.15):
joinpoint List.624 List.452 List.453 List.454 List.455 List.456:
let List.626 : Int1 = CallByName Num.22 List.455 List.456;
if List.626 then
let List.635 : U8 = CallByName List.66 List.452 List.455;
let List.627 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.635;
let List.632 : U8 = 1i64;
let List.633 : U8 = GetTagId List.627;
let List.634 : Int1 = lowlevel Eq List.632 List.633;
if List.634 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.627;
let List.630 : U64 = 1i64;
let List.629 : U64 = CallByName Num.19 List.455 List.630;
jump List.624 List.452 List.457 List.454 List.629 List.456;
joinpoint List.625 List.453 List.454 List.455 List.456 List.457:
let List.627 : Int1 = CallByName Num.22 List.456 List.457;
if List.627 then
let List.636 : U8 = CallByName List.66 List.453 List.456;
let List.628 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.636;
let List.633 : U8 = 1i64;
let List.634 : U8 = GetTagId List.628;
let List.635 : Int1 = lowlevel Eq List.633 List.634;
if List.635 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.628;
let List.631 : U64 = 1i64;
let List.630 : U64 = CallByName Num.51 List.456 List.631;
jump List.625 List.453 List.458 List.455 List.630 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.627;
let List.631 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.631;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.628;
let List.632 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.632;
else
dec List.452;
let List.625 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.625;
dec List.453;
let List.626 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.626;
in
jump List.624 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
jump List.625 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
procedure List.86 (#Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22, #Derived_gen.23):
joinpoint List.564 List.148 List.149 List.150 List.151 List.152:
let List.566 : Int1 = CallByName Num.22 List.151 List.152;
if List.566 then
let List.570 : Str = CallByName List.66 List.148 List.151;
inc List.570;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.570 List.150;
let List.569 : U64 = 1i64;
let List.568 : U64 = CallByName Num.51 List.151 List.569;
jump List.564 List.148 List.153 List.150 List.568 List.152;
joinpoint List.565 List.148 List.149 List.150 List.151 List.152:
let List.567 : Int1 = CallByName Num.22 List.151 List.152;
if List.567 then
let List.571 : Str = CallByName List.66 List.148 List.151;
inc List.571;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.571 List.150;
let List.570 : U64 = 1i64;
let List.569 : U64 = CallByName Num.51 List.151 List.570;
jump List.565 List.148 List.153 List.150 List.569 List.152;
else
dec List.148;
ret List.149;
in
jump List.564 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23;
jump List.565 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23;
procedure List.86 (#Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33, #Derived_gen.34):
joinpoint List.576 List.148 List.149 List.150 List.151 List.152:
let List.578 : Int1 = CallByName Num.22 List.151 List.152;
if List.578 then
let List.582 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.582;
let List.581 : U64 = 1i64;
let List.580 : U64 = CallByName Num.51 List.151 List.581;
jump List.576 List.148 List.153 List.150 List.580 List.152;
joinpoint List.577 List.148 List.149 List.150 List.151 List.152:
let List.579 : Int1 = CallByName Num.22 List.151 List.152;
if List.579 then
let List.583 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.583;
let List.582 : U64 = 1i64;
let List.581 : U64 = CallByName Num.51 List.151 List.582;
jump List.577 List.148 List.153 List.150 List.581 List.152;
else
dec List.148;
ret List.149;
in
jump List.576 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
jump List.577 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
procedure List.96 (List.449, List.450, List.451):
let List.622 : U64 = 0i64;
let List.623 : U64 = CallByName List.6 List.449;
let List.621 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.622 List.623;
ret List.621;
procedure List.96 (List.450, List.451, List.452):
let List.623 : U64 = 0i64;
let List.624 : U64 = CallByName List.6 List.450;
let List.622 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.623 List.624;
ret List.622;
procedure Num.127 (#Attr.2):
let Num.299 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.299;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.313 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.313;
let Num.303 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.303;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.311 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.311;
let Num.300 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.300;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.305 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.305;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.310 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.310;
let Num.311 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.311;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.312 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.312;
let Num.313 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.313;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.307 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.307;
let Num.308 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.308;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.312 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.312;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.304 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -1,6 +1,6 @@
procedure List.6 (#Attr.2):
let List.534 : U64 = lowlevel ListLen #Attr.2;
ret List.534;
let List.535 : U64 = lowlevel ListLen #Attr.2;
ret List.535;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;

View file

@ -7,41 +7,41 @@ procedure Bool.2 ():
ret Bool.23;
procedure List.2 (List.100, List.101):
let List.548 : U64 = CallByName List.6 List.100;
let List.544 : Int1 = CallByName Num.22 List.101 List.548;
if List.544 then
let List.546 : I64 = CallByName List.66 List.100 List.101;
let List.549 : U64 = CallByName List.6 List.100;
let List.545 : Int1 = CallByName Num.22 List.101 List.549;
if List.545 then
let List.547 : I64 = CallByName List.66 List.100 List.101;
dec List.100;
let List.545 : [C {}, C I64] = TagId(1) List.546;
ret List.545;
let List.546 : [C {}, C I64] = TagId(1) List.547;
ret List.546;
else
dec List.100;
let List.543 : {} = Struct {};
let List.542 : [C {}, C I64] = TagId(0) List.543;
ret List.542;
let List.544 : {} = Struct {};
let List.543 : [C {}, C I64] = TagId(0) List.544;
ret List.543;
procedure List.6 (#Attr.2):
let List.549 : U64 = lowlevel ListLen #Attr.2;
ret List.549;
let List.550 : U64 = lowlevel ListLen #Attr.2;
ret List.550;
procedure List.66 (#Attr.2, #Attr.3):
let List.547 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.547;
let List.548 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.548;
procedure List.9 (List.306):
let List.541 : U64 = 0i64;
let List.534 : [C {}, C I64] = CallByName List.2 List.306 List.541;
let List.538 : U8 = 1i64;
let List.539 : U8 = GetTagId List.534;
let List.540 : Int1 = lowlevel Eq List.538 List.539;
if List.540 then
let List.307 : I64 = UnionAtIndex (Id 1) (Index 0) List.534;
let List.535 : [C Int1, C I64] = TagId(1) List.307;
ret List.535;
else
let List.537 : Int1 = true;
let List.536 : [C Int1, C I64] = TagId(0) List.537;
let List.542 : U64 = 0i64;
let List.535 : [C {}, C I64] = CallByName List.2 List.306 List.542;
let List.539 : U8 = 1i64;
let List.540 : U8 = GetTagId List.535;
let List.541 : Int1 = lowlevel Eq List.539 List.540;
if List.541 then
let List.307 : I64 = UnionAtIndex (Id 1) (Index 0) List.535;
let List.536 : [C Int1, C I64] = TagId(1) List.307;
ret List.536;
else
let List.538 : Int1 = true;
let List.537 : [C Int1, C I64] = TagId(0) List.538;
ret List.537;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -65,143 +65,143 @@ procedure Decode.27 (Decode.107, Decode.108):
ret Decode.123;
procedure List.1 (List.99):
let List.601 : U64 = CallByName List.6 List.99;
let List.602 : U64 = CallByName List.6 List.99;
dec List.99;
let List.602 : U64 = 0i64;
let List.600 : Int1 = CallByName Bool.11 List.601 List.602;
ret List.600;
let List.603 : U64 = 0i64;
let List.601 : Int1 = CallByName Bool.11 List.602 List.603;
ret List.601;
procedure List.2 (List.100, List.101):
let List.584 : U64 = CallByName List.6 List.100;
let List.581 : Int1 = CallByName Num.22 List.101 List.584;
if List.581 then
let List.583 : U8 = CallByName List.66 List.100 List.101;
let List.585 : U64 = CallByName List.6 List.100;
let List.582 : Int1 = CallByName Num.22 List.101 List.585;
if List.582 then
let List.584 : U8 = CallByName List.66 List.100 List.101;
dec List.100;
let List.582 : [C {}, C U8] = TagId(1) List.583;
ret List.582;
let List.583 : [C {}, C U8] = TagId(1) List.584;
ret List.583;
else
dec List.100;
let List.580 : {} = Struct {};
let List.579 : [C {}, C U8] = TagId(0) List.580;
ret List.579;
let List.581 : {} = Struct {};
let List.580 : [C {}, C U8] = TagId(0) List.581;
ret List.580;
procedure List.26 (List.172, List.173, List.174):
let List.603 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.96 List.172 List.173 List.174;
let List.606 : U8 = 1i64;
let List.607 : U8 = GetTagId List.603;
let List.608 : Int1 = lowlevel Eq List.606 List.607;
if List.608 then
let List.175 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.603;
let List.604 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.96 List.172 List.173 List.174;
let List.607 : U8 = 1i64;
let List.608 : U8 = GetTagId List.604;
let List.609 : Int1 = lowlevel Eq List.607 List.608;
if List.609 then
let List.175 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.604;
ret List.175;
else
let List.176 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.603;
let List.176 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.604;
ret List.176;
procedure List.29 (List.317, List.318):
let List.558 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.558 List.318;
let List.557 : List U8 = CallByName List.43 List.317 List.319;
ret List.557;
let List.559 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.559 List.318;
let List.558 : List U8 = CallByName List.43 List.317 List.319;
ret List.558;
procedure List.31 (#Attr.2, #Attr.3):
let List.571 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.571;
let List.572 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.572;
procedure List.38 (List.311):
let List.570 : U64 = 0i64;
let List.569 : List U8 = CallByName List.31 List.311 List.570;
ret List.569;
let List.571 : U64 = 0i64;
let List.570 : List U8 = CallByName List.31 List.311 List.571;
ret List.570;
procedure List.4 (List.116, List.117):
let List.568 : U64 = 1i64;
let List.567 : List U8 = CallByName List.70 List.116 List.568;
let List.566 : List U8 = CallByName List.71 List.567 List.117;
ret List.566;
let List.569 : U64 = 1i64;
let List.568 : List U8 = CallByName List.70 List.116 List.569;
let List.567 : List U8 = CallByName List.71 List.568 List.117;
ret List.567;
procedure List.43 (List.315, List.316):
let List.550 : U64 = CallByName List.6 List.315;
let List.549 : U64 = CallByName Num.77 List.550 List.316;
let List.540 : {U64, U64} = Struct {List.316, List.549};
let List.539 : List U8 = CallByName List.49 List.315 List.540;
ret List.539;
let List.551 : U64 = CallByName List.6 List.315;
let List.550 : U64 = CallByName Num.77 List.551 List.316;
let List.541 : {U64, U64} = Struct {List.316, List.550};
let List.540 : List U8 = CallByName List.49 List.315 List.541;
ret List.540;
procedure List.49 (List.389, List.390):
let List.597 : U64 = StructAtIndex 0 List.390;
let List.598 : U64 = 0i64;
let List.595 : Int1 = CallByName Bool.11 List.597 List.598;
if List.595 then
dec List.389;
let List.596 : List U8 = Array [];
ret List.596;
procedure List.49 (List.390, List.391):
let List.598 : U64 = StructAtIndex 0 List.391;
let List.599 : U64 = 0i64;
let List.596 : Int1 = CallByName Bool.11 List.598 List.599;
if List.596 then
dec List.390;
let List.597 : List U8 = Array [];
ret List.597;
else
let List.593 : U64 = StructAtIndex 1 List.390;
let List.594 : U64 = StructAtIndex 0 List.390;
let List.592 : List U8 = CallByName List.72 List.389 List.593 List.594;
ret List.592;
let List.594 : U64 = StructAtIndex 1 List.391;
let List.595 : U64 = StructAtIndex 0 List.391;
let List.593 : List U8 = CallByName List.72 List.390 List.594 List.595;
ret List.593;
procedure List.6 (#Attr.2):
let List.624 : U64 = lowlevel ListLen #Attr.2;
ret List.624;
let List.625 : U64 = lowlevel ListLen #Attr.2;
ret List.625;
procedure List.66 (#Attr.2, #Attr.3):
let List.577 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.577;
let List.578 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.578;
procedure List.70 (#Attr.2, #Attr.3):
let List.565 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.565;
let List.566 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.566;
procedure List.71 (#Attr.2, #Attr.3):
let List.563 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.563;
let List.564 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.564;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.544 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.544;
let List.545 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.545;
procedure List.8 (#Attr.2, #Attr.3):
let List.560 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.560;
let List.561 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.561;
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.612 List.452 List.453 List.454 List.455 List.456:
let List.614 : Int1 = CallByName Num.22 List.455 List.456;
if List.614 then
let List.623 : U8 = CallByName List.66 List.452 List.455;
let List.615 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName TotallyNotJson.62 List.453 List.623;
let List.620 : U8 = 1i64;
let List.621 : U8 = GetTagId List.615;
let List.622 : Int1 = lowlevel Eq List.620 List.621;
if List.622 then
let List.457 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.615;
let List.618 : U64 = 1i64;
let List.617 : U64 = CallByName Num.19 List.455 List.618;
jump List.612 List.452 List.457 List.454 List.617 List.456;
joinpoint List.613 List.453 List.454 List.455 List.456 List.457:
let List.615 : Int1 = CallByName Num.22 List.456 List.457;
if List.615 then
let List.624 : U8 = CallByName List.66 List.453 List.456;
let List.616 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName TotallyNotJson.62 List.454 List.624;
let List.621 : U8 = 1i64;
let List.622 : U8 = GetTagId List.616;
let List.623 : Int1 = lowlevel Eq List.621 List.622;
if List.623 then
let List.458 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.616;
let List.619 : U64 = 1i64;
let List.618 : U64 = CallByName Num.51 List.456 List.619;
jump List.613 List.453 List.458 List.455 List.618 List.457;
else
dec List.452;
let List.458 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.615;
let List.619 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) List.458;
ret List.619;
dec List.453;
let List.459 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.616;
let List.620 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) List.459;
ret List.620;
else
dec List.452;
let List.613 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) List.453;
ret List.613;
dec List.453;
let List.614 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) List.454;
ret List.614;
in
jump List.612 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
jump List.613 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.96 (List.449, List.450, List.451):
let List.610 : U64 = 0i64;
let List.611 : U64 = CallByName List.6 List.449;
let List.609 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.80 List.449 List.450 List.451 List.610 List.611;
ret List.609;
procedure List.96 (List.450, List.451, List.452):
let List.611 : U64 = 0i64;
let List.612 : U64 = CallByName List.6 List.450;
let List.610 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.80 List.450 List.451 List.452 List.611 List.612;
ret List.610;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.295 : U8 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.295;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.329 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.329;
let Num.304 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.304;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.307 : U8 = lowlevel NumSub #Attr.2 #Attr.3;
@ -219,6 +219,10 @@ procedure Num.25 (#Attr.2, #Attr.3):
let Num.319 : Int1 = lowlevel NumGte #Attr.2 #Attr.3;
ret Num.319;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.329 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.329;
procedure Num.71 (#Attr.2, #Attr.3):
let Num.292 : U8 = lowlevel NumBitwiseOr #Attr.2 #Attr.3;
ret Num.292;

View file

@ -6,84 +6,80 @@ procedure Bool.2 ():
let Bool.24 : Int1 = true;
ret Bool.24;
procedure List.207 (List.536, List.208, List.206):
let List.566 : Int1 = CallByName Test.1 List.208;
if List.566 then
let List.568 : {} = Struct {};
let List.567 : [C {}, C {}] = TagId(1) List.568;
ret List.567;
procedure List.207 (List.537, List.208, List.206):
let List.567 : Int1 = CallByName Test.1 List.208;
if List.567 then
let List.569 : {} = Struct {};
let List.568 : [C {}, C {}] = TagId(1) List.569;
ret List.568;
else
let List.565 : {} = Struct {};
let List.564 : [C {}, C {}] = TagId(0) List.565;
ret List.564;
let List.566 : {} = Struct {};
let List.565 : [C {}, C {}] = TagId(0) List.566;
ret List.565;
procedure List.23 (#Attr.2, #Attr.3, #Attr.4):
let List.569 : List {[<r>C I64, C List *self], [<r>C I64, C List *self]} = lowlevel ListMap2 { xs: `#Attr.#arg1`, ys: `#Attr.#arg2` } #Attr.2 #Attr.3 Test.15 #Attr.4;
let List.570 : List {[<r>C I64, C List *self], [<r>C I64, C List *self]} = lowlevel ListMap2 { xs: `#Attr.#arg1`, ys: `#Attr.#arg2` } #Attr.2 #Attr.3 Test.15 #Attr.4;
decref #Attr.3;
decref #Attr.2;
ret List.569;
ret List.570;
procedure List.56 (List.205, List.206):
let List.545 : {} = Struct {};
let List.537 : [C {}, C {}] = CallByName List.96 List.205 List.545 List.206;
let List.542 : U8 = 1i64;
let List.543 : U8 = GetTagId List.537;
let List.544 : Int1 = lowlevel Eq List.542 List.543;
if List.544 then
let List.538 : Int1 = CallByName Bool.2;
ret List.538;
else
let List.539 : Int1 = CallByName Bool.1;
let List.546 : {} = Struct {};
let List.538 : [C {}, C {}] = CallByName List.96 List.205 List.546 List.206;
let List.543 : U8 = 1i64;
let List.544 : U8 = GetTagId List.538;
let List.545 : Int1 = lowlevel Eq List.543 List.544;
if List.545 then
let List.539 : Int1 = CallByName Bool.2;
ret List.539;
else
let List.540 : Int1 = CallByName Bool.1;
ret List.540;
procedure List.6 (#Attr.2):
let List.535 : U64 = lowlevel ListLen #Attr.2;
ret List.535;
let List.536 : U64 = lowlevel ListLen #Attr.2;
ret List.536;
procedure List.6 (#Attr.2):
let List.563 : U64 = lowlevel ListLen #Attr.2;
ret List.563;
let List.564 : U64 = lowlevel ListLen #Attr.2;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.562 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.562;
let List.563 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.80 (#Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4, #Derived_gen.5):
joinpoint List.550 List.452 List.453 List.454 List.455 List.456:
let List.552 : Int1 = CallByName Num.22 List.455 List.456;
if List.552 then
let List.561 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = CallByName List.66 List.452 List.455;
inc List.561;
let List.553 : [C {}, C {}] = CallByName List.207 List.453 List.561 List.454;
let List.558 : U8 = 1i64;
let List.559 : U8 = GetTagId List.553;
let List.560 : Int1 = lowlevel Eq List.558 List.559;
if List.560 then
let List.457 : {} = UnionAtIndex (Id 1) (Index 0) List.553;
let List.556 : U64 = 1i64;
let List.555 : U64 = CallByName Num.19 List.455 List.556;
jump List.550 List.452 List.457 List.454 List.555 List.456;
joinpoint List.551 List.453 List.454 List.455 List.456 List.457:
let List.553 : Int1 = CallByName Num.22 List.456 List.457;
if List.553 then
let List.562 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = CallByName List.66 List.453 List.456;
inc List.562;
let List.554 : [C {}, C {}] = CallByName List.207 List.454 List.562 List.455;
let List.559 : U8 = 1i64;
let List.560 : U8 = GetTagId List.554;
let List.561 : Int1 = lowlevel Eq List.559 List.560;
if List.561 then
let List.458 : {} = UnionAtIndex (Id 1) (Index 0) List.554;
let List.557 : U64 = 1i64;
let List.556 : U64 = CallByName Num.51 List.456 List.557;
jump List.551 List.453 List.458 List.455 List.556 List.457;
else
dec List.452;
let List.458 : {} = UnionAtIndex (Id 0) (Index 0) List.553;
let List.557 : [C {}, C {}] = TagId(0) List.458;
ret List.557;
dec List.453;
let List.459 : {} = UnionAtIndex (Id 0) (Index 0) List.554;
let List.558 : [C {}, C {}] = TagId(0) List.459;
ret List.558;
else
dec List.452;
let List.551 : [C {}, C {}] = TagId(1) List.453;
ret List.551;
dec List.453;
let List.552 : [C {}, C {}] = TagId(1) List.454;
ret List.552;
in
jump List.550 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5;
jump List.551 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5;
procedure List.96 (List.449, List.450, List.451):
let List.548 : U64 = 0i64;
let List.549 : U64 = CallByName List.6 List.449;
let List.547 : [C {}, C {}] = CallByName List.80 List.449 List.450 List.451 List.548 List.549;
ret List.547;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.294;
procedure List.96 (List.450, List.451, List.452):
let List.549 : U64 = 0i64;
let List.550 : U64 = CallByName List.6 List.450;
let List.548 : [C {}, C {}] = CallByName List.80 List.450 List.451 List.452 List.549 List.550;
ret List.548;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
@ -93,6 +89,10 @@ procedure Num.22 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.295;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.294;
procedure Test.1 (#Derived_gen.0):
joinpoint Test.26 Test.6:
let Test.65 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;

View file

@ -39,143 +39,143 @@ procedure Decode.26 (Decode.105, Decode.106):
ret Decode.122;
procedure List.1 (List.99):
let List.597 : U64 = CallByName List.6 List.99;
let List.598 : U64 = CallByName List.6 List.99;
dec List.99;
let List.598 : U64 = 0i64;
let List.596 : Int1 = CallByName Bool.11 List.597 List.598;
ret List.596;
let List.599 : U64 = 0i64;
let List.597 : Int1 = CallByName Bool.11 List.598 List.599;
ret List.597;
procedure List.2 (List.100, List.101):
let List.580 : U64 = CallByName List.6 List.100;
let List.577 : Int1 = CallByName Num.22 List.101 List.580;
if List.577 then
let List.579 : U8 = CallByName List.66 List.100 List.101;
let List.581 : U64 = CallByName List.6 List.100;
let List.578 : Int1 = CallByName Num.22 List.101 List.581;
if List.578 then
let List.580 : U8 = CallByName List.66 List.100 List.101;
dec List.100;
let List.578 : [C {}, C U8] = TagId(1) List.579;
ret List.578;
let List.579 : [C {}, C U8] = TagId(1) List.580;
ret List.579;
else
dec List.100;
let List.576 : {} = Struct {};
let List.575 : [C {}, C U8] = TagId(0) List.576;
ret List.575;
let List.577 : {} = Struct {};
let List.576 : [C {}, C U8] = TagId(0) List.577;
ret List.576;
procedure List.26 (List.172, List.173, List.174):
let List.599 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.96 List.172 List.173 List.174;
let List.602 : U8 = 1i64;
let List.603 : U8 = GetTagId List.599;
let List.604 : Int1 = lowlevel Eq List.602 List.603;
if List.604 then
let List.175 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.599;
let List.600 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.96 List.172 List.173 List.174;
let List.603 : U8 = 1i64;
let List.604 : U8 = GetTagId List.600;
let List.605 : Int1 = lowlevel Eq List.603 List.604;
if List.605 then
let List.175 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.600;
ret List.175;
else
let List.176 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.599;
let List.176 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.600;
ret List.176;
procedure List.29 (List.317, List.318):
let List.554 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.554 List.318;
let List.553 : List U8 = CallByName List.43 List.317 List.319;
ret List.553;
let List.555 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.555 List.318;
let List.554 : List U8 = CallByName List.43 List.317 List.319;
ret List.554;
procedure List.31 (#Attr.2, #Attr.3):
let List.567 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.567;
let List.568 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.568;
procedure List.38 (List.311):
let List.566 : U64 = 0i64;
let List.565 : List U8 = CallByName List.31 List.311 List.566;
ret List.565;
let List.567 : U64 = 0i64;
let List.566 : List U8 = CallByName List.31 List.311 List.567;
ret List.566;
procedure List.4 (List.116, List.117):
let List.564 : U64 = 1i64;
let List.563 : List U8 = CallByName List.70 List.116 List.564;
let List.562 : List U8 = CallByName List.71 List.563 List.117;
ret List.562;
let List.565 : U64 = 1i64;
let List.564 : List U8 = CallByName List.70 List.116 List.565;
let List.563 : List U8 = CallByName List.71 List.564 List.117;
ret List.563;
procedure List.43 (List.315, List.316):
let List.546 : U64 = CallByName List.6 List.315;
let List.545 : U64 = CallByName Num.77 List.546 List.316;
let List.536 : {U64, U64} = Struct {List.316, List.545};
let List.535 : List U8 = CallByName List.49 List.315 List.536;
ret List.535;
let List.547 : U64 = CallByName List.6 List.315;
let List.546 : U64 = CallByName Num.77 List.547 List.316;
let List.537 : {U64, U64} = Struct {List.316, List.546};
let List.536 : List U8 = CallByName List.49 List.315 List.537;
ret List.536;
procedure List.49 (List.389, List.390):
let List.593 : U64 = StructAtIndex 0 List.390;
let List.594 : U64 = 0i64;
let List.591 : Int1 = CallByName Bool.11 List.593 List.594;
if List.591 then
dec List.389;
let List.592 : List U8 = Array [];
ret List.592;
procedure List.49 (List.390, List.391):
let List.594 : U64 = StructAtIndex 0 List.391;
let List.595 : U64 = 0i64;
let List.592 : Int1 = CallByName Bool.11 List.594 List.595;
if List.592 then
dec List.390;
let List.593 : List U8 = Array [];
ret List.593;
else
let List.589 : U64 = StructAtIndex 1 List.390;
let List.590 : U64 = StructAtIndex 0 List.390;
let List.588 : List U8 = CallByName List.72 List.389 List.589 List.590;
ret List.588;
let List.590 : U64 = StructAtIndex 1 List.391;
let List.591 : U64 = StructAtIndex 0 List.391;
let List.589 : List U8 = CallByName List.72 List.390 List.590 List.591;
ret List.589;
procedure List.6 (#Attr.2):
let List.620 : U64 = lowlevel ListLen #Attr.2;
ret List.620;
let List.621 : U64 = lowlevel ListLen #Attr.2;
ret List.621;
procedure List.66 (#Attr.2, #Attr.3):
let List.573 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.573;
let List.574 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.574;
procedure List.70 (#Attr.2, #Attr.3):
let List.561 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.561;
let List.562 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.562;
procedure List.71 (#Attr.2, #Attr.3):
let List.559 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.559;
let List.560 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.560;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.540 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.540;
let List.541 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.541;
procedure List.8 (#Attr.2, #Attr.3):
let List.556 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.556;
let List.557 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.557;
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.608 List.452 List.453 List.454 List.455 List.456:
let List.610 : Int1 = CallByName Num.22 List.455 List.456;
if List.610 then
let List.619 : U8 = CallByName List.66 List.452 List.455;
let List.611 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName TotallyNotJson.62 List.453 List.619;
let List.616 : U8 = 1i64;
let List.617 : U8 = GetTagId List.611;
let List.618 : Int1 = lowlevel Eq List.616 List.617;
if List.618 then
let List.457 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.611;
let List.614 : U64 = 1i64;
let List.613 : U64 = CallByName Num.19 List.455 List.614;
jump List.608 List.452 List.457 List.454 List.613 List.456;
joinpoint List.609 List.453 List.454 List.455 List.456 List.457:
let List.611 : Int1 = CallByName Num.22 List.456 List.457;
if List.611 then
let List.620 : U8 = CallByName List.66 List.453 List.456;
let List.612 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName TotallyNotJson.62 List.454 List.620;
let List.617 : U8 = 1i64;
let List.618 : U8 = GetTagId List.612;
let List.619 : Int1 = lowlevel Eq List.617 List.618;
if List.619 then
let List.458 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.612;
let List.615 : U64 = 1i64;
let List.614 : U64 = CallByName Num.51 List.456 List.615;
jump List.609 List.453 List.458 List.455 List.614 List.457;
else
dec List.452;
let List.458 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.611;
let List.615 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) List.458;
ret List.615;
dec List.453;
let List.459 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.612;
let List.616 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(0) List.459;
ret List.616;
else
dec List.452;
let List.609 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) List.453;
ret List.609;
dec List.453;
let List.610 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = TagId(1) List.454;
ret List.610;
in
jump List.608 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
jump List.609 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.96 (List.449, List.450, List.451):
let List.606 : U64 = 0i64;
let List.607 : U64 = CallByName List.6 List.449;
let List.605 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.80 List.449 List.450 List.451 List.606 List.607;
ret List.605;
procedure List.96 (List.450, List.451, List.452):
let List.607 : U64 = 0i64;
let List.608 : U64 = CallByName List.6 List.450;
let List.606 : [C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64], C [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64]] = CallByName List.80 List.450 List.451 List.452 List.607 List.608;
ret List.606;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.295 : U8 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.295;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.329 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.329;
let Num.304 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.304;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.307 : U8 = lowlevel NumSub #Attr.2 #Attr.3;
@ -193,6 +193,10 @@ procedure Num.25 (#Attr.2, #Attr.3):
let Num.319 : Int1 = lowlevel NumGte #Attr.2 #Attr.3;
ret Num.319;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.329 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.329;
procedure Num.71 (#Attr.2, #Attr.3):
let Num.292 : U8 = lowlevel NumBitwiseOr #Attr.2 #Attr.3;
ret Num.292;

View file

@ -1,32 +1,32 @@
procedure List.18 (List.145, List.146, List.147):
let List.535 : U64 = 0i64;
let List.536 : U64 = CallByName List.6 List.145;
let List.534 : [<rnu><null>, C {[<rnu>C *self, <null>], *self}] = CallByName List.86 List.145 List.146 List.147 List.535 List.536;
ret List.534;
let List.536 : U64 = 0i64;
let List.537 : U64 = CallByName List.6 List.145;
let List.535 : [<rnu><null>, C {[<rnu>C *self, <null>], *self}] = CallByName List.86 List.145 List.146 List.147 List.536 List.537;
ret List.535;
procedure List.6 (#Attr.2):
let List.545 : U64 = lowlevel ListLen #Attr.2;
ret List.545;
let List.546 : U64 = lowlevel ListLen #Attr.2;
ret List.546;
procedure List.66 (#Attr.2, #Attr.3):
let List.544 : [<rnu>C *self, <null>] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.544;
let List.545 : [<rnu>C *self, <null>] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.545;
procedure List.86 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.537 List.148 List.149 List.150 List.151 List.152:
let List.539 : Int1 = CallByName Num.22 List.151 List.152;
if List.539 then
let List.543 : [<rnu>C *self, <null>] = CallByName List.66 List.148 List.151;
inc List.543;
let List.153 : [<rnu><null>, C {[<rnu>C *self, <null>], *self}] = CallByName Test.7 List.149 List.543;
let List.542 : U64 = 1i64;
let List.541 : U64 = CallByName Num.51 List.151 List.542;
jump List.537 List.148 List.153 List.150 List.541 List.152;
joinpoint List.538 List.148 List.149 List.150 List.151 List.152:
let List.540 : Int1 = CallByName Num.22 List.151 List.152;
if List.540 then
let List.544 : [<rnu>C *self, <null>] = CallByName List.66 List.148 List.151;
inc List.544;
let List.153 : [<rnu><null>, C {[<rnu>C *self, <null>], *self}] = CallByName Test.7 List.149 List.544;
let List.543 : U64 = 1i64;
let List.542 : U64 = CallByName Num.51 List.151 List.543;
jump List.538 List.148 List.153 List.150 List.542 List.152;
else
dec List.148;
ret List.149;
in
jump List.537 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
jump List.538 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,16 +1,16 @@
procedure List.4 (List.116, List.117):
let List.537 : U64 = 1i64;
let List.535 : List I64 = CallByName List.70 List.116 List.537;
let List.534 : List I64 = CallByName List.71 List.535 List.117;
ret List.534;
let List.538 : U64 = 1i64;
let List.536 : List I64 = CallByName List.70 List.116 List.538;
let List.535 : List I64 = CallByName List.71 List.536 List.117;
ret List.535;
procedure List.70 (#Attr.2, #Attr.3):
let List.538 : List I64 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.538;
let List.539 : List I64 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
procedure List.71 (#Attr.2, #Attr.3):
let List.536 : List I64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.536;
let List.537 : List I64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure Test.0 ():
let Test.2 : List I64 = Array [1i64];

View file

@ -1,16 +1,16 @@
procedure List.4 (List.116, List.117):
let List.537 : U64 = 1i64;
let List.535 : List I64 = CallByName List.70 List.116 List.537;
let List.534 : List I64 = CallByName List.71 List.535 List.117;
ret List.534;
let List.538 : U64 = 1i64;
let List.536 : List I64 = CallByName List.70 List.116 List.538;
let List.535 : List I64 = CallByName List.71 List.536 List.117;
ret List.535;
procedure List.70 (#Attr.2, #Attr.3):
let List.538 : List I64 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.538;
let List.539 : List I64 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
procedure List.71 (#Attr.2, #Attr.3):
let List.536 : List I64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.536;
let List.537 : List I64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure Test.1 (Test.2):
let Test.6 : I64 = 42i64;

View file

@ -1,25 +1,25 @@
procedure List.3 (List.108, List.109, List.110):
let List.537 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.536 : List I64 = StructAtIndex 0 List.537;
ret List.536;
let List.538 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.537 : List I64 = StructAtIndex 0 List.538;
ret List.537;
procedure List.6 (#Attr.2):
let List.535 : U64 = lowlevel ListLen #Attr.2;
ret List.535;
let List.536 : U64 = lowlevel ListLen #Attr.2;
ret List.536;
procedure List.64 (List.105, List.106, List.107):
let List.542 : U64 = CallByName List.6 List.105;
let List.539 : Int1 = CallByName Num.22 List.106 List.542;
if List.539 then
let List.540 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.540;
let List.543 : U64 = CallByName List.6 List.105;
let List.540 : Int1 = CallByName Num.22 List.106 List.543;
if List.540 then
let List.541 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.541;
else
let List.538 : {List I64, I64} = Struct {List.105, List.107};
ret List.538;
let List.539 : {List I64, I64} = Struct {List.105, List.107};
ret List.539;
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
let List.541 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.541;
let List.542 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.542;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.292 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;

View file

@ -1,24 +1,24 @@
procedure List.2 (List.100, List.101):
let List.540 : U64 = CallByName List.6 List.100;
let List.536 : Int1 = CallByName Num.22 List.101 List.540;
if List.536 then
let List.538 : I64 = CallByName List.66 List.100 List.101;
let List.541 : U64 = CallByName List.6 List.100;
let List.537 : Int1 = CallByName Num.22 List.101 List.541;
if List.537 then
let List.539 : I64 = CallByName List.66 List.100 List.101;
dec List.100;
let List.537 : [C {}, C I64] = TagId(1) List.538;
ret List.537;
let List.538 : [C {}, C I64] = TagId(1) List.539;
ret List.538;
else
dec List.100;
let List.535 : {} = Struct {};
let List.534 : [C {}, C I64] = TagId(0) List.535;
ret List.534;
let List.536 : {} = Struct {};
let List.535 : [C {}, C I64] = TagId(0) List.536;
ret List.535;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.66 (#Attr.2, #Attr.3):
let List.539 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.539;
let List.540 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,11 +1,11 @@
procedure List.6 (#Attr.2):
let List.534 : U64 = lowlevel ListLen #Attr.2;
ret List.534;
procedure List.6 (#Attr.2):
let List.535 : U64 = lowlevel ListLen #Attr.2;
ret List.535;
procedure List.6 (#Attr.2):
let List.536 : U64 = lowlevel ListLen #Attr.2;
ret List.536;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.292 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.292;

View file

@ -1,30 +1,30 @@
procedure List.2 (List.100, List.101):
let List.540 : U64 = CallByName List.6 List.100;
let List.536 : Int1 = CallByName Num.22 List.101 List.540;
if List.536 then
let List.538 : Str = CallByName List.66 List.100 List.101;
inc List.538;
let List.541 : U64 = CallByName List.6 List.100;
let List.537 : Int1 = CallByName Num.22 List.101 List.541;
if List.537 then
let List.539 : Str = CallByName List.66 List.100 List.101;
inc List.539;
dec List.100;
let List.537 : [C {}, C Str] = TagId(1) List.538;
ret List.537;
let List.538 : [C {}, C Str] = TagId(1) List.539;
ret List.538;
else
dec List.100;
let List.535 : {} = Struct {};
let List.534 : [C {}, C Str] = TagId(0) List.535;
ret List.534;
let List.536 : {} = Struct {};
let List.535 : [C {}, C Str] = TagId(0) List.536;
ret List.535;
procedure List.5 (#Attr.2, #Attr.3):
let List.542 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.3 #Attr.3;
let List.543 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.3 #Attr.3;
decref #Attr.2;
ret List.542;
ret List.543;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.66 (#Attr.2, #Attr.3):
let List.539 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.539;
let List.540 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,30 +1,30 @@
procedure List.2 (List.100, List.101):
let List.540 : U64 = CallByName List.6 List.100;
let List.536 : Int1 = CallByName Num.22 List.101 List.540;
if List.536 then
let List.538 : Str = CallByName List.66 List.100 List.101;
inc List.538;
let List.541 : U64 = CallByName List.6 List.100;
let List.537 : Int1 = CallByName Num.22 List.101 List.541;
if List.537 then
let List.539 : Str = CallByName List.66 List.100 List.101;
inc List.539;
dec List.100;
let List.537 : [C {}, C Str] = TagId(1) List.538;
ret List.537;
let List.538 : [C {}, C Str] = TagId(1) List.539;
ret List.538;
else
dec List.100;
let List.535 : {} = Struct {};
let List.534 : [C {}, C Str] = TagId(0) List.535;
ret List.534;
let List.536 : {} = Struct {};
let List.535 : [C {}, C Str] = TagId(0) List.536;
ret List.535;
procedure List.5 (#Attr.2, #Attr.3):
let List.542 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.3 #Attr.3;
let List.543 : List Str = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.3 #Attr.3;
decref #Attr.2;
ret List.542;
ret List.543;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.66 (#Attr.2, #Attr.3):
let List.539 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.539;
let List.540 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,23 +1,23 @@
procedure List.5 (#Attr.2, #Attr.3):
let List.535 : U8 = GetTagId #Attr.3;
joinpoint List.536 List.534:
ret List.534;
let List.536 : U8 = GetTagId #Attr.3;
joinpoint List.537 List.535:
ret List.535;
in
switch List.535:
switch List.536:
case 0:
let List.537 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.4 #Attr.3;
let List.538 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.4 #Attr.3;
decref #Attr.2;
jump List.536 List.537;
jump List.537 List.538;
case 1:
let List.538 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.6 #Attr.3;
let List.539 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.6 #Attr.3;
decref #Attr.2;
jump List.536 List.538;
jump List.537 List.539;
default:
let List.539 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.8 #Attr.3;
let List.540 : List U8 = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.8 #Attr.3;
decref #Attr.2;
jump List.536 List.539;
jump List.537 List.540;
procedure Num.19 (#Attr.2, #Attr.3):

View file

@ -1,25 +1,25 @@
procedure List.3 (List.108, List.109, List.110):
let List.535 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.534 : List I64 = StructAtIndex 0 List.535;
ret List.534;
let List.536 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.535 : List I64 = StructAtIndex 0 List.536;
ret List.535;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.64 (List.105, List.106, List.107):
let List.540 : U64 = CallByName List.6 List.105;
let List.537 : Int1 = CallByName Num.22 List.106 List.540;
if List.537 then
let List.538 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.538;
let List.541 : U64 = CallByName List.6 List.105;
let List.538 : Int1 = CallByName Num.22 List.106 List.541;
if List.538 then
let List.539 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.539;
else
let List.536 : {List I64, I64} = Struct {List.105, List.107};
ret List.536;
let List.537 : {List I64, I64} = Struct {List.105, List.107};
ret List.537;
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
let List.539 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.539;
let List.540 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,11 +1,11 @@
procedure List.28 (#Attr.2, #Attr.3):
let List.536 : List I64 = lowlevel ListSortWith { xs: `#Attr.#arg1` } #Attr.2 Num.46 #Attr.3;
ret List.536;
let List.537 : List I64 = lowlevel ListSortWith { xs: `#Attr.#arg1` } #Attr.2 Num.46 #Attr.3;
ret List.537;
procedure List.59 (List.301):
let List.535 : {} = Struct {};
let List.534 : List I64 = CallByName List.28 List.301 List.535;
ret List.534;
let List.536 : {} = Struct {};
let List.535 : List I64 = CallByName List.28 List.301 List.536;
ret List.535;
procedure Num.46 (#Attr.2, #Attr.3):
let Num.292 : U8 = lowlevel NumCompare #Attr.2 #Attr.3;

View file

@ -1,43 +1,43 @@
procedure List.2 (List.100, List.101):
let List.556 : U64 = CallByName List.6 List.100;
let List.553 : Int1 = CallByName Num.22 List.101 List.556;
if List.553 then
let List.555 : I64 = CallByName List.66 List.100 List.101;
let List.557 : U64 = CallByName List.6 List.100;
let List.554 : Int1 = CallByName Num.22 List.101 List.557;
if List.554 then
let List.556 : I64 = CallByName List.66 List.100 List.101;
dec List.100;
let List.554 : [C {}, C I64] = TagId(1) List.555;
ret List.554;
let List.555 : [C {}, C I64] = TagId(1) List.556;
ret List.555;
else
dec List.100;
let List.552 : {} = Struct {};
let List.551 : [C {}, C I64] = TagId(0) List.552;
ret List.551;
let List.553 : {} = Struct {};
let List.552 : [C {}, C I64] = TagId(0) List.553;
ret List.552;
procedure List.3 (List.108, List.109, List.110):
let List.543 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.542 : List I64 = StructAtIndex 0 List.543;
ret List.542;
let List.544 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.543 : List I64 = StructAtIndex 0 List.544;
ret List.543;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.64 (List.105, List.106, List.107):
let List.540 : U64 = CallByName List.6 List.105;
let List.537 : Int1 = CallByName Num.22 List.106 List.540;
if List.537 then
let List.538 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.538;
let List.541 : U64 = CallByName List.6 List.105;
let List.538 : Int1 = CallByName Num.22 List.106 List.541;
if List.538 then
let List.539 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.539;
else
let List.536 : {List I64, I64} = Struct {List.105, List.107};
ret List.536;
let List.537 : {List I64, I64} = Struct {List.105, List.107};
ret List.537;
procedure List.66 (#Attr.2, #Attr.3):
let List.549 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.549;
let List.550 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.550;
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
let List.539 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.539;
let List.540 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.294 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,25 +1,25 @@
procedure List.3 (List.108, List.109, List.110):
let List.543 : {List U64, U64} = CallByName List.64 List.108 List.109 List.110;
let List.542 : List U64 = StructAtIndex 0 List.543;
ret List.542;
let List.544 : {List U64, U64} = CallByName List.64 List.108 List.109 List.110;
let List.543 : List U64 = StructAtIndex 0 List.544;
ret List.543;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.64 (List.105, List.106, List.107):
let List.540 : U64 = CallByName List.6 List.105;
let List.537 : Int1 = CallByName Num.22 List.106 List.540;
if List.537 then
let List.538 : {List U64, U64} = CallByName List.67 List.105 List.106 List.107;
ret List.538;
let List.541 : U64 = CallByName List.6 List.105;
let List.538 : Int1 = CallByName Num.22 List.106 List.541;
if List.538 then
let List.539 : {List U64, U64} = CallByName List.67 List.105 List.106 List.107;
ret List.539;
else
let List.536 : {List U64, U64} = Struct {List.105, List.107};
ret List.536;
let List.537 : {List U64, U64} = Struct {List.105, List.107};
ret List.537;
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
let List.539 : {List U64, U64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.539;
let List.540 : {List U64, U64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.292 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -1,7 +1,7 @@
procedure List.5 (#Attr.2, #Attr.3):
let List.534 : List [<rnnu>C List *self] = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
let List.535 : List [<rnnu>C List *self] = lowlevel ListMap { xs: `#Attr.#arg1` } #Attr.2 Test.2 #Attr.3;
decref #Attr.2;
ret List.534;
ret List.535;
procedure Test.2 (Test.5):
let Test.6 : List [<rnnu>C List *self] = UnionAtIndex (Id 0) (Index 0) Test.5;

View file

@ -1,43 +1,43 @@
procedure List.2 (List.100, List.101):
let List.556 : U64 = CallByName List.6 List.100;
let List.553 : Int1 = CallByName Num.22 List.101 List.556;
if List.553 then
let List.555 : I64 = CallByName List.66 List.100 List.101;
let List.557 : U64 = CallByName List.6 List.100;
let List.554 : Int1 = CallByName Num.22 List.101 List.557;
if List.554 then
let List.556 : I64 = CallByName List.66 List.100 List.101;
dec List.100;
let List.554 : [C {}, C I64] = TagId(1) List.555;
ret List.554;
let List.555 : [C {}, C I64] = TagId(1) List.556;
ret List.555;
else
dec List.100;
let List.552 : {} = Struct {};
let List.551 : [C {}, C I64] = TagId(0) List.552;
ret List.551;
let List.553 : {} = Struct {};
let List.552 : [C {}, C I64] = TagId(0) List.553;
ret List.552;
procedure List.3 (List.108, List.109, List.110):
let List.543 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.542 : List I64 = StructAtIndex 0 List.543;
ret List.542;
let List.544 : {List I64, I64} = CallByName List.64 List.108 List.109 List.110;
let List.543 : List I64 = StructAtIndex 0 List.544;
ret List.543;
procedure List.6 (#Attr.2):
let List.541 : U64 = lowlevel ListLen #Attr.2;
ret List.541;
let List.542 : U64 = lowlevel ListLen #Attr.2;
ret List.542;
procedure List.64 (List.105, List.106, List.107):
let List.540 : U64 = CallByName List.6 List.105;
let List.537 : Int1 = CallByName Num.22 List.106 List.540;
if List.537 then
let List.538 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.538;
let List.541 : U64 = CallByName List.6 List.105;
let List.538 : Int1 = CallByName Num.22 List.106 List.541;
if List.538 then
let List.539 : {List I64, I64} = CallByName List.67 List.105 List.106 List.107;
ret List.539;
else
let List.536 : {List I64, I64} = Struct {List.105, List.107};
ret List.536;
let List.537 : {List I64, I64} = Struct {List.105, List.107};
ret List.537;
procedure List.66 (#Attr.2, #Attr.3):
let List.549 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.549;
let List.550 : I64 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.550;
procedure List.67 (#Attr.2, #Attr.3, #Attr.4):
let List.539 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.539;
let List.540 : {List I64, I64} = lowlevel ListReplaceUnsafe #Attr.2 #Attr.3 #Attr.4;
ret List.540;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.294 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;

View file

@ -34,194 +34,198 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.18 (List.145, List.146, List.147):
let List.561 : U64 = 0i64;
let List.562 : U64 = CallByName List.6 List.145;
let List.560 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.561 List.562;
ret List.560;
let List.562 : U64 = 0i64;
let List.563 : U64 = CallByName List.6 List.145;
let List.561 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.562 List.563;
ret List.561;
procedure List.18 (List.145, List.146, List.147):
let List.573 : U64 = 0i64;
let List.574 : U64 = CallByName List.6 List.145;
let List.572 : List U8 = CallByName List.86 List.145 List.146 List.147 List.573 List.574;
ret List.572;
let List.574 : U64 = 0i64;
let List.575 : U64 = CallByName List.6 List.145;
let List.573 : List U8 = CallByName List.86 List.145 List.146 List.147 List.574 List.575;
ret List.573;
procedure List.26 (List.172, List.173, List.174):
let List.614 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.617 : U8 = 1i64;
let List.618 : U8 = GetTagId List.614;
let List.619 : Int1 = lowlevel Eq List.617 List.618;
if List.619 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.614;
let List.615 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.96 List.172 List.173 List.174;
let List.618 : U8 = 1i64;
let List.619 : U8 = GetTagId List.615;
let List.620 : Int1 = lowlevel Eq List.618 List.619;
if List.620 then
let List.175 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.615;
ret List.175;
else
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.614;
let List.176 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.615;
ret List.176;
procedure List.4 (List.116, List.117):
let List.559 : U64 = 1i64;
let List.558 : List U8 = CallByName List.70 List.116 List.559;
let List.557 : List U8 = CallByName List.71 List.558 List.117;
ret List.557;
let List.560 : U64 = 1i64;
let List.559 : List U8 = CallByName List.70 List.116 List.560;
let List.558 : List U8 = CallByName List.71 List.559 List.117;
ret List.558;
procedure List.49 (List.389, List.390):
let List.606 : U64 = StructAtIndex 0 List.390;
let List.607 : U64 = 0i64;
let List.604 : Int1 = CallByName Bool.11 List.606 List.607;
if List.604 then
dec List.389;
let List.605 : List U8 = Array [];
ret List.605;
procedure List.49 (List.390, List.391):
let List.607 : U64 = StructAtIndex 0 List.391;
let List.608 : U64 = 0i64;
let List.605 : Int1 = CallByName Bool.11 List.607 List.608;
if List.605 then
dec List.390;
let List.606 : List U8 = Array [];
ret List.606;
else
let List.601 : U64 = StructAtIndex 1 List.390;
let List.602 : U64 = StructAtIndex 0 List.390;
let List.600 : List U8 = CallByName List.72 List.389 List.601 List.602;
ret List.600;
let List.602 : U64 = StructAtIndex 1 List.391;
let List.603 : U64 = StructAtIndex 0 List.391;
let List.601 : List U8 = CallByName List.72 List.390 List.602 List.603;
ret List.601;
procedure List.52 (List.404, List.405):
let List.406 : U64 = CallByName List.6 List.404;
joinpoint List.612 List.407:
let List.610 : U64 = 0i64;
let List.609 : {U64, U64} = Struct {List.407, List.610};
inc List.404;
let List.408 : List U8 = CallByName List.49 List.404 List.609;
let List.608 : U64 = CallByName Num.20 List.406 List.407;
let List.599 : {U64, U64} = Struct {List.608, List.407};
let List.409 : List U8 = CallByName List.49 List.404 List.599;
let List.598 : {List U8, List U8} = Struct {List.408, List.409};
ret List.598;
procedure List.52 (List.405, List.406):
let List.407 : U64 = CallByName List.6 List.405;
joinpoint List.613 List.408:
let List.611 : U64 = 0i64;
let List.610 : {U64, U64} = Struct {List.408, List.611};
inc List.405;
let List.409 : List U8 = CallByName List.49 List.405 List.610;
let List.609 : U64 = CallByName Num.75 List.407 List.408;
let List.600 : {U64, U64} = Struct {List.609, List.408};
let List.410 : List U8 = CallByName List.49 List.405 List.600;
let List.599 : {List U8, List U8} = Struct {List.409, List.410};
ret List.599;
in
let List.613 : Int1 = CallByName Num.24 List.406 List.405;
if List.613 then
jump List.612 List.405;
let List.614 : Int1 = CallByName Num.24 List.407 List.406;
if List.614 then
jump List.613 List.406;
else
jump List.612 List.406;
jump List.613 List.407;
procedure List.6 (#Attr.2):
let List.584 : U64 = lowlevel ListLen #Attr.2;
ret List.584;
let List.585 : U64 = lowlevel ListLen #Attr.2;
ret List.585;
procedure List.6 (#Attr.2):
let List.586 : U64 = lowlevel ListLen #Attr.2;
ret List.586;
let List.587 : U64 = lowlevel ListLen #Attr.2;
ret List.587;
procedure List.66 (#Attr.2, #Attr.3):
let List.570 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.570;
let List.571 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
procedure List.66 (#Attr.2, #Attr.3):
let List.582 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.582;
let List.583 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.583;
procedure List.68 (#Attr.2):
let List.597 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.597;
let List.598 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.598;
procedure List.70 (#Attr.2, #Attr.3):
let List.538 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.538;
let List.539 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.539;
procedure List.71 (#Attr.2, #Attr.3):
let List.536 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.536;
let List.537 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.603 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.603;
let List.604 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.604;
procedure List.8 (#Attr.2, #Attr.3):
let List.595 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.595;
let List.596 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.596;
procedure List.80 (#Derived_gen.8, #Derived_gen.9, #Derived_gen.10, #Derived_gen.11, #Derived_gen.12):
joinpoint List.623 List.452 List.453 List.454 List.455 List.456:
let List.625 : Int1 = CallByName Num.22 List.455 List.456;
if List.625 then
let List.634 : U8 = CallByName List.66 List.452 List.455;
let List.626 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.453 List.634;
let List.631 : U8 = 1i64;
let List.632 : U8 = GetTagId List.626;
let List.633 : Int1 = lowlevel Eq List.631 List.632;
if List.633 then
let List.457 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.626;
let List.629 : U64 = 1i64;
let List.628 : U64 = CallByName Num.19 List.455 List.629;
jump List.623 List.452 List.457 List.454 List.628 List.456;
joinpoint List.624 List.453 List.454 List.455 List.456 List.457:
let List.626 : Int1 = CallByName Num.22 List.456 List.457;
if List.626 then
let List.635 : U8 = CallByName List.66 List.453 List.456;
let List.627 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.454 List.635;
let List.632 : U8 = 1i64;
let List.633 : U8 = GetTagId List.627;
let List.634 : Int1 = lowlevel Eq List.632 List.633;
if List.634 then
let List.458 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.627;
let List.630 : U64 = 1i64;
let List.629 : U64 = CallByName Num.51 List.456 List.630;
jump List.624 List.453 List.458 List.455 List.629 List.457;
else
dec List.452;
let List.458 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.626;
let List.630 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.458;
ret List.630;
dec List.453;
let List.459 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.627;
let List.631 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.459;
ret List.631;
else
dec List.452;
let List.624 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.453;
ret List.624;
dec List.453;
let List.625 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.454;
ret List.625;
in
jump List.623 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12;
jump List.624 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12;
procedure List.86 (#Derived_gen.13, #Derived_gen.14, #Derived_gen.15, #Derived_gen.16, #Derived_gen.17):
joinpoint List.575 List.148 List.149 List.150 List.151 List.152:
let List.577 : Int1 = CallByName Num.22 List.151 List.152;
if List.577 then
let List.581 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.581;
let List.580 : U64 = 1i64;
let List.579 : U64 = CallByName Num.51 List.151 List.580;
jump List.575 List.148 List.153 List.150 List.579 List.152;
joinpoint List.576 List.148 List.149 List.150 List.151 List.152:
let List.578 : Int1 = CallByName Num.22 List.151 List.152;
if List.578 then
let List.582 : U8 = CallByName List.66 List.148 List.151;
let List.153 : List U8 = CallByName TotallyNotJson.215 List.149 List.582;
let List.581 : U64 = 1i64;
let List.580 : U64 = CallByName Num.51 List.151 List.581;
jump List.576 List.148 List.153 List.150 List.580 List.152;
else
dec List.148;
ret List.149;
in
jump List.575 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17;
jump List.576 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17;
procedure List.86 (#Derived_gen.3, #Derived_gen.4, #Derived_gen.5, #Derived_gen.6, #Derived_gen.7):
joinpoint List.563 List.148 List.149 List.150 List.151 List.152:
let List.565 : Int1 = CallByName Num.22 List.151 List.152;
if List.565 then
let List.569 : Str = CallByName List.66 List.148 List.151;
inc List.569;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.569 List.150;
let List.568 : U64 = 1i64;
let List.567 : U64 = CallByName Num.51 List.151 List.568;
jump List.563 List.148 List.153 List.150 List.567 List.152;
joinpoint List.564 List.148 List.149 List.150 List.151 List.152:
let List.566 : Int1 = CallByName Num.22 List.151 List.152;
if List.566 then
let List.570 : Str = CallByName List.66 List.148 List.151;
inc List.570;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.570 List.150;
let List.569 : U64 = 1i64;
let List.568 : U64 = CallByName Num.51 List.151 List.569;
jump List.564 List.148 List.153 List.150 List.568 List.152;
else
dec List.148;
ret List.149;
in
jump List.563 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7;
jump List.564 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7;
procedure List.96 (List.449, List.450, List.451):
let List.621 : U64 = 0i64;
let List.622 : U64 = CallByName List.6 List.449;
let List.620 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.449 List.450 List.451 List.621 List.622;
ret List.620;
procedure List.96 (List.450, List.451, List.452):
let List.622 : U64 = 0i64;
let List.623 : U64 = CallByName List.6 List.450;
let List.621 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.450 List.451 List.452 List.622 List.623;
ret List.621;
procedure Num.127 (#Attr.2):
let Num.299 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.299;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.313 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.313;
let Num.303 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.303;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.311 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.311;
let Num.300 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.300;
procedure Num.21 (#Attr.2, #Attr.3):
let Num.305 : U64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.305;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.310 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.310;
let Num.311 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.311;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.312 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.312;
let Num.313 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.313;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.307 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.307;
let Num.308 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.308;
procedure Num.75 (#Attr.2, #Attr.3):
let Num.312 : U64 = lowlevel NumSubWrap #Attr.2 #Attr.3;
ret Num.312;
procedure Num.94 (#Attr.2, #Attr.3):
let Num.304 : U64 = lowlevel NumDivCeilUnchecked #Attr.2 #Attr.3;

View file

@ -82,80 +82,80 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.18 (List.145, List.146, List.147):
let List.561 : U64 = 0i64;
let List.562 : U64 = CallByName List.6 List.145;
let List.560 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.561 List.562;
ret List.560;
let List.562 : U64 = 0i64;
let List.563 : U64 = CallByName List.6 List.145;
let List.561 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.562 List.563;
ret List.561;
procedure List.18 (List.145, List.146, List.147):
let List.601 : U64 = 0i64;
let List.602 : U64 = CallByName List.6 List.145;
let List.600 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.601 List.602;
ret List.600;
let List.602 : U64 = 0i64;
let List.603 : U64 = CallByName List.6 List.145;
let List.601 : {List U8, U64} = CallByName List.86 List.145 List.146 List.147 List.602 List.603;
ret List.601;
procedure List.4 (List.116, List.117):
let List.599 : U64 = 1i64;
let List.598 : List U8 = CallByName List.70 List.116 List.599;
let List.597 : List U8 = CallByName List.71 List.598 List.117;
ret List.597;
let List.600 : U64 = 1i64;
let List.599 : List U8 = CallByName List.70 List.116 List.600;
let List.598 : List U8 = CallByName List.71 List.599 List.117;
ret List.598;
procedure List.6 (#Attr.2):
let List.572 : U64 = lowlevel ListLen #Attr.2;
ret List.572;
let List.573 : U64 = lowlevel ListLen #Attr.2;
ret List.573;
procedure List.6 (#Attr.2):
let List.612 : U64 = lowlevel ListLen #Attr.2;
ret List.612;
procedure List.66 (#Attr.2, #Attr.3):
let List.570 : [C {}, C {}] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.570;
procedure List.66 (#Attr.2, #Attr.3):
let List.610 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.610;
procedure List.70 (#Attr.2, #Attr.3):
let List.578 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.578;
procedure List.71 (#Attr.2, #Attr.3):
let List.576 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.576;
procedure List.8 (#Attr.2, #Attr.3):
let List.613 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
let List.613 : U64 = lowlevel ListLen #Attr.2;
ret List.613;
procedure List.66 (#Attr.2, #Attr.3):
let List.571 : [C {}, C {}] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
procedure List.66 (#Attr.2, #Attr.3):
let List.611 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.611;
procedure List.70 (#Attr.2, #Attr.3):
let List.579 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.579;
procedure List.71 (#Attr.2, #Attr.3):
let List.577 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.577;
procedure List.8 (#Attr.2, #Attr.3):
let List.614 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.614;
procedure List.86 (#Derived_gen.18, #Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22):
joinpoint List.563 List.148 List.149 List.150 List.151 List.152:
let List.565 : Int1 = CallByName Num.22 List.151 List.152;
if List.565 then
let List.569 : [C {}, C {}] = CallByName List.66 List.148 List.151;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.569 List.150;
let List.568 : U64 = 1i64;
let List.567 : U64 = CallByName Num.51 List.151 List.568;
jump List.563 List.148 List.153 List.150 List.567 List.152;
joinpoint List.564 List.148 List.149 List.150 List.151 List.152:
let List.566 : Int1 = CallByName Num.22 List.151 List.152;
if List.566 then
let List.570 : [C {}, C {}] = CallByName List.66 List.148 List.151;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.570 List.150;
let List.569 : U64 = 1i64;
let List.568 : U64 = CallByName Num.51 List.151 List.569;
jump List.564 List.148 List.153 List.150 List.568 List.152;
else
dec List.148;
ret List.149;
in
jump List.563 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22;
jump List.564 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22;
procedure List.86 (#Derived_gen.29, #Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33):
joinpoint List.603 List.148 List.149 List.150 List.151 List.152:
let List.605 : Int1 = CallByName Num.22 List.151 List.152;
if List.605 then
let List.609 : [] = CallByName List.66 List.148 List.151;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.609 List.150;
let List.608 : U64 = 1i64;
let List.607 : U64 = CallByName Num.51 List.151 List.608;
jump List.603 List.148 List.153 List.150 List.607 List.152;
joinpoint List.604 List.148 List.149 List.150 List.151 List.152:
let List.606 : Int1 = CallByName Num.22 List.151 List.152;
if List.606 then
let List.610 : [] = CallByName List.66 List.148 List.151;
let List.153 : {List U8, U64} = CallByName TotallyNotJson.267 List.149 List.610 List.150;
let List.609 : U64 = 1i64;
let List.608 : U64 = CallByName Num.51 List.151 List.609;
jump List.604 List.148 List.153 List.150 List.608 List.152;
else
dec List.148;
ret List.149;
in
jump List.603 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
jump List.604 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
procedure Num.127 (#Attr.2):
let Num.311 : U8 = lowlevel NumIntCast #Attr.2;

View file

@ -3,96 +3,96 @@ procedure Bool.11 (#Attr.2, #Attr.3):
ret Bool.24;
procedure List.26 (List.172, List.173, List.174):
let List.549 : [C U64, C U64] = CallByName List.96 List.172 List.173 List.174;
let List.552 : U8 = 1i64;
let List.553 : U8 = GetTagId List.549;
let List.554 : Int1 = lowlevel Eq List.552 List.553;
if List.554 then
let List.175 : U64 = UnionAtIndex (Id 1) (Index 0) List.549;
let List.550 : [C U64, C U64] = CallByName List.96 List.172 List.173 List.174;
let List.553 : U8 = 1i64;
let List.554 : U8 = GetTagId List.550;
let List.555 : Int1 = lowlevel Eq List.553 List.554;
if List.555 then
let List.175 : U64 = UnionAtIndex (Id 1) (Index 0) List.550;
ret List.175;
else
let List.176 : U64 = UnionAtIndex (Id 0) (Index 0) List.549;
let List.176 : U64 = UnionAtIndex (Id 0) (Index 0) List.550;
ret List.176;
procedure List.29 (List.317, List.318):
let List.548 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.548 List.318;
let List.534 : List U8 = CallByName List.43 List.317 List.319;
ret List.534;
procedure List.43 (List.315, List.316):
let List.546 : U64 = CallByName List.6 List.315;
let List.545 : U64 = CallByName Num.77 List.546 List.316;
let List.536 : {U64, U64} = Struct {List.316, List.545};
let List.535 : List U8 = CallByName List.49 List.315 List.536;
let List.549 : U64 = CallByName List.6 List.317;
let List.319 : U64 = CallByName Num.77 List.549 List.318;
let List.535 : List U8 = CallByName List.43 List.317 List.319;
ret List.535;
procedure List.49 (List.389, List.390):
let List.543 : U64 = StructAtIndex 0 List.390;
let List.544 : U64 = 0i64;
let List.541 : Int1 = CallByName Bool.11 List.543 List.544;
if List.541 then
dec List.389;
let List.542 : List U8 = Array [];
ret List.542;
procedure List.43 (List.315, List.316):
let List.547 : U64 = CallByName List.6 List.315;
let List.546 : U64 = CallByName Num.77 List.547 List.316;
let List.537 : {U64, U64} = Struct {List.316, List.546};
let List.536 : List U8 = CallByName List.49 List.315 List.537;
ret List.536;
procedure List.49 (List.390, List.391):
let List.544 : U64 = StructAtIndex 0 List.391;
let List.545 : U64 = 0i64;
let List.542 : Int1 = CallByName Bool.11 List.544 List.545;
if List.542 then
dec List.390;
let List.543 : List U8 = Array [];
ret List.543;
else
let List.538 : U64 = StructAtIndex 1 List.390;
let List.539 : U64 = StructAtIndex 0 List.390;
let List.537 : List U8 = CallByName List.72 List.389 List.538 List.539;
ret List.537;
let List.539 : U64 = StructAtIndex 1 List.391;
let List.540 : U64 = StructAtIndex 0 List.391;
let List.538 : List U8 = CallByName List.72 List.390 List.539 List.540;
ret List.538;
procedure List.6 (#Attr.2):
let List.547 : U64 = lowlevel ListLen #Attr.2;
ret List.547;
let List.548 : U64 = lowlevel ListLen #Attr.2;
ret List.548;
procedure List.66 (#Attr.2, #Attr.3):
let List.570 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.570;
let List.571 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.571;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.540 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.540;
let List.541 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.541;
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.558 List.452 List.453 List.454 List.455 List.456:
let List.560 : Int1 = CallByName Num.22 List.455 List.456;
if List.560 then
let List.569 : U8 = CallByName List.66 List.452 List.455;
let List.561 : [C U64, C U64] = CallByName Test.3 List.453 List.569;
let List.566 : U8 = 1i64;
let List.567 : U8 = GetTagId List.561;
let List.568 : Int1 = lowlevel Eq List.566 List.567;
if List.568 then
let List.457 : U64 = UnionAtIndex (Id 1) (Index 0) List.561;
let List.564 : U64 = 1i64;
let List.563 : U64 = CallByName Num.19 List.455 List.564;
jump List.558 List.452 List.457 List.454 List.563 List.456;
joinpoint List.559 List.453 List.454 List.455 List.456 List.457:
let List.561 : Int1 = CallByName Num.22 List.456 List.457;
if List.561 then
let List.570 : U8 = CallByName List.66 List.453 List.456;
let List.562 : [C U64, C U64] = CallByName Test.3 List.454 List.570;
let List.567 : U8 = 1i64;
let List.568 : U8 = GetTagId List.562;
let List.569 : Int1 = lowlevel Eq List.567 List.568;
if List.569 then
let List.458 : U64 = UnionAtIndex (Id 1) (Index 0) List.562;
let List.565 : U64 = 1i64;
let List.564 : U64 = CallByName Num.51 List.456 List.565;
jump List.559 List.453 List.458 List.455 List.564 List.457;
else
dec List.452;
let List.458 : U64 = UnionAtIndex (Id 0) (Index 0) List.561;
let List.565 : [C U64, C U64] = TagId(0) List.458;
ret List.565;
dec List.453;
let List.459 : U64 = UnionAtIndex (Id 0) (Index 0) List.562;
let List.566 : [C U64, C U64] = TagId(0) List.459;
ret List.566;
else
dec List.452;
let List.559 : [C U64, C U64] = TagId(1) List.453;
ret List.559;
dec List.453;
let List.560 : [C U64, C U64] = TagId(1) List.454;
ret List.560;
in
jump List.558 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
jump List.559 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.96 (List.449, List.450, List.451):
let List.556 : U64 = 0i64;
let List.557 : U64 = CallByName List.6 List.449;
let List.555 : [C U64, C U64] = CallByName List.80 List.449 List.450 List.451 List.556 List.557;
ret List.555;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.294;
procedure List.96 (List.450, List.451, List.452):
let List.557 : U64 = 0i64;
let List.558 : U64 = CallByName List.6 List.450;
let List.556 : [C U64, C U64] = CallByName List.80 List.450 List.451 List.452 List.557 List.558;
ret List.556;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.295;
procedure Num.51 (#Attr.2, #Attr.3):
let Num.294 : U64 = lowlevel NumAddWrap #Attr.2 #Attr.3;
ret Num.294;
procedure Num.77 (#Attr.2, #Attr.3):
let Num.293 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.293;