This commit is contained in:
Folkert 2023-06-18 17:00:31 +02:00
parent 0247237fe8
commit 9c85fb90d3
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
44 changed files with 2585 additions and 2505 deletions

View file

@ -53,7 +53,7 @@ procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.527 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.527;
procedure List.80 (List.571, List.572, List.573, List.574, List.575):
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.545 List.439 List.440 List.441 List.442 List.443:
let List.547 : Int1 = CallByName Num.22 List.442 List.443;
if List.547 then
@ -77,7 +77,7 @@ procedure List.80 (List.571, List.572, List.573, List.574, List.575):
let List.546 : [C U64, C U64] = TagId(1) List.440;
ret List.546;
in
jump List.545 List.571 List.572 List.573 List.574 List.575;
jump List.545 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.543 : U64 = 0i64;

View file

@ -8,7 +8,7 @@ procedure Test.4 (Test.27):
let Test.38 : I64 = CallByName Test.5 Test.27 Test.39 Test.40;
ret Test.38;
procedure Test.5 (Test.67, Test.68, Test.69):
procedure Test.5 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2):
joinpoint Test.41 Test.29 Test.30 Test.31:
let Test.51 : U8 = 0i64;
let Test.52 : U8 = GetTagId Test.29;
@ -16,23 +16,23 @@ procedure Test.5 (Test.67, Test.68, Test.69):
if Test.53 then
let Test.32 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 0) (Index 0) Test.29;
let Test.33 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 0) (Index 1) Test.29;
joinpoint #Derived_gen.0 #Derived_gen.4:
let #Derived_gen.5 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = lowlevel PtrCast #Derived_gen.4;
let Test.43 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = Reuse #Derived_gen.5 UpdateModeId { id: 1 } TagId(1) Test.33 Test.30;
joinpoint #Derived_gen.3 #Derived_gen.7:
let #Derived_gen.8 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = lowlevel PtrCast #Derived_gen.7;
let Test.43 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = Reuse #Derived_gen.8 UpdateModeId { id: 1 } TagId(1) Test.33 Test.30;
let Test.45 : I64 = 1i64;
let Test.44 : I64 = CallByName Num.19 Test.31 Test.45;
jump Test.41 Test.32 Test.43 Test.44;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.29;
if #Derived_gen.1 then
let #Derived_gen.6 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 2 } };
jump #Derived_gen.0 #Derived_gen.6;
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique Test.29;
if #Derived_gen.4 then
let #Derived_gen.9 : [<rnu><null>, C *self *self] = ResetRef { symbol: Test.29, id: UpdateModeId { id: 2 } };
jump #Derived_gen.3 #Derived_gen.9;
else
inc Test.32;
inc Test.33;
decref Test.29;
let #Derived_gen.7 : [<rnu><null>, C *self *self] = NullPointer;
jump #Derived_gen.0 #Derived_gen.7;
let #Derived_gen.10 : [<rnu><null>, C *self *self] = NullPointer;
jump #Derived_gen.3 #Derived_gen.10;
else
let Test.48 : U8 = 1i64;
let Test.49 : U8 = GetTagId Test.30;
@ -40,8 +40,8 @@ procedure Test.5 (Test.67, Test.68, Test.69):
if Test.50 then
let Test.35 : [<rnu><null>, C *self *self] = UnionAtIndex (Id 1) (Index 0) Test.30;
let Test.36 : [<rnu>C [<rnu><null>, C *self *self] *self, <null>] = UnionAtIndex (Id 1) (Index 1) Test.30;
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique Test.30;
if #Derived_gen.2 then
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.30;
if #Derived_gen.5 then
decref Test.30;
jump Test.41 Test.35 Test.36 Test.31;
else
@ -52,7 +52,7 @@ procedure Test.5 (Test.67, Test.68, Test.69):
else
ret Test.31;
in
jump Test.41 Test.67 Test.68 Test.69;
jump Test.41 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2;
procedure Test.0 ():
let Test.64 : [<rnu><null>, C *self *self] = TagId(1) ;

View file

@ -78,7 +78,7 @@ procedure Test.2 (Test.6):
let Test.31 : Int1 = lowlevel Eq Test.29 Test.30;
if Test.31 then
let Test.7 : [<r>C List *self, C *self] = UnionAtIndex (Id 1) (Index 0) Test.6;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.1:
let Test.8 : Str = CallByName Test.2 Test.7;
let Test.18 : Int1 = CallByName Bool.1;
if Test.18 then
@ -88,17 +88,17 @@ procedure Test.2 (Test.6):
let Test.17 : Str = "foo";
ret Test.17;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.6;
if #Derived_gen.1 then
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique Test.6;
if #Derived_gen.2 then
decref Test.6;
jump #Derived_gen.0;
jump #Derived_gen.1;
else
inc Test.7;
decref Test.6;
jump #Derived_gen.0;
jump #Derived_gen.1;
else
let Test.9 : List [<r>C List [<r>C List *self, C *self], C [<r>C List *self, C *self]] = UnionAtIndex (Id 0) (Index 0) Test.6;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.3:
let Test.24 : {} = Struct {};
let Test.23 : List Str = CallByName List.5 Test.9 Test.24;
let Test.21 : [C {}, C Str] = CallByName List.9 Test.23;
@ -106,14 +106,14 @@ procedure Test.2 (Test.6):
let Test.20 : Str = CallByName Result.5 Test.21 Test.22;
ret Test.20;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique Test.6;
if #Derived_gen.3 then
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique Test.6;
if #Derived_gen.4 then
decref Test.6;
jump #Derived_gen.2;
jump #Derived_gen.3;
else
inc Test.9;
decref Test.6;
jump #Derived_gen.2;
jump #Derived_gen.3;
procedure Test.0 ():
let Test.32 : List [<r>C List [<r>C List *self, C *self], C [<r>C List *self, C *self]] = Array [];

View file

@ -18,7 +18,7 @@ procedure List.66 (#Attr.2, #Attr.3):
let List.537 : Int1 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure List.80 (List.544, List.545, List.546, List.547, List.548):
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.527 List.439 List.440 List.441 List.442 List.443:
let List.529 : Int1 = CallByName Num.22 List.442 List.443;
if List.529 then
@ -31,7 +31,7 @@ procedure List.80 (List.544, List.545, List.546, List.547, List.548):
dec List.439;
ret List.440;
in
jump List.527 List.544 List.545 List.546 List.547 List.548;
jump List.527 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.525 : U64 = 0i64;
@ -54,11 +54,11 @@ procedure Str.3 (#Attr.2, #Attr.3):
procedure Test.1 (Test.5):
ret Test.5;
procedure Test.11 (Test.53, Test.54):
procedure Test.11 (#Derived_gen.7, #Derived_gen.8):
joinpoint Test.27 Test.12 #Attr.12:
let Test.8 : Int1 = UnionAtIndex (Id 2) (Index 1) #Attr.12;
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 2) (Index 0) #Attr.12;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.14:
joinpoint Test.31 Test.29:
let Test.30 : U8 = GetTagId Test.7;
switch Test.30:
@ -85,16 +85,16 @@ procedure Test.11 (Test.53, Test.54):
jump Test.31 Test.32;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
let #Derived_gen.15 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.15 then
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.14;
else
inc Test.7;
decref #Attr.12;
jump #Derived_gen.2;
jump #Derived_gen.14;
in
jump Test.27 Test.53 Test.54;
jump Test.27 #Derived_gen.7 #Derived_gen.8;
procedure Test.2 (Test.13):
ret Test.13;
@ -125,7 +125,7 @@ procedure Test.6 (Test.7, Test.8, Test.5):
procedure Test.9 (Test.10, #Attr.12):
let Test.8 : Int1 = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Test.7 : [<rnw><null>, C *self Int1, C *self Int1] = UnionAtIndex (Id 1) (Index 0) #Attr.12;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.12:
let Test.37 : U8 = GetTagId Test.7;
joinpoint Test.38 Test.36:
switch Test.8:
@ -153,14 +153,14 @@ procedure Test.9 (Test.10, #Attr.12):
jump Test.38 Test.39;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
let #Derived_gen.13 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.13 then
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.12;
else
inc Test.7;
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.12;
procedure Test.0 ():
let Test.41 : Int1 = false;

View file

@ -16,12 +16,12 @@ procedure Dict.36 ():
procedure Dict.4 (Dict.543):
let Dict.97 : U64 = StructAtIndex 3 Dict.543;
let #Derived_gen.2 : List {[], []} = StructAtIndex 0 Dict.543;
dec #Derived_gen.2;
let #Derived_gen.1 : List U64 = StructAtIndex 1 Dict.543;
dec #Derived_gen.1;
let #Derived_gen.0 : List I8 = StructAtIndex 2 Dict.543;
dec #Derived_gen.0;
let #Derived_gen.8 : List {[], []} = StructAtIndex 0 Dict.543;
dec #Derived_gen.8;
let #Derived_gen.7 : List U64 = StructAtIndex 1 Dict.543;
dec #Derived_gen.7;
let #Derived_gen.6 : List I8 = StructAtIndex 2 Dict.543;
dec #Derived_gen.6;
ret Dict.97;
procedure List.11 (List.121, List.122):
@ -50,21 +50,7 @@ procedure List.71 (#Attr.2, #Attr.3):
let List.541 : List U64 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.541;
procedure List.83 (List.545, List.546, List.547):
joinpoint List.523 List.123 List.124 List.125:
let List.531 : U64 = 0i64;
let List.525 : Int1 = CallByName Num.24 List.124 List.531;
if List.525 then
let List.530 : U64 = 1i64;
let List.527 : U64 = CallByName Num.20 List.124 List.530;
let List.528 : List I8 = CallByName List.71 List.125 List.123;
jump List.523 List.123 List.527 List.528;
else
ret List.125;
in
jump List.523 List.545 List.546 List.547;
procedure List.83 (List.553, List.554, List.555):
procedure List.83 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2):
joinpoint List.535 List.123 List.124 List.125:
let List.543 : U64 = 0i64;
let List.537 : Int1 = CallByName Num.24 List.124 List.543;
@ -76,7 +62,21 @@ procedure List.83 (List.553, List.554, List.555):
else
ret List.125;
in
jump List.535 List.553 List.554 List.555;
jump List.535 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2;
procedure List.83 (#Derived_gen.3, #Derived_gen.4, #Derived_gen.5):
joinpoint List.523 List.123 List.124 List.125:
let List.531 : U64 = 0i64;
let List.525 : Int1 = CallByName Num.24 List.124 List.531;
if List.525 then
let List.530 : U64 = 1i64;
let List.527 : U64 = CallByName Num.20 List.124 List.530;
let List.528 : List I8 = CallByName List.71 List.125 List.123;
jump List.523 List.123 List.527 List.528;
else
ret List.125;
in
jump List.523 #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;

View file

@ -37,12 +37,12 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101):
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.234 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.234 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.121 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.121;
let Encode.116 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.116;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -51,221 +51,221 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.13 (#Attr.2, #Attr.3):
let List.622 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.622;
let List.621 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.621;
procedure List.145 (List.146, List.147, List.144):
let List.570 : {List U8, U64} = CallByName TotallyNotJson.237 List.146 List.147 List.144;
let List.569 : {List U8, U64} = CallByName TotallyNotJson.237 List.146 List.147 List.144;
ret List.569;
procedure List.145 (List.146, List.147, List.144):
let List.589 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.589;
procedure List.18 (List.142, List.143, List.144):
let List.550 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.550;
procedure List.18 (List.142, List.143, List.144):
let List.570 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.570;
procedure List.145 (List.146, List.147, List.144):
let List.590 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.590;
procedure List.18 (List.142, List.143, List.144):
let List.551 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.551;
procedure List.18 (List.142, List.143, List.144):
let List.571 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.571;
procedure List.26 (List.159, List.160, List.161):
let List.639 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.642 : U8 = 1i64;
let List.643 : U8 = GetTagId List.639;
let List.644 : Int1 = lowlevel Eq List.642 List.643;
if List.644 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.639;
let List.638 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.641 : U8 = 1i64;
let List.642 : U8 = GetTagId List.638;
let List.643 : Int1 = lowlevel Eq List.641 List.642;
if List.643 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.638;
ret List.162;
else
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.639;
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.638;
ret List.163;
procedure List.31 (#Attr.2, #Attr.3):
let List.604 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.604;
let List.603 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.603;
procedure List.38 (List.298):
let List.612 : U64 = 0i64;
let List.611 : List Str = CallByName List.31 List.298 List.612;
ret List.611;
let List.611 : U64 = 0i64;
let List.610 : List Str = CallByName List.31 List.298 List.611;
ret List.610;
procedure List.4 (List.113, List.114):
let List.547 : U64 = 1i64;
let List.546 : List Str = CallByName List.70 List.113 List.547;
let List.545 : List Str = CallByName List.71 List.546 List.114;
ret List.545;
let List.546 : U64 = 1i64;
let List.545 : List Str = CallByName List.70 List.113 List.546;
let List.544 : List Str = CallByName List.71 List.545 List.114;
ret List.544;
procedure List.4 (List.113, List.114):
let List.550 : U64 = 1i64;
let List.549 : List U8 = CallByName List.70 List.113 List.550;
let List.548 : List U8 = CallByName List.71 List.549 List.114;
ret List.548;
let List.549 : U64 = 1i64;
let List.548 : List U8 = CallByName List.70 List.113 List.549;
let List.547 : List U8 = CallByName List.71 List.548 List.114;
ret List.547;
procedure List.49 (List.376, List.377):
let List.631 : U64 = StructAtIndex 0 List.377;
let List.632 : U64 = 0i64;
let List.629 : Int1 = CallByName Bool.11 List.631 List.632;
if List.629 then
let List.630 : U64 = StructAtIndex 0 List.377;
let List.631 : U64 = 0i64;
let List.628 : Int1 = CallByName Bool.11 List.630 List.631;
if List.628 then
dec List.376;
let List.630 : List U8 = Array [];
ret List.630;
let List.629 : List U8 = Array [];
ret List.629;
else
let List.626 : U64 = StructAtIndex 1 List.377;
let List.627 : U64 = StructAtIndex 0 List.377;
let List.625 : List U8 = CallByName List.72 List.376 List.626 List.627;
ret List.625;
let List.625 : U64 = StructAtIndex 1 List.377;
let List.626 : U64 = StructAtIndex 0 List.377;
let List.624 : List U8 = CallByName List.72 List.376 List.625 List.626;
ret List.624;
procedure List.52 (List.391, List.392):
let List.393 : U64 = CallByName List.6 List.391;
joinpoint List.637 List.394:
let List.635 : U64 = 0i64;
let List.634 : {U64, U64} = Struct {List.394, List.635};
joinpoint List.636 List.394:
let List.634 : U64 = 0i64;
let List.633 : {U64, U64} = Struct {List.394, List.634};
inc List.391;
let List.395 : List U8 = CallByName List.49 List.391 List.634;
let List.633 : U64 = CallByName Num.20 List.393 List.394;
let List.624 : {U64, U64} = Struct {List.633, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.624;
let List.623 : {List U8, List U8} = Struct {List.395, List.396};
ret List.623;
let List.395 : List U8 = CallByName List.49 List.391 List.633;
let List.632 : U64 = CallByName Num.20 List.393 List.394;
let List.623 : {U64, U64} = Struct {List.632, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.623;
let List.622 : {List U8, List U8} = Struct {List.395, List.396};
ret List.622;
in
let List.638 : Int1 = CallByName Num.24 List.393 List.392;
if List.638 then
jump List.637 List.392;
let List.637 : Int1 = CallByName Num.24 List.393 List.392;
if List.637 then
jump List.636 List.392;
else
jump List.637 List.393;
jump List.636 List.393;
procedure List.6 (#Attr.2):
let List.617 : U64 = lowlevel ListLen #Attr.2;
ret List.617;
procedure List.6 (#Attr.2):
let List.618 : U64 = lowlevel ListLen #Attr.2;
ret List.618;
procedure List.6 (#Attr.2):
let List.619 : U64 = lowlevel ListLen #Attr.2;
ret List.619;
procedure List.6 (#Attr.2):
let List.621 : U64 = lowlevel ListLen #Attr.2;
ret List.621;
let List.620 : U64 = lowlevel ListLen #Attr.2;
ret List.620;
procedure List.66 (#Attr.2, #Attr.3):
let List.567 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.567;
let List.566 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.566;
procedure List.66 (#Attr.2, #Attr.3):
let List.587 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.587;
let List.586 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.586;
procedure List.68 (#Attr.2):
let List.614 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.614;
let List.613 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.613;
procedure List.68 (#Attr.2):
let List.616 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.616;
let List.615 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.615;
procedure List.70 (#Attr.2, #Attr.3):
let List.527 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.527;
let List.526 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.526;
procedure List.70 (#Attr.2, #Attr.3):
let List.544 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.544;
let List.543 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.543;
procedure List.71 (#Attr.2, #Attr.3):
let List.525 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.525;
let List.524 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.524;
procedure List.71 (#Attr.2, #Attr.3):
let List.542 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.542;
let List.541 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.541;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.628 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.628;
let List.627 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.627;
procedure List.8 (#Attr.2, #Attr.3):
let List.593 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.593;
let List.592 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.592;
procedure List.8 (#Attr.2, #Attr.3):
let List.601 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.601;
let List.600 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.600;
procedure List.80 (List.675, List.676, List.677, List.678, List.679):
joinpoint List.557 List.439 List.440 List.441 List.442 List.443:
let List.559 : Int1 = CallByName Num.22 List.442 List.443;
if List.559 then
let List.566 : {Str, Str} = CallByName List.66 List.439 List.442;
inc List.566;
let List.560 : {List U8, U64} = CallByName List.145 List.440 List.566 List.441;
let List.563 : U64 = 1i64;
let List.562 : U64 = CallByName Num.19 List.442 List.563;
jump List.557 List.439 List.560 List.441 List.562 List.443;
procedure List.80 (#Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14, #Derived_gen.15):
joinpoint List.556 List.439 List.440 List.441 List.442 List.443:
let List.558 : Int1 = CallByName Num.22 List.442 List.443;
if List.558 then
let List.565 : {Str, Str} = CallByName List.66 List.439 List.442;
inc List.565;
let List.559 : {List U8, U64} = CallByName List.145 List.440 List.565 List.441;
let List.562 : U64 = 1i64;
let List.561 : U64 = CallByName Num.19 List.442 List.562;
jump List.556 List.439 List.559 List.441 List.561 List.443;
else
dec List.439;
ret List.440;
in
jump List.557 List.675 List.676 List.677 List.678 List.679;
jump List.556 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
procedure List.80 (List.692, List.693, List.694, List.695, List.696):
joinpoint List.577 List.439 List.440 List.441 List.442 List.443:
let List.579 : Int1 = CallByName Num.22 List.442 List.443;
if List.579 then
let List.586 : U8 = CallByName List.66 List.439 List.442;
let List.580 : List U8 = CallByName List.145 List.440 List.586 List.441;
let List.583 : U64 = 1i64;
let List.582 : U64 = CallByName Num.19 List.442 List.583;
jump List.577 List.439 List.580 List.441 List.582 List.443;
else
dec List.439;
ret List.440;
in
jump List.577 List.692 List.693 List.694 List.695 List.696;
procedure List.80 (List.728, List.729, List.730, List.731, List.732):
joinpoint List.648 List.439 List.440 List.441 List.442 List.443:
let List.650 : Int1 = CallByName Num.22 List.442 List.443;
if List.650 then
let List.659 : U8 = CallByName List.66 List.439 List.442;
let List.651 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.659;
let List.656 : U8 = 1i64;
let List.657 : U8 = GetTagId List.651;
let List.658 : Int1 = lowlevel Eq List.656 List.657;
if List.658 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.651;
let List.654 : U64 = 1i64;
let List.653 : U64 = CallByName Num.19 List.442 List.654;
jump List.648 List.439 List.444 List.441 List.653 List.443;
procedure List.80 (#Derived_gen.16, #Derived_gen.17, #Derived_gen.18, #Derived_gen.19, #Derived_gen.20):
joinpoint List.647 List.439 List.440 List.441 List.442 List.443:
let List.649 : Int1 = CallByName Num.22 List.442 List.443;
if List.649 then
let List.658 : U8 = CallByName List.66 List.439 List.442;
let List.650 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.658;
let List.655 : U8 = 1i64;
let List.656 : U8 = GetTagId List.650;
let List.657 : Int1 = lowlevel Eq List.655 List.656;
if List.657 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.650;
let List.653 : U64 = 1i64;
let List.652 : U64 = CallByName Num.19 List.442 List.653;
jump List.647 List.439 List.444 List.441 List.652 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.651;
let List.655 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.655;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.650;
let List.654 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.654;
else
dec List.439;
let List.649 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.649;
let List.648 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.648;
in
jump List.648 List.728 List.729 List.730 List.731 List.732;
jump List.647 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20;
procedure List.80 (#Derived_gen.21, #Derived_gen.22, #Derived_gen.23, #Derived_gen.24, #Derived_gen.25):
joinpoint List.576 List.439 List.440 List.441 List.442 List.443:
let List.578 : Int1 = CallByName Num.22 List.442 List.443;
if List.578 then
let List.585 : U8 = CallByName List.66 List.439 List.442;
let List.579 : List U8 = CallByName List.145 List.440 List.585 List.441;
let List.582 : U64 = 1i64;
let List.581 : U64 = CallByName Num.19 List.442 List.582;
jump List.576 List.439 List.579 List.441 List.581 List.443;
else
dec List.439;
ret List.440;
in
jump List.576 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24 #Derived_gen.25;
procedure List.93 (List.436, List.437, List.438):
let List.555 : U64 = 0i64;
let List.556 : U64 = CallByName List.6 List.436;
let List.554 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.555 List.556;
ret List.554;
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.436;
let List.553 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.554 List.555;
ret List.553;
procedure List.93 (List.436, List.437, List.438):
let List.575 : U64 = 0i64;
let List.576 : U64 = CallByName List.6 List.436;
let List.574 : List U8 = CallByName List.80 List.436 List.437 List.438 List.575 List.576;
ret List.574;
let List.574 : U64 = 0i64;
let List.575 : U64 = CallByName List.6 List.436;
let List.573 : List U8 = CallByName List.80 List.436 List.437 List.438 List.574 List.575;
ret List.573;
procedure List.93 (List.436, List.437, List.438):
let List.646 : U64 = 0i64;
let List.647 : U64 = CallByName List.6 List.436;
let List.645 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.646 List.647;
ret List.645;
let List.645 : U64 = 0i64;
let List.646 : U64 = CallByName List.6 List.436;
let List.644 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.645 List.646;
ret List.644;
procedure Num.127 (#Attr.2):
let Num.297 : U8 = lowlevel NumIntCast #Attr.2;
@ -296,20 +296,20 @@ procedure Num.94 (#Attr.2, #Attr.3):
ret Num.302;
procedure Str.12 (#Attr.2):
let Str.313 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.313;
let Str.309 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.309;
procedure Str.4 (#Attr.2, #Attr.3):
let Str.316 : Str = lowlevel StrJoinWith #Attr.2 #Attr.3;
ret Str.316;
let Str.312 : Str = lowlevel StrJoinWith #Attr.2 #Attr.3;
ret Str.312;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
ret Str.307;
procedure Str.55 (#Attr.2):
let Str.319 : List Str = lowlevel StrGraphemes #Attr.2;
ret Str.319;
let Str.315 : List Str = lowlevel StrGraphemes #Attr.2;
ret Str.315;
procedure Str.9 (Str.79):
let Str.305 : U64 = 0i64;
@ -323,8 +323,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.16 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.16;
let #Derived_gen.38 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.38;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;
@ -1215,14 +1215,14 @@ procedure TotallyNotJson.82 (TotallyNotJson.802, TotallyNotJson.803):
procedure TotallyNotJson.832 (TotallyNotJson.1493):
let TotallyNotJson.1494 : List Str = StructAtIndex 1 TotallyNotJson.1493;
let #Derived_gen.14 : List Str = StructAtIndex 0 TotallyNotJson.1493;
dec #Derived_gen.14;
let #Derived_gen.36 : List Str = StructAtIndex 0 TotallyNotJson.1493;
dec #Derived_gen.36;
ret TotallyNotJson.1494;
procedure TotallyNotJson.840 (TotallyNotJson.1214):
let TotallyNotJson.1215 : List Str = StructAtIndex 1 TotallyNotJson.1214;
let #Derived_gen.15 : List Str = StructAtIndex 0 TotallyNotJson.1214;
dec #Derived_gen.15;
let #Derived_gen.37 : List Str = StructAtIndex 0 TotallyNotJson.1214;
dec #Derived_gen.37;
ret TotallyNotJson.1215;
procedure TotallyNotJson.87 (TotallyNotJson.809):
@ -1277,7 +1277,7 @@ procedure TotallyNotJson.95 (TotallyNotJson.829):
dec TotallyNotJson.1489;
ret TotallyNotJson.1488;
procedure TotallyNotJson.96 (TotallyNotJson.1630):
procedure TotallyNotJson.96 (#Derived_gen.32):
joinpoint TotallyNotJson.1496 TotallyNotJson.1168:
let TotallyNotJson.834 : List Str = StructAtIndex 0 TotallyNotJson.1168;
let TotallyNotJson.833 : List Str = StructAtIndex 1 TotallyNotJson.1168;
@ -1313,7 +1313,7 @@ procedure TotallyNotJson.96 (TotallyNotJson.1630):
let TotallyNotJson.1497 : {List Str, List Str} = Struct {TotallyNotJson.834, TotallyNotJson.833};
ret TotallyNotJson.1497;
in
jump TotallyNotJson.1496 TotallyNotJson.1630;
jump TotallyNotJson.1496 #Derived_gen.32;
procedure TotallyNotJson.97 (TotallyNotJson.837):
let TotallyNotJson.838 : List Str = CallByName Str.55 TotallyNotJson.837;
@ -1330,7 +1330,7 @@ procedure TotallyNotJson.97 (TotallyNotJson.837):
dec TotallyNotJson.1210;
ret TotallyNotJson.1209;
procedure TotallyNotJson.98 (TotallyNotJson.1621):
procedure TotallyNotJson.98 (#Derived_gen.10):
joinpoint TotallyNotJson.1217 TotallyNotJson.1169:
let TotallyNotJson.842 : List Str = StructAtIndex 0 TotallyNotJson.1169;
let TotallyNotJson.841 : List Str = StructAtIndex 1 TotallyNotJson.1169;
@ -1366,7 +1366,7 @@ procedure TotallyNotJson.98 (TotallyNotJson.1621):
let TotallyNotJson.1218 : {List Str, List Str} = Struct {TotallyNotJson.842, TotallyNotJson.841};
ret TotallyNotJson.1218;
in
jump TotallyNotJson.1217 TotallyNotJson.1621;
jump TotallyNotJson.1217 #Derived_gen.10;
procedure Test.0 ():
let Test.11 : Str = "foo";

View file

@ -44,12 +44,12 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101):
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.234 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.234 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.122 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.122;
let Encode.117 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.117;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -58,221 +58,221 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.13 (#Attr.2, #Attr.3):
let List.622 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.622;
let List.621 : List Str = lowlevel ListPrepend #Attr.2 #Attr.3;
ret List.621;
procedure List.145 (List.146, List.147, List.144):
let List.570 : {List U8, U64} = CallByName TotallyNotJson.237 List.146 List.147 List.144;
let List.569 : {List U8, U64} = CallByName TotallyNotJson.237 List.146 List.147 List.144;
ret List.569;
procedure List.145 (List.146, List.147, List.144):
let List.589 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.589;
procedure List.18 (List.142, List.143, List.144):
let List.550 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.550;
procedure List.18 (List.142, List.143, List.144):
let List.570 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.570;
procedure List.145 (List.146, List.147, List.144):
let List.590 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.590;
procedure List.18 (List.142, List.143, List.144):
let List.551 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.551;
procedure List.18 (List.142, List.143, List.144):
let List.571 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.571;
procedure List.26 (List.159, List.160, List.161):
let List.639 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.642 : U8 = 1i64;
let List.643 : U8 = GetTagId List.639;
let List.644 : Int1 = lowlevel Eq List.642 List.643;
if List.644 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.639;
let List.638 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.641 : U8 = 1i64;
let List.642 : U8 = GetTagId List.638;
let List.643 : Int1 = lowlevel Eq List.641 List.642;
if List.643 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.638;
ret List.162;
else
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.639;
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.638;
ret List.163;
procedure List.31 (#Attr.2, #Attr.3):
let List.604 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.604;
let List.603 : List Str = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.603;
procedure List.38 (List.298):
let List.612 : U64 = 0i64;
let List.611 : List Str = CallByName List.31 List.298 List.612;
ret List.611;
let List.611 : U64 = 0i64;
let List.610 : List Str = CallByName List.31 List.298 List.611;
ret List.610;
procedure List.4 (List.113, List.114):
let List.547 : U64 = 1i64;
let List.546 : List Str = CallByName List.70 List.113 List.547;
let List.545 : List Str = CallByName List.71 List.546 List.114;
ret List.545;
let List.546 : U64 = 1i64;
let List.545 : List Str = CallByName List.70 List.113 List.546;
let List.544 : List Str = CallByName List.71 List.545 List.114;
ret List.544;
procedure List.4 (List.113, List.114):
let List.550 : U64 = 1i64;
let List.549 : List U8 = CallByName List.70 List.113 List.550;
let List.548 : List U8 = CallByName List.71 List.549 List.114;
ret List.548;
let List.549 : U64 = 1i64;
let List.548 : List U8 = CallByName List.70 List.113 List.549;
let List.547 : List U8 = CallByName List.71 List.548 List.114;
ret List.547;
procedure List.49 (List.376, List.377):
let List.631 : U64 = StructAtIndex 0 List.377;
let List.632 : U64 = 0i64;
let List.629 : Int1 = CallByName Bool.11 List.631 List.632;
if List.629 then
let List.630 : U64 = StructAtIndex 0 List.377;
let List.631 : U64 = 0i64;
let List.628 : Int1 = CallByName Bool.11 List.630 List.631;
if List.628 then
dec List.376;
let List.630 : List U8 = Array [];
ret List.630;
let List.629 : List U8 = Array [];
ret List.629;
else
let List.626 : U64 = StructAtIndex 1 List.377;
let List.627 : U64 = StructAtIndex 0 List.377;
let List.625 : List U8 = CallByName List.72 List.376 List.626 List.627;
ret List.625;
let List.625 : U64 = StructAtIndex 1 List.377;
let List.626 : U64 = StructAtIndex 0 List.377;
let List.624 : List U8 = CallByName List.72 List.376 List.625 List.626;
ret List.624;
procedure List.52 (List.391, List.392):
let List.393 : U64 = CallByName List.6 List.391;
joinpoint List.637 List.394:
let List.635 : U64 = 0i64;
let List.634 : {U64, U64} = Struct {List.394, List.635};
joinpoint List.636 List.394:
let List.634 : U64 = 0i64;
let List.633 : {U64, U64} = Struct {List.394, List.634};
inc List.391;
let List.395 : List U8 = CallByName List.49 List.391 List.634;
let List.633 : U64 = CallByName Num.20 List.393 List.394;
let List.624 : {U64, U64} = Struct {List.633, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.624;
let List.623 : {List U8, List U8} = Struct {List.395, List.396};
ret List.623;
let List.395 : List U8 = CallByName List.49 List.391 List.633;
let List.632 : U64 = CallByName Num.20 List.393 List.394;
let List.623 : {U64, U64} = Struct {List.632, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.623;
let List.622 : {List U8, List U8} = Struct {List.395, List.396};
ret List.622;
in
let List.638 : Int1 = CallByName Num.24 List.393 List.392;
if List.638 then
jump List.637 List.392;
let List.637 : Int1 = CallByName Num.24 List.393 List.392;
if List.637 then
jump List.636 List.392;
else
jump List.637 List.393;
jump List.636 List.393;
procedure List.6 (#Attr.2):
let List.617 : U64 = lowlevel ListLen #Attr.2;
ret List.617;
procedure List.6 (#Attr.2):
let List.618 : U64 = lowlevel ListLen #Attr.2;
ret List.618;
procedure List.6 (#Attr.2):
let List.619 : U64 = lowlevel ListLen #Attr.2;
ret List.619;
procedure List.6 (#Attr.2):
let List.621 : U64 = lowlevel ListLen #Attr.2;
ret List.621;
let List.620 : U64 = lowlevel ListLen #Attr.2;
ret List.620;
procedure List.66 (#Attr.2, #Attr.3):
let List.567 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.567;
let List.566 : {Str, Str} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.566;
procedure List.66 (#Attr.2, #Attr.3):
let List.587 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.587;
let List.586 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.586;
procedure List.68 (#Attr.2):
let List.614 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.614;
let List.613 : List Str = lowlevel ListWithCapacity #Attr.2;
ret List.613;
procedure List.68 (#Attr.2):
let List.616 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.616;
let List.615 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.615;
procedure List.70 (#Attr.2, #Attr.3):
let List.527 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.527;
let List.526 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.526;
procedure List.70 (#Attr.2, #Attr.3):
let List.544 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.544;
let List.543 : List Str = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.543;
procedure List.71 (#Attr.2, #Attr.3):
let List.525 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.525;
let List.524 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.524;
procedure List.71 (#Attr.2, #Attr.3):
let List.542 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.542;
let List.541 : List Str = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.541;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.628 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.628;
let List.627 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.627;
procedure List.8 (#Attr.2, #Attr.3):
let List.593 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.593;
let List.592 : List Str = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.592;
procedure List.8 (#Attr.2, #Attr.3):
let List.601 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.601;
let List.600 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.600;
procedure List.80 (List.675, List.676, List.677, List.678, List.679):
joinpoint List.557 List.439 List.440 List.441 List.442 List.443:
let List.559 : Int1 = CallByName Num.22 List.442 List.443;
if List.559 then
let List.566 : {Str, Str} = CallByName List.66 List.439 List.442;
inc List.566;
let List.560 : {List U8, U64} = CallByName List.145 List.440 List.566 List.441;
let List.563 : U64 = 1i64;
let List.562 : U64 = CallByName Num.19 List.442 List.563;
jump List.557 List.439 List.560 List.441 List.562 List.443;
procedure List.80 (#Derived_gen.15, #Derived_gen.16, #Derived_gen.17, #Derived_gen.18, #Derived_gen.19):
joinpoint List.556 List.439 List.440 List.441 List.442 List.443:
let List.558 : Int1 = CallByName Num.22 List.442 List.443;
if List.558 then
let List.565 : {Str, Str} = CallByName List.66 List.439 List.442;
inc List.565;
let List.559 : {List U8, U64} = CallByName List.145 List.440 List.565 List.441;
let List.562 : U64 = 1i64;
let List.561 : U64 = CallByName Num.19 List.442 List.562;
jump List.556 List.439 List.559 List.441 List.561 List.443;
else
dec List.439;
ret List.440;
in
jump List.557 List.675 List.676 List.677 List.678 List.679;
jump List.556 #Derived_gen.15 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19;
procedure List.80 (List.692, List.693, List.694, List.695, List.696):
joinpoint List.577 List.439 List.440 List.441 List.442 List.443:
let List.579 : Int1 = CallByName Num.22 List.442 List.443;
if List.579 then
let List.586 : U8 = CallByName List.66 List.439 List.442;
let List.580 : List U8 = CallByName List.145 List.440 List.586 List.441;
let List.583 : U64 = 1i64;
let List.582 : U64 = CallByName Num.19 List.442 List.583;
jump List.577 List.439 List.580 List.441 List.582 List.443;
else
dec List.439;
ret List.440;
in
jump List.577 List.692 List.693 List.694 List.695 List.696;
procedure List.80 (List.728, List.729, List.730, List.731, List.732):
joinpoint List.648 List.439 List.440 List.441 List.442 List.443:
let List.650 : Int1 = CallByName Num.22 List.442 List.443;
if List.650 then
let List.659 : U8 = CallByName List.66 List.439 List.442;
let List.651 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.659;
let List.656 : U8 = 1i64;
let List.657 : U8 = GetTagId List.651;
let List.658 : Int1 = lowlevel Eq List.656 List.657;
if List.658 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.651;
let List.654 : U64 = 1i64;
let List.653 : U64 = CallByName Num.19 List.442 List.654;
jump List.648 List.439 List.444 List.441 List.653 List.443;
procedure List.80 (#Derived_gen.20, #Derived_gen.21, #Derived_gen.22, #Derived_gen.23, #Derived_gen.24):
joinpoint List.647 List.439 List.440 List.441 List.442 List.443:
let List.649 : Int1 = CallByName Num.22 List.442 List.443;
if List.649 then
let List.658 : U8 = CallByName List.66 List.439 List.442;
let List.650 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.658;
let List.655 : U8 = 1i64;
let List.656 : U8 = GetTagId List.650;
let List.657 : Int1 = lowlevel Eq List.655 List.656;
if List.657 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.650;
let List.653 : U64 = 1i64;
let List.652 : U64 = CallByName Num.19 List.442 List.653;
jump List.647 List.439 List.444 List.441 List.652 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.651;
let List.655 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.655;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.650;
let List.654 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.654;
else
dec List.439;
let List.649 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.649;
let List.648 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.648;
in
jump List.648 List.728 List.729 List.730 List.731 List.732;
jump List.647 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24;
procedure List.80 (#Derived_gen.25, #Derived_gen.26, #Derived_gen.27, #Derived_gen.28, #Derived_gen.29):
joinpoint List.576 List.439 List.440 List.441 List.442 List.443:
let List.578 : Int1 = CallByName Num.22 List.442 List.443;
if List.578 then
let List.585 : U8 = CallByName List.66 List.439 List.442;
let List.579 : List U8 = CallByName List.145 List.440 List.585 List.441;
let List.582 : U64 = 1i64;
let List.581 : U64 = CallByName Num.19 List.442 List.582;
jump List.576 List.439 List.579 List.441 List.581 List.443;
else
dec List.439;
ret List.440;
in
jump List.576 #Derived_gen.25 #Derived_gen.26 #Derived_gen.27 #Derived_gen.28 #Derived_gen.29;
procedure List.93 (List.436, List.437, List.438):
let List.555 : U64 = 0i64;
let List.556 : U64 = CallByName List.6 List.436;
let List.554 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.555 List.556;
ret List.554;
let List.554 : U64 = 0i64;
let List.555 : U64 = CallByName List.6 List.436;
let List.553 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.554 List.555;
ret List.553;
procedure List.93 (List.436, List.437, List.438):
let List.575 : U64 = 0i64;
let List.576 : U64 = CallByName List.6 List.436;
let List.574 : List U8 = CallByName List.80 List.436 List.437 List.438 List.575 List.576;
ret List.574;
let List.574 : U64 = 0i64;
let List.575 : U64 = CallByName List.6 List.436;
let List.573 : List U8 = CallByName List.80 List.436 List.437 List.438 List.574 List.575;
ret List.573;
procedure List.93 (List.436, List.437, List.438):
let List.646 : U64 = 0i64;
let List.647 : U64 = CallByName List.6 List.436;
let List.645 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.646 List.647;
ret List.645;
let List.645 : U64 = 0i64;
let List.646 : U64 = CallByName List.6 List.436;
let List.644 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.645 List.646;
ret List.644;
procedure Num.127 (#Attr.2):
let Num.297 : U8 = lowlevel NumIntCast #Attr.2;
@ -303,20 +303,20 @@ procedure Num.94 (#Attr.2, #Attr.3):
ret Num.302;
procedure Str.12 (#Attr.2):
let Str.313 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.313;
let Str.309 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.309;
procedure Str.4 (#Attr.2, #Attr.3):
let Str.316 : Str = lowlevel StrJoinWith #Attr.2 #Attr.3;
ret Str.316;
let Str.312 : Str = lowlevel StrJoinWith #Attr.2 #Attr.3;
ret Str.312;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
ret Str.307;
procedure Str.55 (#Attr.2):
let Str.319 : List Str = lowlevel StrGraphemes #Attr.2;
ret Str.319;
let Str.315 : List Str = lowlevel StrGraphemes #Attr.2;
ret Str.315;
procedure Str.9 (Str.79):
let Str.305 : U64 = 0i64;
@ -330,8 +330,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.20 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.20;
let #Derived_gen.42 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.42;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;
@ -1222,14 +1222,14 @@ procedure TotallyNotJson.82 (TotallyNotJson.802, TotallyNotJson.803):
procedure TotallyNotJson.832 (TotallyNotJson.1493):
let TotallyNotJson.1494 : List Str = StructAtIndex 1 TotallyNotJson.1493;
let #Derived_gen.18 : List Str = StructAtIndex 0 TotallyNotJson.1493;
dec #Derived_gen.18;
let #Derived_gen.40 : List Str = StructAtIndex 0 TotallyNotJson.1493;
dec #Derived_gen.40;
ret TotallyNotJson.1494;
procedure TotallyNotJson.840 (TotallyNotJson.1214):
let TotallyNotJson.1215 : List Str = StructAtIndex 1 TotallyNotJson.1214;
let #Derived_gen.19 : List Str = StructAtIndex 0 TotallyNotJson.1214;
dec #Derived_gen.19;
let #Derived_gen.41 : List Str = StructAtIndex 0 TotallyNotJson.1214;
dec #Derived_gen.41;
ret TotallyNotJson.1215;
procedure TotallyNotJson.87 (TotallyNotJson.809):
@ -1284,7 +1284,7 @@ procedure TotallyNotJson.95 (TotallyNotJson.829):
dec TotallyNotJson.1489;
ret TotallyNotJson.1488;
procedure TotallyNotJson.96 (TotallyNotJson.1633):
procedure TotallyNotJson.96 (#Derived_gen.36):
joinpoint TotallyNotJson.1496 TotallyNotJson.1168:
let TotallyNotJson.834 : List Str = StructAtIndex 0 TotallyNotJson.1168;
let TotallyNotJson.833 : List Str = StructAtIndex 1 TotallyNotJson.1168;
@ -1320,7 +1320,7 @@ procedure TotallyNotJson.96 (TotallyNotJson.1633):
let TotallyNotJson.1497 : {List Str, List Str} = Struct {TotallyNotJson.834, TotallyNotJson.833};
ret TotallyNotJson.1497;
in
jump TotallyNotJson.1496 TotallyNotJson.1633;
jump TotallyNotJson.1496 #Derived_gen.36;
procedure TotallyNotJson.97 (TotallyNotJson.837):
let TotallyNotJson.838 : List Str = CallByName Str.55 TotallyNotJson.837;
@ -1337,7 +1337,7 @@ procedure TotallyNotJson.97 (TotallyNotJson.837):
dec TotallyNotJson.1210;
ret TotallyNotJson.1209;
procedure TotallyNotJson.98 (TotallyNotJson.1624):
procedure TotallyNotJson.98 (#Derived_gen.14):
joinpoint TotallyNotJson.1217 TotallyNotJson.1169:
let TotallyNotJson.842 : List Str = StructAtIndex 0 TotallyNotJson.1169;
let TotallyNotJson.841 : List Str = StructAtIndex 1 TotallyNotJson.1169;
@ -1373,7 +1373,7 @@ procedure TotallyNotJson.98 (TotallyNotJson.1624):
let TotallyNotJson.1218 : {List Str, List Str} = Struct {TotallyNotJson.842, TotallyNotJson.841};
ret TotallyNotJson.1218;
in
jump TotallyNotJson.1217 TotallyNotJson.1624;
jump TotallyNotJson.1217 #Derived_gen.14;
procedure Test.0 ():
let Test.11 : Str = "foo";

View file

@ -16,130 +16,130 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.145 (List.146, List.147, List.144):
let List.553 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.553;
let List.552 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.552;
procedure List.18 (List.142, List.143, List.144):
let List.535 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.535;
let List.534 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.534;
procedure List.26 (List.159, List.160, List.161):
let List.570 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.573 : U8 = 1i64;
let List.574 : U8 = GetTagId List.570;
let List.575 : Int1 = lowlevel Eq List.573 List.574;
if List.575 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.570;
let List.569 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.572 : U8 = 1i64;
let List.573 : U8 = GetTagId List.569;
let List.574 : Int1 = lowlevel Eq List.572 List.573;
if List.574 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.569;
ret List.162;
else
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.570;
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.569;
ret List.163;
procedure List.49 (List.376, List.377):
let List.562 : U64 = StructAtIndex 0 List.377;
let List.563 : U64 = 0i64;
let List.560 : Int1 = CallByName Bool.11 List.562 List.563;
if List.560 then
let List.561 : U64 = StructAtIndex 0 List.377;
let List.562 : U64 = 0i64;
let List.559 : Int1 = CallByName Bool.11 List.561 List.562;
if List.559 then
dec List.376;
let List.561 : List U8 = Array [];
ret List.561;
let List.560 : List U8 = Array [];
ret List.560;
else
let List.557 : U64 = StructAtIndex 1 List.377;
let List.558 : U64 = StructAtIndex 0 List.377;
let List.556 : List U8 = CallByName List.72 List.376 List.557 List.558;
ret List.556;
let List.556 : U64 = StructAtIndex 1 List.377;
let List.557 : U64 = StructAtIndex 0 List.377;
let List.555 : List U8 = CallByName List.72 List.376 List.556 List.557;
ret List.555;
procedure List.52 (List.391, List.392):
let List.393 : U64 = CallByName List.6 List.391;
joinpoint List.568 List.394:
let List.566 : U64 = 0i64;
let List.565 : {U64, U64} = Struct {List.394, List.566};
joinpoint List.567 List.394:
let List.565 : U64 = 0i64;
let List.564 : {U64, U64} = Struct {List.394, List.565};
inc List.391;
let List.395 : List U8 = CallByName List.49 List.391 List.565;
let List.564 : U64 = CallByName Num.20 List.393 List.394;
let List.555 : {U64, U64} = Struct {List.564, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.555;
let List.554 : {List U8, List U8} = Struct {List.395, List.396};
ret List.554;
let List.395 : List U8 = CallByName List.49 List.391 List.564;
let List.563 : U64 = CallByName Num.20 List.393 List.394;
let List.554 : {U64, U64} = Struct {List.563, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.554;
let List.553 : {List U8, List U8} = Struct {List.395, List.396};
ret List.553;
in
let List.569 : Int1 = CallByName Num.24 List.393 List.392;
if List.569 then
jump List.568 List.392;
let List.568 : Int1 = CallByName Num.24 List.393 List.392;
if List.568 then
jump List.567 List.392;
else
jump List.568 List.393;
jump List.567 List.393;
procedure List.6 (#Attr.2):
let List.534 : U64 = lowlevel ListLen #Attr.2;
ret List.534;
let List.533 : U64 = lowlevel ListLen #Attr.2;
ret List.533;
procedure List.66 (#Attr.2, #Attr.3):
let List.551 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.551;
let List.550 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.550;
procedure List.68 (#Attr.2):
let List.532 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.532;
let List.531 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.531;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.559 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.559;
let List.558 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.558;
procedure List.8 (#Attr.2, #Attr.3):
let List.530 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.530;
let List.529 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.529;
procedure List.80 (List.598, List.599, List.600, List.601, List.602):
joinpoint List.541 List.439 List.440 List.441 List.442 List.443:
let List.543 : Int1 = CallByName Num.22 List.442 List.443;
if List.543 then
let List.550 : U8 = CallByName List.66 List.439 List.442;
let List.544 : List U8 = CallByName List.145 List.440 List.550 List.441;
let List.547 : U64 = 1i64;
let List.546 : U64 = CallByName Num.19 List.442 List.547;
jump List.541 List.439 List.544 List.441 List.546 List.443;
procedure List.80 (#Derived_gen.3, #Derived_gen.4, #Derived_gen.5, #Derived_gen.6, #Derived_gen.7):
joinpoint List.578 List.439 List.440 List.441 List.442 List.443:
let List.580 : Int1 = CallByName Num.22 List.442 List.443;
if List.580 then
let List.589 : U8 = CallByName List.66 List.439 List.442;
let List.581 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.589;
let List.586 : U8 = 1i64;
let List.587 : U8 = GetTagId List.581;
let List.588 : Int1 = lowlevel Eq List.586 List.587;
if List.588 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.581;
let List.584 : U64 = 1i64;
let List.583 : U64 = CallByName Num.19 List.442 List.584;
jump List.578 List.439 List.444 List.441 List.583 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.581;
let List.585 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.585;
else
dec List.439;
let List.579 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.579;
in
jump List.578 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5 #Derived_gen.6 #Derived_gen.7;
procedure List.80 (#Derived_gen.8, #Derived_gen.9, #Derived_gen.10, #Derived_gen.11, #Derived_gen.12):
joinpoint List.540 List.439 List.440 List.441 List.442 List.443:
let List.542 : Int1 = CallByName Num.22 List.442 List.443;
if List.542 then
let List.549 : U8 = CallByName List.66 List.439 List.442;
let List.543 : List U8 = CallByName List.145 List.440 List.549 List.441;
let List.546 : U64 = 1i64;
let List.545 : U64 = CallByName Num.19 List.442 List.546;
jump List.540 List.439 List.543 List.441 List.545 List.443;
else
dec List.439;
ret List.440;
in
jump List.541 List.598 List.599 List.600 List.601 List.602;
procedure List.80 (List.621, List.622, List.623, List.624, List.625):
joinpoint List.579 List.439 List.440 List.441 List.442 List.443:
let List.581 : Int1 = CallByName Num.22 List.442 List.443;
if List.581 then
let List.590 : U8 = CallByName List.66 List.439 List.442;
let List.582 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.590;
let List.587 : U8 = 1i64;
let List.588 : U8 = GetTagId List.582;
let List.589 : Int1 = lowlevel Eq List.587 List.588;
if List.589 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.582;
let List.585 : U64 = 1i64;
let List.584 : U64 = CallByName Num.19 List.442 List.585;
jump List.579 List.439 List.444 List.441 List.584 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.582;
let List.586 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.586;
else
dec List.439;
let List.580 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.580;
in
jump List.579 List.621 List.622 List.623 List.624 List.625;
jump List.540 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12;
procedure List.93 (List.436, List.437, List.438):
let List.539 : U64 = 0i64;
let List.540 : U64 = CallByName List.6 List.436;
let List.538 : List U8 = CallByName List.80 List.436 List.437 List.438 List.539 List.540;
ret List.538;
let List.538 : U64 = 0i64;
let List.539 : U64 = CallByName List.6 List.436;
let List.537 : List U8 = CallByName List.80 List.436 List.437 List.438 List.538 List.539;
ret List.537;
procedure List.93 (List.436, List.437, List.438):
let List.577 : U64 = 0i64;
let List.578 : U64 = CallByName List.6 List.436;
let List.576 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.577 List.578;
ret List.576;
let List.576 : U64 = 0i64;
let List.577 : U64 = CallByName List.6 List.436;
let List.575 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.576 List.577;
ret List.575;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.297 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
@ -166,8 +166,8 @@ procedure Num.94 (#Attr.2, #Attr.3):
ret Num.294;
procedure Str.12 (#Attr.2):
let Str.312 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.312;
let Str.308 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.308;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
@ -185,8 +185,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.0 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.0;
let #Derived_gen.13 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.13;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;

View file

@ -31,12 +31,12 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101):
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.121 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.121;
let Encode.116 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.116;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -45,182 +45,182 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.145 (List.146, List.147, List.144):
let List.568 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.568;
let List.567 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.567;
procedure List.145 (List.146, List.147, List.144):
let List.588 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.588;
let List.587 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.587;
procedure List.18 (List.142, List.143, List.144):
let List.549 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.549;
let List.548 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.548;
procedure List.18 (List.142, List.143, List.144):
let List.569 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.569;
let List.568 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.568;
procedure List.26 (List.159, List.160, List.161):
let List.619 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.622 : U8 = 1i64;
let List.623 : U8 = GetTagId List.619;
let List.624 : Int1 = lowlevel Eq List.622 List.623;
if List.624 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.619;
let List.618 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.621 : U8 = 1i64;
let List.622 : U8 = GetTagId List.618;
let List.623 : Int1 = lowlevel Eq List.621 List.622;
if List.623 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.618;
ret List.162;
else
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.619;
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.618;
ret List.163;
procedure List.4 (List.113, List.114):
let List.548 : U64 = 1i64;
let List.547 : List U8 = CallByName List.70 List.113 List.548;
let List.546 : List U8 = CallByName List.71 List.547 List.114;
ret List.546;
let List.547 : U64 = 1i64;
let List.546 : List U8 = CallByName List.70 List.113 List.547;
let List.545 : List U8 = CallByName List.71 List.546 List.114;
ret List.545;
procedure List.49 (List.376, List.377):
let List.611 : U64 = StructAtIndex 0 List.377;
let List.612 : U64 = 0i64;
let List.609 : Int1 = CallByName Bool.11 List.611 List.612;
if List.609 then
let List.610 : U64 = StructAtIndex 0 List.377;
let List.611 : U64 = 0i64;
let List.608 : Int1 = CallByName Bool.11 List.610 List.611;
if List.608 then
dec List.376;
let List.610 : List U8 = Array [];
ret List.610;
let List.609 : List U8 = Array [];
ret List.609;
else
let List.606 : U64 = StructAtIndex 1 List.377;
let List.607 : U64 = StructAtIndex 0 List.377;
let List.605 : List U8 = CallByName List.72 List.376 List.606 List.607;
ret List.605;
let List.605 : U64 = StructAtIndex 1 List.377;
let List.606 : U64 = StructAtIndex 0 List.377;
let List.604 : List U8 = CallByName List.72 List.376 List.605 List.606;
ret List.604;
procedure List.52 (List.391, List.392):
let List.393 : U64 = CallByName List.6 List.391;
joinpoint List.617 List.394:
let List.615 : U64 = 0i64;
let List.614 : {U64, U64} = Struct {List.394, List.615};
joinpoint List.616 List.394:
let List.614 : U64 = 0i64;
let List.613 : {U64, U64} = Struct {List.394, List.614};
inc List.391;
let List.395 : List U8 = CallByName List.49 List.391 List.614;
let List.613 : U64 = CallByName Num.20 List.393 List.394;
let List.604 : {U64, U64} = Struct {List.613, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.604;
let List.603 : {List U8, List U8} = Struct {List.395, List.396};
ret List.603;
let List.395 : List U8 = CallByName List.49 List.391 List.613;
let List.612 : U64 = CallByName Num.20 List.393 List.394;
let List.603 : {U64, U64} = Struct {List.612, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.603;
let List.602 : {List U8, List U8} = Struct {List.395, List.396};
ret List.602;
in
let List.618 : Int1 = CallByName Num.24 List.393 List.392;
if List.618 then
jump List.617 List.392;
let List.617 : Int1 = CallByName Num.24 List.393 List.392;
if List.617 then
jump List.616 List.392;
else
jump List.617 List.393;
jump List.616 List.393;
procedure List.6 (#Attr.2):
let List.589 : U64 = lowlevel ListLen #Attr.2;
ret List.589;
let List.588 : U64 = lowlevel ListLen #Attr.2;
ret List.588;
procedure List.6 (#Attr.2):
let List.591 : U64 = lowlevel ListLen #Attr.2;
ret List.591;
let List.590 : U64 = lowlevel ListLen #Attr.2;
ret List.590;
procedure List.66 (#Attr.2, #Attr.3):
let List.565 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.565;
let List.564 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.585 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.585;
let List.584 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.584;
procedure List.68 (#Attr.2):
let List.602 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.602;
let List.601 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.601;
procedure List.70 (#Attr.2, #Attr.3):
let List.527 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.527;
let List.526 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.526;
procedure List.71 (#Attr.2, #Attr.3):
let List.525 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.525;
let List.524 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.524;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.608 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.608;
let List.607 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.607;
procedure List.8 (#Attr.2, #Attr.3):
let List.600 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.600;
let List.599 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.599;
procedure List.80 (List.649, List.650, List.651, List.652, List.653):
joinpoint List.555 List.439 List.440 List.441 List.442 List.443:
let List.557 : Int1 = CallByName Num.22 List.442 List.443;
if List.557 then
let List.564 : Str = CallByName List.66 List.439 List.442;
inc List.564;
let List.558 : {List U8, U64} = CallByName List.145 List.440 List.564 List.441;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.19 List.442 List.561;
jump List.555 List.439 List.558 List.441 List.560 List.443;
procedure List.80 (#Derived_gen.10, #Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14):
joinpoint List.554 List.439 List.440 List.441 List.442 List.443:
let List.556 : Int1 = CallByName Num.22 List.442 List.443;
if List.556 then
let List.563 : Str = CallByName List.66 List.439 List.442;
inc List.563;
let List.557 : {List U8, U64} = CallByName List.145 List.440 List.563 List.441;
let List.560 : U64 = 1i64;
let List.559 : U64 = CallByName Num.19 List.442 List.560;
jump List.554 List.439 List.557 List.441 List.559 List.443;
else
dec List.439;
ret List.440;
in
jump List.555 List.649 List.650 List.651 List.652 List.653;
jump List.554 #Derived_gen.10 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14;
procedure List.80 (List.666, List.667, List.668, List.669, List.670):
joinpoint List.575 List.439 List.440 List.441 List.442 List.443:
let List.577 : Int1 = CallByName Num.22 List.442 List.443;
if List.577 then
let List.584 : U8 = CallByName List.66 List.439 List.442;
let List.578 : List U8 = CallByName List.145 List.440 List.584 List.441;
let List.581 : U64 = 1i64;
let List.580 : U64 = CallByName Num.19 List.442 List.581;
jump List.575 List.439 List.578 List.441 List.580 List.443;
procedure List.80 (#Derived_gen.18, #Derived_gen.19, #Derived_gen.20, #Derived_gen.21, #Derived_gen.22):
joinpoint List.574 List.439 List.440 List.441 List.442 List.443:
let List.576 : Int1 = CallByName Num.22 List.442 List.443;
if List.576 then
let List.583 : U8 = CallByName List.66 List.439 List.442;
let List.577 : List U8 = CallByName List.145 List.440 List.583 List.441;
let List.580 : U64 = 1i64;
let List.579 : U64 = CallByName Num.19 List.442 List.580;
jump List.574 List.439 List.577 List.441 List.579 List.443;
else
dec List.439;
ret List.440;
in
jump List.575 List.666 List.667 List.668 List.669 List.670;
jump List.574 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22;
procedure List.80 (List.693, List.694, List.695, List.696, List.697):
joinpoint List.628 List.439 List.440 List.441 List.442 List.443:
let List.630 : Int1 = CallByName Num.22 List.442 List.443;
if List.630 then
let List.639 : U8 = CallByName List.66 List.439 List.442;
let List.631 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.639;
let List.636 : U8 = 1i64;
let List.637 : U8 = GetTagId List.631;
let List.638 : Int1 = lowlevel Eq List.636 List.637;
if List.638 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.631;
let List.634 : U64 = 1i64;
let List.633 : U64 = CallByName Num.19 List.442 List.634;
jump List.628 List.439 List.444 List.441 List.633 List.443;
procedure List.80 (#Derived_gen.29, #Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33):
joinpoint List.627 List.439 List.440 List.441 List.442 List.443:
let List.629 : Int1 = CallByName Num.22 List.442 List.443;
if List.629 then
let List.638 : U8 = CallByName List.66 List.439 List.442;
let List.630 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.638;
let List.635 : U8 = 1i64;
let List.636 : U8 = GetTagId List.630;
let List.637 : Int1 = lowlevel Eq List.635 List.636;
if List.637 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.630;
let List.633 : U64 = 1i64;
let List.632 : U64 = CallByName Num.19 List.442 List.633;
jump List.627 List.439 List.444 List.441 List.632 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.631;
let List.635 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.635;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.630;
let List.634 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.634;
else
dec List.439;
let List.629 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.629;
let List.628 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.628;
in
jump List.628 List.693 List.694 List.695 List.696 List.697;
jump List.627 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
procedure List.93 (List.436, List.437, List.438):
let List.553 : U64 = 0i64;
let List.554 : U64 = CallByName List.6 List.436;
let List.552 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.553 List.554;
ret List.552;
let List.552 : U64 = 0i64;
let List.553 : U64 = CallByName List.6 List.436;
let List.551 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.552 List.553;
ret List.551;
procedure List.93 (List.436, List.437, List.438):
let List.573 : U64 = 0i64;
let List.574 : U64 = CallByName List.6 List.436;
let List.572 : List U8 = CallByName List.80 List.436 List.437 List.438 List.573 List.574;
ret List.572;
let List.572 : U64 = 0i64;
let List.573 : U64 = CallByName List.6 List.436;
let List.571 : List U8 = CallByName List.80 List.436 List.437 List.438 List.572 List.573;
ret List.571;
procedure List.93 (List.436, List.437, List.438):
let List.626 : U64 = 0i64;
let List.627 : U64 = CallByName List.6 List.436;
let List.625 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.626 List.627;
ret List.625;
let List.625 : U64 = 0i64;
let List.626 : U64 = CallByName List.6 List.436;
let List.624 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.625 List.626;
ret List.624;
procedure Num.127 (#Attr.2):
let Num.299 : U8 = lowlevel NumIntCast #Attr.2;
@ -251,8 +251,8 @@ procedure Num.94 (#Attr.2, #Attr.3):
ret Num.304;
procedure Str.12 (#Attr.2):
let Str.313 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.313;
let Str.309 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.309;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
@ -270,8 +270,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.14 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.14;
let #Derived_gen.34 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.34;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;

View file

@ -34,12 +34,12 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101):
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.122 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.122;
let Encode.117 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.117;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -48,182 +48,182 @@ procedure Encode.26 (Encode.105, Encode.106):
ret Encode.108;
procedure List.145 (List.146, List.147, List.144):
let List.568 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.568;
let List.567 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.567;
procedure List.145 (List.146, List.147, List.144):
let List.588 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.588;
let List.587 : List U8 = CallByName TotallyNotJson.215 List.146 List.147;
ret List.587;
procedure List.18 (List.142, List.143, List.144):
let List.549 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.549;
let List.548 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.548;
procedure List.18 (List.142, List.143, List.144):
let List.569 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.569;
let List.568 : List U8 = CallByName List.93 List.142 List.143 List.144;
ret List.568;
procedure List.26 (List.159, List.160, List.161):
let List.619 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.622 : U8 = 1i64;
let List.623 : U8 = GetTagId List.619;
let List.624 : Int1 = lowlevel Eq List.622 List.623;
if List.624 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.619;
let List.618 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.93 List.159 List.160 List.161;
let List.621 : U8 = 1i64;
let List.622 : U8 = GetTagId List.618;
let List.623 : Int1 = lowlevel Eq List.621 List.622;
if List.623 then
let List.162 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.618;
ret List.162;
else
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.619;
let List.163 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.618;
ret List.163;
procedure List.4 (List.113, List.114):
let List.548 : U64 = 1i64;
let List.547 : List U8 = CallByName List.70 List.113 List.548;
let List.546 : List U8 = CallByName List.71 List.547 List.114;
ret List.546;
let List.547 : U64 = 1i64;
let List.546 : List U8 = CallByName List.70 List.113 List.547;
let List.545 : List U8 = CallByName List.71 List.546 List.114;
ret List.545;
procedure List.49 (List.376, List.377):
let List.611 : U64 = StructAtIndex 0 List.377;
let List.612 : U64 = 0i64;
let List.609 : Int1 = CallByName Bool.11 List.611 List.612;
if List.609 then
let List.610 : U64 = StructAtIndex 0 List.377;
let List.611 : U64 = 0i64;
let List.608 : Int1 = CallByName Bool.11 List.610 List.611;
if List.608 then
dec List.376;
let List.610 : List U8 = Array [];
ret List.610;
let List.609 : List U8 = Array [];
ret List.609;
else
let List.606 : U64 = StructAtIndex 1 List.377;
let List.607 : U64 = StructAtIndex 0 List.377;
let List.605 : List U8 = CallByName List.72 List.376 List.606 List.607;
ret List.605;
let List.605 : U64 = StructAtIndex 1 List.377;
let List.606 : U64 = StructAtIndex 0 List.377;
let List.604 : List U8 = CallByName List.72 List.376 List.605 List.606;
ret List.604;
procedure List.52 (List.391, List.392):
let List.393 : U64 = CallByName List.6 List.391;
joinpoint List.617 List.394:
let List.615 : U64 = 0i64;
let List.614 : {U64, U64} = Struct {List.394, List.615};
joinpoint List.616 List.394:
let List.614 : U64 = 0i64;
let List.613 : {U64, U64} = Struct {List.394, List.614};
inc List.391;
let List.395 : List U8 = CallByName List.49 List.391 List.614;
let List.613 : U64 = CallByName Num.20 List.393 List.394;
let List.604 : {U64, U64} = Struct {List.613, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.604;
let List.603 : {List U8, List U8} = Struct {List.395, List.396};
ret List.603;
let List.395 : List U8 = CallByName List.49 List.391 List.613;
let List.612 : U64 = CallByName Num.20 List.393 List.394;
let List.603 : {U64, U64} = Struct {List.612, List.394};
let List.396 : List U8 = CallByName List.49 List.391 List.603;
let List.602 : {List U8, List U8} = Struct {List.395, List.396};
ret List.602;
in
let List.618 : Int1 = CallByName Num.24 List.393 List.392;
if List.618 then
jump List.617 List.392;
let List.617 : Int1 = CallByName Num.24 List.393 List.392;
if List.617 then
jump List.616 List.392;
else
jump List.617 List.393;
jump List.616 List.393;
procedure List.6 (#Attr.2):
let List.589 : U64 = lowlevel ListLen #Attr.2;
ret List.589;
let List.588 : U64 = lowlevel ListLen #Attr.2;
ret List.588;
procedure List.6 (#Attr.2):
let List.591 : U64 = lowlevel ListLen #Attr.2;
ret List.591;
let List.590 : U64 = lowlevel ListLen #Attr.2;
ret List.590;
procedure List.66 (#Attr.2, #Attr.3):
let List.565 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.565;
let List.564 : Str = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.564;
procedure List.66 (#Attr.2, #Attr.3):
let List.585 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.585;
let List.584 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.584;
procedure List.68 (#Attr.2):
let List.602 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.602;
let List.601 : List U8 = lowlevel ListWithCapacity #Attr.2;
ret List.601;
procedure List.70 (#Attr.2, #Attr.3):
let List.527 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.527;
let List.526 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.526;
procedure List.71 (#Attr.2, #Attr.3):
let List.525 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.525;
let List.524 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.524;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.608 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.608;
let List.607 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.607;
procedure List.8 (#Attr.2, #Attr.3):
let List.600 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.600;
let List.599 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.599;
procedure List.80 (List.649, List.650, List.651, List.652, List.653):
joinpoint List.555 List.439 List.440 List.441 List.442 List.443:
let List.557 : Int1 = CallByName Num.22 List.442 List.443;
if List.557 then
let List.564 : Str = CallByName List.66 List.439 List.442;
inc List.564;
let List.558 : {List U8, U64} = CallByName List.145 List.440 List.564 List.441;
let List.561 : U64 = 1i64;
let List.560 : U64 = CallByName Num.19 List.442 List.561;
jump List.555 List.439 List.558 List.441 List.560 List.443;
procedure List.80 (#Derived_gen.20, #Derived_gen.21, #Derived_gen.22, #Derived_gen.23, #Derived_gen.24):
joinpoint List.574 List.439 List.440 List.441 List.442 List.443:
let List.576 : Int1 = CallByName Num.22 List.442 List.443;
if List.576 then
let List.583 : U8 = CallByName List.66 List.439 List.442;
let List.577 : List U8 = CallByName List.145 List.440 List.583 List.441;
let List.580 : U64 = 1i64;
let List.579 : U64 = CallByName Num.19 List.442 List.580;
jump List.574 List.439 List.577 List.441 List.579 List.443;
else
dec List.439;
ret List.440;
in
jump List.555 List.649 List.650 List.651 List.652 List.653;
jump List.574 #Derived_gen.20 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24;
procedure List.80 (List.666, List.667, List.668, List.669, List.670):
joinpoint List.575 List.439 List.440 List.441 List.442 List.443:
let List.577 : Int1 = CallByName Num.22 List.442 List.443;
if List.577 then
let List.584 : U8 = CallByName List.66 List.439 List.442;
let List.578 : List U8 = CallByName List.145 List.440 List.584 List.441;
let List.581 : U64 = 1i64;
let List.580 : U64 = CallByName Num.19 List.442 List.581;
jump List.575 List.439 List.578 List.441 List.580 List.443;
else
dec List.439;
ret List.440;
in
jump List.575 List.666 List.667 List.668 List.669 List.670;
procedure List.80 (List.693, List.694, List.695, List.696, List.697):
joinpoint List.628 List.439 List.440 List.441 List.442 List.443:
let List.630 : Int1 = CallByName Num.22 List.442 List.443;
if List.630 then
let List.639 : U8 = CallByName List.66 List.439 List.442;
let List.631 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.639;
let List.636 : U8 = 1i64;
let List.637 : U8 = GetTagId List.631;
let List.638 : Int1 = lowlevel Eq List.636 List.637;
if List.638 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.631;
let List.634 : U64 = 1i64;
let List.633 : U64 = CallByName Num.19 List.442 List.634;
jump List.628 List.439 List.444 List.441 List.633 List.443;
procedure List.80 (#Derived_gen.25, #Derived_gen.26, #Derived_gen.27, #Derived_gen.28, #Derived_gen.29):
joinpoint List.627 List.439 List.440 List.441 List.442 List.443:
let List.629 : Int1 = CallByName Num.22 List.442 List.443;
if List.629 then
let List.638 : U8 = CallByName List.66 List.439 List.442;
let List.630 : [C {U64, Int1}, C {U64, Int1}] = CallByName TotallyNotJson.189 List.440 List.638;
let List.635 : U8 = 1i64;
let List.636 : U8 = GetTagId List.630;
let List.637 : Int1 = lowlevel Eq List.635 List.636;
if List.637 then
let List.444 : {U64, Int1} = UnionAtIndex (Id 1) (Index 0) List.630;
let List.633 : U64 = 1i64;
let List.632 : U64 = CallByName Num.19 List.442 List.633;
jump List.627 List.439 List.444 List.441 List.632 List.443;
else
dec List.439;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.631;
let List.635 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.635;
let List.445 : {U64, Int1} = UnionAtIndex (Id 0) (Index 0) List.630;
let List.634 : [C {U64, Int1}, C {U64, Int1}] = TagId(0) List.445;
ret List.634;
else
dec List.439;
let List.629 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.629;
let List.628 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.628;
in
jump List.628 List.693 List.694 List.695 List.696 List.697;
jump List.627 #Derived_gen.25 #Derived_gen.26 #Derived_gen.27 #Derived_gen.28 #Derived_gen.29;
procedure List.80 (#Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33, #Derived_gen.34):
joinpoint List.554 List.439 List.440 List.441 List.442 List.443:
let List.556 : Int1 = CallByName Num.22 List.442 List.443;
if List.556 then
let List.563 : Str = CallByName List.66 List.439 List.442;
inc List.563;
let List.557 : {List U8, U64} = CallByName List.145 List.440 List.563 List.441;
let List.560 : U64 = 1i64;
let List.559 : U64 = CallByName Num.19 List.442 List.560;
jump List.554 List.439 List.557 List.441 List.559 List.443;
else
dec List.439;
ret List.440;
in
jump List.554 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33 #Derived_gen.34;
procedure List.93 (List.436, List.437, List.438):
let List.553 : U64 = 0i64;
let List.554 : U64 = CallByName List.6 List.436;
let List.552 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.553 List.554;
ret List.552;
let List.552 : U64 = 0i64;
let List.553 : U64 = CallByName List.6 List.436;
let List.551 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.552 List.553;
ret List.551;
procedure List.93 (List.436, List.437, List.438):
let List.573 : U64 = 0i64;
let List.574 : U64 = CallByName List.6 List.436;
let List.572 : List U8 = CallByName List.80 List.436 List.437 List.438 List.573 List.574;
ret List.572;
let List.572 : U64 = 0i64;
let List.573 : U64 = CallByName List.6 List.436;
let List.571 : List U8 = CallByName List.80 List.436 List.437 List.438 List.572 List.573;
ret List.571;
procedure List.93 (List.436, List.437, List.438):
let List.626 : U64 = 0i64;
let List.627 : U64 = CallByName List.6 List.436;
let List.625 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.626 List.627;
ret List.625;
let List.625 : U64 = 0i64;
let List.626 : U64 = CallByName List.6 List.436;
let List.624 : [C {U64, Int1}, C {U64, Int1}] = CallByName List.80 List.436 List.437 List.438 List.625 List.626;
ret List.624;
procedure Num.127 (#Attr.2):
let Num.299 : U8 = lowlevel NumIntCast #Attr.2;
@ -254,8 +254,8 @@ procedure Num.94 (#Attr.2, #Attr.3):
ret Num.304;
procedure Str.12 (#Attr.2):
let Str.313 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.313;
let Str.309 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.309;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
@ -273,8 +273,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.15 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.15;
let #Derived_gen.35 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.35;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;

View file

@ -6,7 +6,7 @@ procedure Num.21 (#Attr.2, #Attr.3):
let Num.292 : I64 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.292;
procedure Test.1 (Test.15, Test.16):
procedure Test.1 (#Derived_gen.0, #Derived_gen.1):
joinpoint Test.7 Test.2 Test.3:
let Test.13 : I64 = 0i64;
let Test.14 : Int1 = lowlevel Eq Test.13 Test.2;
@ -18,7 +18,7 @@ procedure Test.1 (Test.15, Test.16):
let Test.11 : I64 = CallByName Num.21 Test.2 Test.3;
jump Test.7 Test.10 Test.11;
in
jump Test.7 Test.15 Test.16;
jump Test.7 #Derived_gen.0 #Derived_gen.1;
procedure Test.0 ():
let Test.5 : I64 = 10i64;

View file

@ -9,7 +9,7 @@ procedure Num.19 (#Attr.2, #Attr.3):
procedure Test.3 (Test.4):
ret Test.4;
procedure Test.0 (Test.14):
procedure Test.0 (#Derived_gen.0):
joinpoint Test.5 Test.1:
joinpoint Test.10 Test.2:
let Test.8 : I64 = 1i64;
@ -31,4 +31,4 @@ procedure Test.0 (Test.14):
let Test.9 : Int1 = true;
jump Test.10 Test.9;
in
jump Test.5 Test.14;
jump Test.5 #Derived_gen.0;

View file

@ -34,7 +34,7 @@ procedure Test.8 (Test.9):
let Test.23 : I64 = CallByName Num.19 Test.9 Test.24;
ret Test.23;
procedure Test.0 (Test.30):
procedure Test.0 (#Derived_gen.0):
joinpoint Test.11 Test.1:
let Test.25 : I64 = 1i64;
let Test.13 : I64 = CallByName Num.19 Test.1 Test.25;
@ -57,4 +57,4 @@ procedure Test.0 (Test.30):
ret Test.12;
in
jump Test.11 Test.30;
jump Test.11 #Derived_gen.0;

View file

@ -17,7 +17,7 @@ procedure Test.4 (Test.5, #Attr.12):
let Test.16 : I64 = CallByName Num.19 Test.5 Test.1;
ret Test.16;
procedure Test.0 (Test.25):
procedure Test.0 (#Derived_gen.0):
joinpoint Test.7 Test.1:
let Test.20 : I64 = 1i64;
let Test.9 : I64 = CallByName Num.19 Test.1 Test.20;
@ -33,4 +33,4 @@ procedure Test.0 (Test.25):
ret Test.8;
in
jump Test.7 Test.25;
jump Test.7 #Derived_gen.0;

View file

@ -2,7 +2,7 @@ procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.23;
procedure Test.2 (Test.19):
procedure Test.2 (#Derived_gen.0):
joinpoint Test.13 Test.7:
let Test.16 : U8 = 1i64;
let Test.17 : U8 = GetTagId Test.7;
@ -13,8 +13,8 @@ procedure Test.2 (Test.19):
ret Test.14;
else
let Test.5 : [<rnu><null>, C *self] = UnionAtIndex (Id 0) (Index 0) Test.7;
let #Derived_gen.0 : Int1 = lowlevel RefCountIsUnique Test.7;
if #Derived_gen.0 then
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.7;
if #Derived_gen.1 then
decref Test.7;
jump Test.13 Test.5;
else
@ -22,7 +22,7 @@ procedure Test.2 (Test.19):
decref Test.7;
jump Test.13 Test.5;
in
jump Test.13 Test.19;
jump Test.13 #Derived_gen.0;
procedure Test.0 ():
let Test.12 : [<rnu><null>, C *self] = TagId(1) ;

View file

@ -1,30 +1,30 @@
procedure Bool.1 ():
let Bool.55 : Int1 = false;
ret Bool.55;
let Bool.51 : Int1 = false;
ret Bool.51;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.23;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.46 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.46;
let Bool.42 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.42;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.67 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.67;
let Bool.57 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.57;
procedure Bool.2 ():
let Bool.54 : Int1 = true;
ret Bool.54;
let Bool.50 : Int1 = true;
ret Bool.50;
procedure Bool.3 (#Attr.2, #Attr.3):
let Bool.37 : Int1 = lowlevel And #Attr.2 #Attr.3;
ret Bool.37;
let Bool.33 : Int1 = lowlevel And #Attr.2 #Attr.3;
ret Bool.33;
procedure Bool.4 (#Attr.2, #Attr.3):
let Bool.57 : Int1 = lowlevel Or #Attr.2 #Attr.3;
ret Bool.57;
let Bool.53 : Int1 = lowlevel Or #Attr.2 #Attr.3;
ret Bool.53;
procedure Decode.24 (Decode.101):
ret Decode.101;
@ -65,151 +65,151 @@ procedure Decode.27 (Decode.107, Decode.108):
ret Decode.123;
procedure List.1 (List.96):
let List.590 : U64 = CallByName List.6 List.96;
let List.588 : U64 = CallByName List.6 List.96;
dec List.96;
let List.591 : U64 = 0i64;
let List.589 : Int1 = CallByName Bool.11 List.590 List.591;
ret List.589;
let List.589 : U64 = 0i64;
let List.587 : Int1 = CallByName Bool.11 List.588 List.589;
ret List.587;
procedure List.2 (List.97, List.98):
let List.573 : U64 = CallByName List.6 List.97;
let List.570 : Int1 = CallByName Num.22 List.98 List.573;
if List.570 then
let List.572 : U8 = CallByName List.66 List.97 List.98;
let List.571 : U64 = CallByName List.6 List.97;
let List.568 : Int1 = CallByName Num.22 List.98 List.571;
if List.568 then
let List.570 : U8 = CallByName List.66 List.97 List.98;
dec List.97;
let List.571 : [C {}, C U8] = TagId(1) List.572;
ret List.571;
let List.569 : [C {}, C U8] = TagId(1) List.570;
ret List.569;
else
dec List.97;
let List.569 : {} = Struct {};
let List.568 : [C {}, C U8] = TagId(0) List.569;
ret List.568;
let List.567 : {} = Struct {};
let List.566 : [C {}, C U8] = TagId(0) List.567;
ret List.566;
procedure List.26 (List.159, List.160, List.161):
let List.592 : [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.93 List.159 List.160 List.161;
let List.595 : U8 = 1i64;
let List.596 : U8 = GetTagId List.592;
let List.597 : Int1 = lowlevel Eq List.595 List.596;
if List.597 then
let List.162 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.592;
let List.590 : [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.93 List.159 List.160 List.161;
let List.593 : U8 = 1i64;
let List.594 : U8 = GetTagId List.590;
let List.595 : Int1 = lowlevel Eq List.593 List.594;
if List.595 then
let List.162 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.590;
ret List.162;
else
let List.163 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.592;
let List.163 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.590;
ret List.163;
procedure List.29 (List.304, List.305):
let List.547 : U64 = CallByName List.6 List.304;
let List.306 : U64 = CallByName Num.77 List.547 List.305;
let List.546 : List U8 = CallByName List.43 List.304 List.306;
ret List.546;
let List.545 : U64 = CallByName List.6 List.304;
let List.306 : U64 = CallByName Num.77 List.545 List.305;
let List.544 : List U8 = CallByName List.43 List.304 List.306;
ret List.544;
procedure List.31 (#Attr.2, #Attr.3):
let List.560 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.560;
procedure List.38 (List.298):
let List.559 : U64 = 0i64;
let List.558 : List U8 = CallByName List.31 List.298 List.559;
let List.558 : List U8 = lowlevel ListDropAt #Attr.2 #Attr.3;
ret List.558;
procedure List.38 (List.298):
let List.557 : U64 = 0i64;
let List.556 : List U8 = CallByName List.31 List.298 List.557;
ret List.556;
procedure List.4 (List.113, List.114):
let List.557 : U64 = 1i64;
let List.556 : List U8 = CallByName List.70 List.113 List.557;
let List.555 : List U8 = CallByName List.71 List.556 List.114;
ret List.555;
let List.555 : U64 = 1i64;
let List.554 : List U8 = CallByName List.70 List.113 List.555;
let List.553 : List U8 = CallByName List.71 List.554 List.114;
ret List.553;
procedure List.43 (List.302, List.303):
let List.539 : U64 = CallByName List.6 List.302;
let List.538 : U64 = CallByName Num.77 List.539 List.303;
let List.529 : {U64, U64} = Struct {List.303, List.538};
let List.528 : List U8 = CallByName List.49 List.302 List.529;
ret List.528;
let List.537 : U64 = CallByName List.6 List.302;
let List.536 : U64 = CallByName Num.77 List.537 List.303;
let List.527 : {U64, U64} = Struct {List.303, List.536};
let List.526 : List U8 = CallByName List.49 List.302 List.527;
ret List.526;
procedure List.49 (List.376, List.377):
let List.586 : U64 = StructAtIndex 0 List.377;
let List.587 : U64 = 0i64;
let List.584 : Int1 = CallByName Bool.11 List.586 List.587;
if List.584 then
let List.584 : U64 = StructAtIndex 0 List.377;
let List.585 : U64 = 0i64;
let List.582 : Int1 = CallByName Bool.11 List.584 List.585;
if List.582 then
dec List.376;
let List.585 : List U8 = Array [];
ret List.585;
let List.583 : List U8 = Array [];
ret List.583;
else
let List.582 : U64 = StructAtIndex 1 List.377;
let List.583 : U64 = StructAtIndex 0 List.377;
let List.581 : List U8 = CallByName List.72 List.376 List.582 List.583;
ret List.581;
let List.580 : U64 = StructAtIndex 1 List.377;
let List.581 : U64 = StructAtIndex 0 List.377;
let List.579 : List U8 = CallByName List.72 List.376 List.580 List.581;
ret List.579;
procedure List.6 (#Attr.2):
let List.650 : U64 = lowlevel ListLen #Attr.2;
ret List.650;
let List.611 : U64 = lowlevel ListLen #Attr.2;
ret List.611;
procedure List.66 (#Attr.2, #Attr.3):
let List.566 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.566;
let List.564 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.564;
procedure List.70 (#Attr.2, #Attr.3):
let List.554 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.554;
procedure List.71 (#Attr.2, #Attr.3):
let List.552 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
let List.552 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.552;
procedure List.71 (#Attr.2, #Attr.3):
let List.550 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.550;
procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.533 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.533;
let List.531 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.531;
procedure List.8 (#Attr.2, #Attr.3):
let List.549 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.549;
let List.547 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.547;
procedure List.80 (List.642, List.643, List.644, List.645, List.646):
joinpoint List.601 List.439 List.440 List.441 List.442 List.443:
let List.603 : Int1 = CallByName Num.22 List.442 List.443;
if List.603 then
let List.612 : U8 = CallByName List.66 List.439 List.442;
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 TotallyNotJson.62 List.440 List.612;
let List.609 : U8 = 1i64;
let List.610 : U8 = GetTagId List.604;
let List.611 : Int1 = lowlevel Eq List.609 List.610;
if List.611 then
let List.444 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.604;
let List.607 : U64 = 1i64;
let List.606 : U64 = CallByName Num.19 List.442 List.607;
jump List.601 List.439 List.444 List.441 List.606 List.443;
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.599 List.439 List.440 List.441 List.442 List.443:
let List.601 : Int1 = CallByName Num.22 List.442 List.443;
if List.601 then
let List.610 : U8 = CallByName List.66 List.439 List.442;
let List.602 : [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.440 List.610;
let List.607 : U8 = 1i64;
let List.608 : U8 = GetTagId List.602;
let List.609 : Int1 = lowlevel Eq List.607 List.608;
if List.609 then
let List.444 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 1) (Index 0) List.602;
let List.605 : U64 = 1i64;
let List.604 : U64 = CallByName Num.19 List.442 List.605;
jump List.599 List.439 List.444 List.441 List.604 List.443;
else
dec List.439;
let List.445 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.604;
let List.608 : [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.445;
ret List.608;
let List.445 : [C U64, C U64, C U64, C , C , C U64, C U64, C U64, C U64] = UnionAtIndex (Id 0) (Index 0) List.602;
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]] = TagId(0) List.445;
ret List.606;
else
dec List.439;
let List.602 : [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.440;
ret List.602;
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]] = TagId(1) List.440;
ret List.600;
in
jump List.601 List.642 List.643 List.644 List.645 List.646;
jump List.599 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.599 : U64 = 0i64;
let List.600 : U64 = CallByName List.6 List.436;
let List.598 : [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.436 List.437 List.438 List.599 List.600;
ret List.598;
let List.597 : U64 = 0i64;
let List.598 : U64 = CallByName List.6 List.436;
let List.596 : [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.436 List.437 List.438 List.597 List.598;
ret List.596;
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.345 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.345;
let Num.329 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.329;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.307 : U8 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.307;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.344 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.344;
let Num.328 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.328;
procedure Num.23 (#Attr.2, #Attr.3):
let Num.313 : Int1 = lowlevel NumLte #Attr.2 #Attr.3;
@ -228,8 +228,8 @@ procedure Num.72 (#Attr.2, #Attr.3):
ret Num.293;
procedure Num.77 (#Attr.2, #Attr.3):
let Num.341 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.341;
let Num.325 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.325;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.307 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
@ -247,8 +247,8 @@ procedure Str.9 (Str.79):
else
let Str.300 : U8 = StructAtIndex 3 Str.80;
let Str.301 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.1 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.1;
let #Derived_gen.7 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.7;
let Str.299 : {U64, U8} = Struct {Str.301, Str.300};
let Str.298 : [C {U64, U8}, C Str] = TagId(0) Str.299;
ret Str.298;
@ -365,8 +365,8 @@ procedure TotallyNotJson.534 (TotallyNotJson.535):
procedure TotallyNotJson.536 (TotallyNotJson.1192):
let TotallyNotJson.1193 : List U8 = StructAtIndex 1 TotallyNotJson.1192;
let #Derived_gen.0 : List U8 = StructAtIndex 0 TotallyNotJson.1192;
dec #Derived_gen.0;
let #Derived_gen.6 : List U8 = StructAtIndex 0 TotallyNotJson.1192;
dec #Derived_gen.6;
ret TotallyNotJson.1193;
procedure TotallyNotJson.60 ():
@ -733,7 +733,7 @@ procedure TotallyNotJson.69 ():
let TotallyNotJson.1247 : List U8 = CallByName TotallyNotJson.68 TotallyNotJson.1248 TotallyNotJson.1249 TotallyNotJson.1250 TotallyNotJson.1251;
ret TotallyNotJson.1247;
procedure TotallyNotJson.70 (TotallyNotJson.1468):
procedure TotallyNotJson.70 (#Derived_gen.5):
joinpoint TotallyNotJson.1198 TotallyNotJson.1166:
let TotallyNotJson.600 : List U8 = StructAtIndex 0 TotallyNotJson.1166;
inc 4 TotallyNotJson.600;
@ -834,4 +834,4 @@ procedure TotallyNotJson.70 (TotallyNotJson.1468):
let TotallyNotJson.1276 : {List U8, List U8} = Struct {TotallyNotJson.600, TotallyNotJson.601};
ret TotallyNotJson.1276;
in
jump TotallyNotJson.1198 TotallyNotJson.1468;
jump TotallyNotJson.1198 #Derived_gen.5;

View file

@ -48,7 +48,7 @@ procedure List.66 (#Attr.2, #Attr.3):
let List.549 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.549;
procedure List.80 (List.561, List.562, List.563, List.564, List.565):
procedure List.80 (#Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4, #Derived_gen.5):
joinpoint List.537 List.439 List.440 List.441 List.442 List.443:
let List.539 : Int1 = CallByName Num.22 List.442 List.443;
if List.539 then
@ -73,7 +73,7 @@ procedure List.80 (List.561, List.562, List.563, List.564, List.565):
let List.538 : [C {}, C {}] = TagId(1) List.440;
ret List.538;
in
jump List.537 List.561 List.562 List.563 List.564 List.565;
jump List.537 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4 #Derived_gen.5;
procedure List.93 (List.436, List.437, List.438):
let List.535 : U64 = 0i64;
@ -93,7 +93,7 @@ procedure Num.22 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.295;
procedure Test.1 (Test.77):
procedure Test.1 (#Derived_gen.0):
joinpoint Test.26 Test.6:
let Test.65 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;
let Test.66 : U8 = 0i64;
@ -110,17 +110,17 @@ procedure Test.1 (Test.77):
let Test.49 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;
dec Test.50;
let Test.10 : I64 = UnionAtIndex (Id 0) (Index 0) Test.49;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.6:
let Test.27 : Int1 = CallByName Num.22 Test.8 Test.10;
ret Test.27;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.49;
if #Derived_gen.1 then
let #Derived_gen.7 : Int1 = lowlevel RefCountIsUnique Test.49;
if #Derived_gen.7 then
decref Test.49;
jump #Derived_gen.0;
jump #Derived_gen.6;
else
decref Test.49;
jump #Derived_gen.0;
jump #Derived_gen.6;
else
let Test.39 : [<r>C I64, C List *self] = StructAtIndex 0 Test.6;
let Test.42 : [<r>C I64, C List *self] = StructAtIndex 1 Test.6;
@ -141,7 +141,7 @@ procedure Test.1 (Test.77):
dec Test.52;
let Test.14 : List [<r>C I64, C List *self] = UnionAtIndex (Id 1) (Index 0) Test.51;
inc Test.14;
joinpoint #Derived_gen.2:
joinpoint #Derived_gen.8:
let Test.35 : {} = Struct {};
let Test.33 : List {[<r>C I64, C List *self], [<r>C I64, C List *self]} = CallByName List.23 Test.12 Test.14 Test.35;
let Test.34 : {} = Struct {};
@ -159,14 +159,14 @@ procedure Test.1 (Test.77):
let Test.28 : Int1 = CallByName Bool.1;
ret Test.28;
in
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique Test.51;
if #Derived_gen.3 then
let #Derived_gen.9 : Int1 = lowlevel RefCountIsUnique Test.51;
if #Derived_gen.9 then
decref Test.51;
jump #Derived_gen.2;
jump #Derived_gen.8;
else
inc Test.14;
decref Test.51;
jump #Derived_gen.2;
jump #Derived_gen.8;
else
let Test.48 : [<r>C I64, C List *self] = StructAtIndex 0 Test.6;
let Test.47 : List [<r>C I64, C List *self] = Array [Test.48];
@ -175,7 +175,7 @@ procedure Test.1 (Test.77):
let Test.44 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = Struct {Test.45, Test.46};
jump Test.26 Test.44;
in
jump Test.26 Test.77;
jump Test.26 #Derived_gen.0;
procedure Test.15 (Test.16, Test.17):
let Test.36 : {[<r>C I64, C List *self], [<r>C I64, C List *self]} = Struct {Test.16, Test.17};

View file

@ -1,30 +1,30 @@
procedure Bool.1 ():
let Bool.55 : Int1 = false;
ret Bool.55;
let Bool.51 : Int1 = false;
ret Bool.51;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.23 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.23;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.46 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.46;
let Bool.42 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.42;
procedure Bool.11 (#Attr.2, #Attr.3):
let Bool.67 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.67;
let Bool.57 : Int1 = lowlevel Eq #Attr.2 #Attr.3;
ret Bool.57;
procedure Bool.2 ():
let Bool.54 : Int1 = true;
ret Bool.54;
let Bool.50 : Int1 = true;
ret Bool.50;
procedure Bool.3 (#Attr.2, #Attr.3):
let Bool.37 : Int1 = lowlevel And #Attr.2 #Attr.3;
ret Bool.37;
let Bool.33 : Int1 = lowlevel And #Attr.2 #Attr.3;
ret Bool.33;
procedure Bool.4 (#Attr.2, #Attr.3):
let Bool.57 : Int1 = lowlevel Or #Attr.2 #Attr.3;
ret Bool.57;
let Bool.53 : Int1 = lowlevel Or #Attr.2 #Attr.3;
ret Bool.53;
procedure Decode.24 (Decode.101):
ret Decode.101;
@ -114,8 +114,8 @@ procedure List.49 (List.376, List.377):
ret List.575;
procedure List.6 (#Attr.2):
let List.644 : U64 = lowlevel ListLen #Attr.2;
ret List.644;
let List.607 : U64 = lowlevel ListLen #Attr.2;
ret List.607;
procedure List.66 (#Attr.2, #Attr.3):
let List.560 : U8 = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
@ -137,7 +137,7 @@ procedure List.8 (#Attr.2, #Attr.3):
let List.543 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.543;
procedure List.80 (List.636, List.637, List.638, List.639, List.640):
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.595 List.439 List.440 List.441 List.442 List.443:
let List.597 : Int1 = CallByName Num.22 List.442 List.443;
if List.597 then
@ -161,7 +161,7 @@ procedure List.80 (List.636, List.637, List.638, List.639, List.640):
let List.596 : [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.440;
ret List.596;
in
jump List.595 List.636 List.637 List.638 List.639 List.640;
jump List.595 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.593 : U64 = 0i64;
@ -174,16 +174,16 @@ procedure Num.19 (#Attr.2, #Attr.3):
ret Num.295;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.345 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.345;
let Num.329 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.329;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.307 : U8 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.307;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.344 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.344;
let Num.328 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.328;
procedure Num.23 (#Attr.2, #Attr.3):
let Num.313 : Int1 = lowlevel NumLte #Attr.2 #Attr.3;
@ -202,8 +202,8 @@ procedure Num.72 (#Attr.2, #Attr.3):
ret Num.293;
procedure Num.77 (#Attr.2, #Attr.3):
let Num.341 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.341;
let Num.325 : U64 = lowlevel NumSubSaturated #Attr.2 #Attr.3;
ret Num.325;
procedure Str.12 (#Attr.2):
let Str.307 : List U8 = lowlevel StrToUtf8 #Attr.2;
@ -218,8 +218,8 @@ procedure Str.47 (#Attr.2):
ret Str.306;
procedure Str.48 (#Attr.2, #Attr.3, #Attr.4):
let Str.321 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
ret Str.321;
let Str.317 : {U64, Str, Int1, U8} = lowlevel StrFromUtf8Range #Attr.2 #Attr.3 #Attr.4;
ret Str.317;
procedure Str.72 (Str.244):
let Str.245 : {I64, U8} = CallByName Str.47 Str.244;
@ -237,22 +237,22 @@ procedure Str.72 (Str.244):
ret Str.299;
procedure Str.9 (Str.79):
let Str.319 : U64 = 0i64;
let Str.320 : U64 = CallByName List.6 Str.79;
let Str.80 : {U64, Str, Int1, U8} = CallByName Str.48 Str.79 Str.319 Str.320;
let Str.316 : Int1 = StructAtIndex 2 Str.80;
if Str.316 then
let Str.318 : Str = StructAtIndex 1 Str.80;
let Str.317 : [C {U64, U8}, C Str] = TagId(1) Str.318;
ret Str.317;
let Str.315 : U64 = 0i64;
let Str.316 : U64 = CallByName List.6 Str.79;
let Str.80 : {U64, Str, Int1, U8} = CallByName Str.48 Str.79 Str.315 Str.316;
let Str.312 : Int1 = StructAtIndex 2 Str.80;
if Str.312 then
let Str.314 : Str = StructAtIndex 1 Str.80;
let Str.313 : [C {U64, U8}, C Str] = TagId(1) Str.314;
ret Str.313;
else
let Str.314 : U8 = StructAtIndex 3 Str.80;
let Str.315 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.0 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.0;
let Str.313 : {U64, U8} = Struct {Str.315, Str.314};
let Str.312 : [C {U64, U8}, C Str] = TagId(0) Str.313;
ret Str.312;
let Str.310 : U8 = StructAtIndex 3 Str.80;
let Str.311 : U64 = StructAtIndex 0 Str.80;
let #Derived_gen.6 : Str = StructAtIndex 1 Str.80;
dec #Derived_gen.6;
let Str.309 : {U64, U8} = Struct {Str.311, Str.310};
let Str.308 : [C {U64, U8}, C Str] = TagId(0) Str.309;
ret Str.308;
procedure Test.0 ():
let Test.37 : Str = "-1234";
@ -397,8 +397,8 @@ procedure TotallyNotJson.534 (TotallyNotJson.535):
procedure TotallyNotJson.536 (TotallyNotJson.1192):
let TotallyNotJson.1193 : List U8 = StructAtIndex 1 TotallyNotJson.1192;
let #Derived_gen.1 : List U8 = StructAtIndex 0 TotallyNotJson.1192;
dec #Derived_gen.1;
let #Derived_gen.7 : List U8 = StructAtIndex 0 TotallyNotJson.1192;
dec #Derived_gen.7;
ret TotallyNotJson.1193;
procedure TotallyNotJson.60 ():
@ -765,7 +765,7 @@ procedure TotallyNotJson.69 ():
let TotallyNotJson.1247 : List U8 = CallByName TotallyNotJson.68 TotallyNotJson.1248 TotallyNotJson.1249 TotallyNotJson.1250 TotallyNotJson.1251;
ret TotallyNotJson.1247;
procedure TotallyNotJson.70 (TotallyNotJson.1468):
procedure TotallyNotJson.70 (#Derived_gen.5):
joinpoint TotallyNotJson.1198 TotallyNotJson.1166:
let TotallyNotJson.600 : List U8 = StructAtIndex 0 TotallyNotJson.1166;
inc 4 TotallyNotJson.600;
@ -866,4 +866,4 @@ procedure TotallyNotJson.70 (TotallyNotJson.1468):
let TotallyNotJson.1276 : {List U8, List U8} = Struct {TotallyNotJson.600, TotallyNotJson.601};
ret TotallyNotJson.1276;
in
jump TotallyNotJson.1198 TotallyNotJson.1468;
jump TotallyNotJson.1198 #Derived_gen.5;

View file

@ -14,7 +14,7 @@ procedure List.66 (#Attr.2, #Attr.3):
let List.537 : [<rnu>C *self, <null>] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.537;
procedure List.80 (List.544, List.545, List.546, List.547, List.548):
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.527 List.439 List.440 List.441 List.442 List.443:
let List.529 : Int1 = CallByName Num.22 List.442 List.443;
if List.529 then
@ -28,7 +28,7 @@ procedure List.80 (List.544, List.545, List.546, List.547, List.548):
dec List.439;
ret List.440;
in
jump List.527 List.544 List.545 List.546 List.547 List.548;
jump List.527 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.525 : U64 = 0i64;

View file

@ -10,7 +10,7 @@ procedure Num.22 (#Attr.2, #Attr.3):
let Num.294 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.294;
procedure Test.1 (Test.24, Test.25, Test.26):
procedure Test.1 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2):
joinpoint Test.12 Test.2 Test.3 Test.4:
let Test.14 : Int1 = CallByName Num.22 Test.3 Test.4;
if Test.14 then
@ -29,7 +29,7 @@ procedure Test.1 (Test.24, Test.25, Test.26):
else
ret Test.2;
in
jump Test.12 Test.24 Test.25 Test.26;
jump Test.12 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2;
procedure Test.0 ():
let Test.9 : List I64 = Array [];

View file

@ -6,415 +6,450 @@ procedure Num.24 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.293;
procedure Test.3 (Test.9, Test.10, Test.11):
let Test.254 : U8 = 0i64;
let Test.255 : U8 = GetTagId Test.9;
let Test.256 : Int1 = lowlevel Eq Test.254 Test.255;
if Test.256 then
let Test.113 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let Test.114 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let Test.112 : Int1 = true;
let Test.111 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(1) Test.113 Test.11 Test.114 Test.10 Test.112;
ret Test.111;
else
let Test.251 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.9;
let Test.252 : Int1 = false;
let Test.253 : Int1 = lowlevel Eq Test.252 Test.251;
if Test.253 then
let Test.16 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.9;
let Test.18 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.19 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.17 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.72 #Derived_gen.77:
let Test.179 : Int1 = CallByName Num.22 Test.10 Test.17;
if Test.179 then
joinpoint Test.238 #Derived_gen.139:
let Test.233 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
let Test.232 : Int1 = false;
let Test.231 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.139 UpdateModeId { id: 56 } TagId(1) Test.233 Test.18 Test.19 Test.17 Test.232;
ret Test.231;
in
let Test.236 : U8 = 1i64;
let Test.237 : U8 = GetTagId Test.16;
let Test.240 : Int1 = lowlevel Eq Test.236 Test.237;
if Test.240 then
let Test.234 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.16;
let Test.235 : Int1 = true;
let Test.239 : Int1 = lowlevel Eq Test.235 Test.234;
if Test.239 then
let Test.180 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
joinpoint Test.199 #Derived_gen.166:
let Test.198 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.20 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.198;
inc Test.20;
let Test.22 : I64 = UnionAtIndex (Id 1) (Index 1) Test.198;
let Test.23 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.198;
inc Test.23;
let Test.21 : I32 = UnionAtIndex (Id 1) (Index 3) Test.198;
let Test.25 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.26 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.24 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.30 #Derived_gen.169 #Derived_gen.170 #Derived_gen.171:
let Test.186 : Int1 = false;
let Test.183 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.171 UpdateModeId { id: 85 } TagId(1) Test.20 Test.22 Test.23 Test.21 Test.186;
let Test.185 : Int1 = false;
let Test.184 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.170 UpdateModeId { id: 84 } TagId(1) Test.26 Test.18 Test.19 Test.17 Test.185;
let Test.182 : Int1 = true;
let Test.181 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.169 UpdateModeId { id: 83 } TagId(1) Test.183 Test.25 Test.184 Test.24 Test.182;
ret Test.181;
in
let #Derived_gen.31 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.31 then
let #Derived_gen.172 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.198, id: UpdateModeId { id: 86 } };
let #Derived_gen.173 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 87 } };
jump #Derived_gen.30 #Derived_gen.166 #Derived_gen.172 #Derived_gen.173;
else
inc Test.26;
decref Test.180;
let #Derived_gen.174 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.30 #Derived_gen.174 #Derived_gen.174 #Derived_gen.166;
in
let Test.228 : U8 = 1i64;
let Test.229 : U8 = GetTagId Test.180;
let Test.230 : Int1 = lowlevel Eq Test.228 Test.229;
if Test.230 then
joinpoint Test.225 #Derived_gen.184:
joinpoint Test.216 #Derived_gen.185:
let Test.46 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.48 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.49 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.47 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.24 #Derived_gen.187 #Derived_gen.188:
let Test.196 : Int1 = true;
let Test.195 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.188 UpdateModeId { id: 100 } TagId(1) Test.46 Test.48 Test.49 Test.47 Test.196;
let Test.194 : Int1 = false;
let Test.193 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.187 UpdateModeId { id: 99 } TagId(1) Test.195 Test.18 Test.19 Test.17 Test.194;
ret Test.193;
in
let #Derived_gen.25 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.25 then
let #Derived_gen.189 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 101 } };
jump #Derived_gen.24 #Derived_gen.185 #Derived_gen.189;
else
inc Test.46;
inc Test.49;
decref Test.180;
let #Derived_gen.190 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.24 #Derived_gen.190 #Derived_gen.185;
in
let Test.213 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.214 : U8 = 1i64;
let Test.215 : U8 = GetTagId Test.213;
let Test.218 : Int1 = lowlevel Eq Test.214 Test.215;
if Test.218 then
let Test.210 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.211 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.210;
let Test.212 : Int1 = true;
let Test.217 : Int1 = lowlevel Eq Test.212 Test.211;
if Test.217 then
jump Test.199 #Derived_gen.184;
else
jump Test.216 #Derived_gen.184;
else
jump Test.216 #Derived_gen.184;
in
let Test.222 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.223 : U8 = 1i64;
let Test.224 : U8 = GetTagId Test.222;
let Test.227 : Int1 = lowlevel Eq Test.223 Test.224;
if Test.227 then
let Test.219 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.220 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.219;
let Test.221 : Int1 = true;
let Test.226 : Int1 = lowlevel Eq Test.221 Test.220;
if Test.226 then
joinpoint Test.207 #Derived_gen.191:
let Test.33 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.35 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.200 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.36 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.200;
inc Test.36;
let Test.38 : I64 = UnionAtIndex (Id 1) (Index 1) Test.200;
let Test.39 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.200;
inc Test.39;
let Test.37 : I32 = UnionAtIndex (Id 1) (Index 3) Test.200;
let Test.34 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.28 #Derived_gen.194 #Derived_gen.195 #Derived_gen.196:
let Test.192 : Int1 = false;
let Test.189 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.196 UpdateModeId { id: 107 } TagId(1) Test.33 Test.35 Test.36 Test.34 Test.192;
let Test.191 : Int1 = false;
let Test.190 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.195 UpdateModeId { id: 106 } TagId(1) Test.39 Test.18 Test.19 Test.17 Test.191;
let Test.188 : Int1 = true;
let Test.187 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.194 UpdateModeId { id: 105 } TagId(1) Test.189 Test.38 Test.190 Test.37 Test.188;
ret Test.187;
in
let #Derived_gen.29 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.29 then
let #Derived_gen.197 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.200, id: UpdateModeId { id: 108 } };
let #Derived_gen.198 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 109 } };
jump #Derived_gen.28 #Derived_gen.191 #Derived_gen.197 #Derived_gen.198;
else
inc Test.33;
decref Test.180;
let #Derived_gen.199 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.28 #Derived_gen.199 #Derived_gen.199 #Derived_gen.191;
in
let Test.204 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.205 : U8 = 1i64;
let Test.206 : U8 = GetTagId Test.204;
let Test.209 : Int1 = lowlevel Eq Test.205 Test.206;
if Test.209 then
let Test.201 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.202 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.201;
let Test.203 : Int1 = true;
let Test.208 : Int1 = lowlevel Eq Test.203 Test.202;
if Test.208 then
jump Test.199 #Derived_gen.77;
else
jump Test.207 #Derived_gen.77;
else
jump Test.207 #Derived_gen.77;
else
jump Test.225 #Derived_gen.77;
else
jump Test.225 #Derived_gen.77;
else
decref #Derived_gen.77;
dec Test.19;
let Test.197 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
ret Test.197;
else
jump Test.238 #Derived_gen.77;
else
jump Test.238 #Derived_gen.77;
else
let Test.117 : Int1 = CallByName Num.24 Test.10 Test.17;
if Test.117 then
joinpoint Test.176 #Derived_gen.291:
let Test.171 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
let Test.170 : Int1 = false;
let Test.169 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.291 UpdateModeId { id: 196 } TagId(1) Test.16 Test.18 Test.171 Test.17 Test.170;
ret Test.169;
in
let Test.174 : U8 = 1i64;
let Test.175 : U8 = GetTagId Test.19;
let Test.178 : Int1 = lowlevel Eq Test.174 Test.175;
if Test.178 then
let Test.172 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.19;
let Test.173 : Int1 = true;
let Test.177 : Int1 = lowlevel Eq Test.173 Test.172;
if Test.177 then
inc Test.19;
let #Derived_gen.292 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.16, id: UpdateModeId { id: 197 } };
let Test.118 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
joinpoint Test.137 #Derived_gen.332 #Derived_gen.333:
let Test.136 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.57 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.136;
inc Test.57;
let Test.59 : I64 = UnionAtIndex (Id 1) (Index 1) Test.136;
let Test.60 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.136;
inc Test.60;
let Test.58 : I32 = UnionAtIndex (Id 1) (Index 3) Test.136;
let Test.62 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.63 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.61 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.70 #Derived_gen.337 #Derived_gen.338 #Derived_gen.339:
let Test.124 : Int1 = false;
let Test.121 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.339 UpdateModeId { id: 242 } TagId(1) Test.57 Test.59 Test.60 Test.58 Test.124;
let Test.123 : Int1 = false;
let Test.122 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.338 UpdateModeId { id: 241 } TagId(1) Test.63 Test.18 Test.19 Test.17 Test.123;
let Test.120 : Int1 = true;
let Test.119 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.337 UpdateModeId { id: 240 } TagId(1) Test.121 Test.62 Test.122 Test.61 Test.120;
ret Test.119;
in
let #Derived_gen.71 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.71 then
decref #Derived_gen.332;
let #Derived_gen.340 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.136, id: UpdateModeId { id: 243 } };
let #Derived_gen.341 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 244 } };
jump #Derived_gen.70 #Derived_gen.333 #Derived_gen.340 #Derived_gen.341;
else
inc Test.63;
decref Test.118;
let #Derived_gen.342 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.70 #Derived_gen.342 #Derived_gen.332 #Derived_gen.333;
in
let Test.166 : U8 = 1i64;
let Test.167 : U8 = GetTagId Test.118;
let Test.168 : Int1 = lowlevel Eq Test.166 Test.167;
if Test.168 then
joinpoint Test.163 #Derived_gen.354 #Derived_gen.355:
joinpoint Test.154 #Derived_gen.356 #Derived_gen.357:
let Test.83 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.85 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.86 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.84 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.60 #Derived_gen.360 #Derived_gen.361:
let Test.134 : Int1 = true;
let Test.133 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.361 UpdateModeId { id: 262 } TagId(1) Test.83 Test.85 Test.86 Test.84 Test.134;
let Test.132 : Int1 = false;
let Test.131 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.360 UpdateModeId { id: 261 } TagId(1) Test.133 Test.18 Test.19 Test.17 Test.132;
ret Test.131;
in
let #Derived_gen.61 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.61 then
decref #Derived_gen.356;
let #Derived_gen.362 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 263 } };
jump #Derived_gen.60 #Derived_gen.357 #Derived_gen.362;
else
inc Test.83;
inc Test.86;
decref Test.118;
jump #Derived_gen.60 #Derived_gen.356 #Derived_gen.357;
in
let Test.151 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.152 : U8 = 1i64;
let Test.153 : U8 = GetTagId Test.151;
let Test.156 : Int1 = lowlevel Eq Test.152 Test.153;
if Test.156 then
let Test.148 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.149 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.148;
let Test.150 : Int1 = true;
let Test.155 : Int1 = lowlevel Eq Test.150 Test.149;
if Test.155 then
jump Test.137 #Derived_gen.354 #Derived_gen.355;
else
jump Test.154 #Derived_gen.354 #Derived_gen.355;
else
jump Test.154 #Derived_gen.354 #Derived_gen.355;
in
let Test.160 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.161 : U8 = 1i64;
let Test.162 : U8 = GetTagId Test.160;
let Test.165 : Int1 = lowlevel Eq Test.161 Test.162;
if Test.165 then
let Test.157 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.158 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.157;
let Test.159 : Int1 = true;
let Test.164 : Int1 = lowlevel Eq Test.159 Test.158;
if Test.164 then
joinpoint Test.145 #Derived_gen.363 #Derived_gen.364:
let Test.70 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.72 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.138 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.73 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.138;
inc Test.73;
let Test.75 : I64 = UnionAtIndex (Id 1) (Index 1) Test.138;
let Test.76 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.138;
inc Test.76;
let Test.74 : I32 = UnionAtIndex (Id 1) (Index 3) Test.138;
let Test.71 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.64 #Derived_gen.368 #Derived_gen.369 #Derived_gen.370:
let Test.130 : Int1 = false;
let Test.127 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.370 UpdateModeId { id: 271 } TagId(1) Test.70 Test.72 Test.73 Test.71 Test.130;
let Test.129 : Int1 = false;
let Test.128 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.369 UpdateModeId { id: 270 } TagId(1) Test.76 Test.18 Test.19 Test.17 Test.129;
let Test.126 : Int1 = true;
let Test.125 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.368 UpdateModeId { id: 269 } TagId(1) Test.127 Test.75 Test.128 Test.74 Test.126;
ret Test.125;
in
let #Derived_gen.65 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.65 then
decref #Derived_gen.363;
let #Derived_gen.371 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.138, id: UpdateModeId { id: 272 } };
let #Derived_gen.372 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 273 } };
jump #Derived_gen.64 #Derived_gen.364 #Derived_gen.371 #Derived_gen.372;
else
inc Test.70;
decref Test.118;
let #Derived_gen.373 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.64 #Derived_gen.373 #Derived_gen.363 #Derived_gen.364;
in
let Test.142 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.143 : U8 = 1i64;
let Test.144 : U8 = GetTagId Test.142;
let Test.147 : Int1 = lowlevel Eq Test.143 Test.144;
if Test.147 then
let Test.139 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.140 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.139;
let Test.141 : Int1 = true;
let Test.146 : Int1 = lowlevel Eq Test.141 Test.140;
if Test.146 then
jump Test.137 #Derived_gen.77 #Derived_gen.292;
else
jump Test.145 #Derived_gen.77 #Derived_gen.292;
else
jump Test.145 #Derived_gen.77 #Derived_gen.292;
else
jump Test.163 #Derived_gen.77 #Derived_gen.292;
else
jump Test.163 #Derived_gen.77 #Derived_gen.292;
else
decref #Derived_gen.292;
decref #Derived_gen.77;
joinpoint #Derived_gen.66:
let Test.135 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
ret Test.135;
in
let #Derived_gen.69 : Int1 = lowlevel RefCountIsUnique Test.19;
if #Derived_gen.69 then
let #Derived_gen.68 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.19;
dec #Derived_gen.68;
let #Derived_gen.67 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.19;
dec #Derived_gen.67;
decref Test.19;
jump #Derived_gen.66;
else
decref Test.19;
jump #Derived_gen.66;
else
jump Test.176 #Derived_gen.77;
else
jump Test.176 #Derived_gen.77;
else
let Test.116 : Int1 = false;
let Test.115 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.77 UpdateModeId { id: 1 } TagId(1) Test.16 Test.11 Test.19 Test.10 Test.116;
ret Test.115;
in
let #Derived_gen.73 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.73 then
let #Derived_gen.382 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 282 } };
jump #Derived_gen.72 #Derived_gen.382;
else
inc Test.16;
inc Test.19;
decref Test.9;
let #Derived_gen.383 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.72 #Derived_gen.383;
procedure Test.3 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2):
let #Derived_gen.4 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
let #Derived_gen.3 : Ptr([<rnu>C *self I64 *self I32 Int1, <null>]) = lowlevel PtrToStackValue #Derived_gen.4;
joinpoint #Derived_gen.5 Test.9 Test.10 Test.11 #Derived_gen.6:
let Test.254 : U8 = 0i64;
let Test.255 : U8 = GetTagId Test.9;
let Test.256 : Int1 = lowlevel Eq Test.254 Test.255;
if Test.256 then
let Test.113 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let Test.114 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let Test.112 : Int1 = true;
let Test.111 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(1) Test.113 Test.11 Test.114 Test.10 Test.112;
let #Derived_gen.8 : {} = lowlevel PtrStore #Derived_gen.6 Test.111;
let #Derived_gen.7 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.7;
else
let Test.96 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.9;
let Test.98 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.99 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.97 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.74 #Derived_gen.385:
let Test.247 : Int1 = CallByName Num.22 Test.10 Test.97;
if Test.247 then
let Test.250 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.96 Test.10 Test.11;
let Test.249 : Int1 = true;
let Test.248 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.385 UpdateModeId { id: 284 } TagId(1) Test.250 Test.98 Test.99 Test.97 Test.249;
ret Test.248;
else
let Test.243 : Int1 = CallByName Num.24 Test.10 Test.97;
if Test.243 then
let Test.246 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.99 Test.10 Test.11;
let Test.245 : Int1 = true;
let Test.244 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.385 UpdateModeId { id: 284 } TagId(1) Test.96 Test.98 Test.246 Test.97 Test.245;
ret Test.244;
let Test.251 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.9;
let Test.252 : Int1 = false;
let Test.253 : Int1 = lowlevel Eq Test.252 Test.251;
if Test.253 then
let Test.16 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.9;
let Test.18 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.19 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.17 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.109 #Derived_gen.114:
let Test.179 : Int1 = CallByName Num.22 Test.10 Test.17;
if Test.179 then
joinpoint Test.238 #Derived_gen.176:
let Test.233 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
let Test.232 : Int1 = false;
let Test.231 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.176 UpdateModeId { id: 56 } TagId(1) Test.233 Test.18 Test.19 Test.17 Test.232;
let #Derived_gen.10 : {} = lowlevel PtrStore #Derived_gen.6 Test.231;
let #Derived_gen.9 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.9;
in
let Test.236 : U8 = 1i64;
let Test.237 : U8 = GetTagId Test.16;
let Test.240 : Int1 = lowlevel Eq Test.236 Test.237;
if Test.240 then
let Test.234 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.16;
let Test.235 : Int1 = true;
let Test.239 : Int1 = lowlevel Eq Test.235 Test.234;
if Test.239 then
let Test.180 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.16 Test.10 Test.11;
joinpoint Test.199 #Derived_gen.203:
let Test.198 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.20 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.198;
inc Test.20;
let Test.22 : I64 = UnionAtIndex (Id 1) (Index 1) Test.198;
let Test.23 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.198;
inc Test.23;
let Test.21 : I32 = UnionAtIndex (Id 1) (Index 3) Test.198;
let Test.25 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.26 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.24 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.67 #Derived_gen.206 #Derived_gen.207 #Derived_gen.208:
let Test.186 : Int1 = false;
let Test.183 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.208 UpdateModeId { id: 85 } TagId(1) Test.20 Test.22 Test.23 Test.21 Test.186;
let Test.185 : Int1 = false;
let Test.184 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.207 UpdateModeId { id: 84 } TagId(1) Test.26 Test.18 Test.19 Test.17 Test.185;
let Test.182 : Int1 = true;
let Test.181 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.206 UpdateModeId { id: 83 } TagId(1) Test.183 Test.25 Test.184 Test.24 Test.182;
let #Derived_gen.12 : {} = lowlevel PtrStore #Derived_gen.6 Test.181;
let #Derived_gen.11 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.11;
in
let #Derived_gen.68 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.68 then
let #Derived_gen.209 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.198, id: UpdateModeId { id: 86 } };
let #Derived_gen.210 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 87 } };
jump #Derived_gen.67 #Derived_gen.203 #Derived_gen.209 #Derived_gen.210;
else
inc Test.26;
decref Test.180;
let #Derived_gen.211 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.67 #Derived_gen.211 #Derived_gen.211 #Derived_gen.203;
in
let Test.228 : U8 = 1i64;
let Test.229 : U8 = GetTagId Test.180;
let Test.230 : Int1 = lowlevel Eq Test.228 Test.229;
if Test.230 then
joinpoint Test.225 #Derived_gen.221:
joinpoint Test.216 #Derived_gen.222:
let Test.46 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.48 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.49 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.47 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.61 #Derived_gen.224 #Derived_gen.225:
let Test.196 : Int1 = true;
let Test.195 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.225 UpdateModeId { id: 100 } TagId(1) Test.46 Test.48 Test.49 Test.47 Test.196;
let Test.194 : Int1 = false;
let Test.193 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.224 UpdateModeId { id: 99 } TagId(1) Test.195 Test.18 Test.19 Test.17 Test.194;
let #Derived_gen.14 : {} = lowlevel PtrStore #Derived_gen.6 Test.193;
let #Derived_gen.13 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.13;
in
let #Derived_gen.62 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.62 then
let #Derived_gen.226 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 101 } };
jump #Derived_gen.61 #Derived_gen.222 #Derived_gen.226;
else
inc Test.46;
inc Test.49;
decref Test.180;
let #Derived_gen.227 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.61 #Derived_gen.227 #Derived_gen.222;
in
let Test.213 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.214 : U8 = 1i64;
let Test.215 : U8 = GetTagId Test.213;
let Test.218 : Int1 = lowlevel Eq Test.214 Test.215;
if Test.218 then
let Test.210 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.211 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.210;
let Test.212 : Int1 = true;
let Test.217 : Int1 = lowlevel Eq Test.212 Test.211;
if Test.217 then
jump Test.199 #Derived_gen.221;
else
jump Test.216 #Derived_gen.221;
else
jump Test.216 #Derived_gen.221;
in
let Test.222 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.223 : U8 = 1i64;
let Test.224 : U8 = GetTagId Test.222;
let Test.227 : Int1 = lowlevel Eq Test.223 Test.224;
if Test.227 then
let Test.219 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.220 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.219;
let Test.221 : Int1 = true;
let Test.226 : Int1 = lowlevel Eq Test.221 Test.220;
if Test.226 then
joinpoint Test.207 #Derived_gen.228:
let Test.33 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.35 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180;
let Test.200 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.180;
let Test.36 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.200;
inc Test.36;
let Test.38 : I64 = UnionAtIndex (Id 1) (Index 1) Test.200;
let Test.39 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.200;
inc Test.39;
let Test.37 : I32 = UnionAtIndex (Id 1) (Index 3) Test.200;
let Test.34 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180;
joinpoint #Derived_gen.65 #Derived_gen.231 #Derived_gen.232 #Derived_gen.233:
let Test.192 : Int1 = false;
let Test.189 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.233 UpdateModeId { id: 107 } TagId(1) Test.33 Test.35 Test.36 Test.34 Test.192;
let Test.191 : Int1 = false;
let Test.190 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.232 UpdateModeId { id: 106 } TagId(1) Test.39 Test.18 Test.19 Test.17 Test.191;
let Test.188 : Int1 = true;
let Test.187 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.231 UpdateModeId { id: 105 } TagId(1) Test.189 Test.38 Test.190 Test.37 Test.188;
let #Derived_gen.16 : {} = lowlevel PtrStore #Derived_gen.6 Test.187;
let #Derived_gen.15 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.15;
in
let #Derived_gen.66 : Int1 = lowlevel RefCountIsUnique Test.180;
if #Derived_gen.66 then
let #Derived_gen.234 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.200, id: UpdateModeId { id: 108 } };
let #Derived_gen.235 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 109 } };
jump #Derived_gen.65 #Derived_gen.228 #Derived_gen.234 #Derived_gen.235;
else
inc Test.33;
decref Test.180;
let #Derived_gen.236 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.65 #Derived_gen.236 #Derived_gen.236 #Derived_gen.228;
in
let Test.204 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.205 : U8 = 1i64;
let Test.206 : U8 = GetTagId Test.204;
let Test.209 : Int1 = lowlevel Eq Test.205 Test.206;
if Test.209 then
let Test.201 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.180;
let Test.202 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.201;
let Test.203 : Int1 = true;
let Test.208 : Int1 = lowlevel Eq Test.203 Test.202;
if Test.208 then
jump Test.199 #Derived_gen.114;
else
jump Test.207 #Derived_gen.114;
else
jump Test.207 #Derived_gen.114;
else
jump Test.225 #Derived_gen.114;
else
jump Test.225 #Derived_gen.114;
else
decref #Derived_gen.114;
dec Test.19;
let Test.197 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let #Derived_gen.18 : {} = lowlevel PtrStore #Derived_gen.6 Test.197;
let #Derived_gen.17 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.17;
else
jump Test.238 #Derived_gen.114;
else
jump Test.238 #Derived_gen.114;
else
let Test.242 : Int1 = true;
let Test.241 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.385 UpdateModeId { id: 284 } TagId(1) Test.96 Test.11 Test.99 Test.10 Test.242;
ret Test.241;
in
let #Derived_gen.75 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.75 then
let #Derived_gen.386 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 285 } };
jump #Derived_gen.74 #Derived_gen.386;
let Test.117 : Int1 = CallByName Num.24 Test.10 Test.17;
if Test.117 then
joinpoint Test.176 #Derived_gen.328:
let Test.171 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
let Test.170 : Int1 = false;
let Test.169 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.328 UpdateModeId { id: 196 } TagId(1) Test.16 Test.18 Test.171 Test.17 Test.170;
let #Derived_gen.20 : {} = lowlevel PtrStore #Derived_gen.6 Test.169;
let #Derived_gen.19 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.19;
in
let Test.174 : U8 = 1i64;
let Test.175 : U8 = GetTagId Test.19;
let Test.178 : Int1 = lowlevel Eq Test.174 Test.175;
if Test.178 then
let Test.172 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.19;
let Test.173 : Int1 = true;
let Test.177 : Int1 = lowlevel Eq Test.173 Test.172;
if Test.177 then
inc Test.19;
let #Derived_gen.329 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.16, id: UpdateModeId { id: 197 } };
let Test.118 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.19 Test.10 Test.11;
joinpoint Test.137 #Derived_gen.369 #Derived_gen.370:
let Test.136 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.57 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.136;
inc Test.57;
let Test.59 : I64 = UnionAtIndex (Id 1) (Index 1) Test.136;
let Test.60 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.136;
inc Test.60;
let Test.58 : I32 = UnionAtIndex (Id 1) (Index 3) Test.136;
let Test.62 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.63 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.61 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.107 #Derived_gen.374 #Derived_gen.375 #Derived_gen.376:
let Test.124 : Int1 = false;
let Test.121 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.376 UpdateModeId { id: 242 } TagId(1) Test.57 Test.59 Test.60 Test.58 Test.124;
let Test.123 : Int1 = false;
let Test.122 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.375 UpdateModeId { id: 241 } TagId(1) Test.63 Test.18 Test.19 Test.17 Test.123;
let Test.120 : Int1 = true;
let Test.119 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.374 UpdateModeId { id: 240 } TagId(1) Test.121 Test.62 Test.122 Test.61 Test.120;
let #Derived_gen.22 : {} = lowlevel PtrStore #Derived_gen.6 Test.119;
let #Derived_gen.21 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.21;
in
let #Derived_gen.108 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.108 then
decref #Derived_gen.369;
let #Derived_gen.377 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.136, id: UpdateModeId { id: 243 } };
let #Derived_gen.378 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 244 } };
jump #Derived_gen.107 #Derived_gen.370 #Derived_gen.377 #Derived_gen.378;
else
inc Test.63;
decref Test.118;
let #Derived_gen.379 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.107 #Derived_gen.379 #Derived_gen.369 #Derived_gen.370;
in
let Test.166 : U8 = 1i64;
let Test.167 : U8 = GetTagId Test.118;
let Test.168 : Int1 = lowlevel Eq Test.166 Test.167;
if Test.168 then
joinpoint Test.163 #Derived_gen.391 #Derived_gen.392:
joinpoint Test.154 #Derived_gen.393 #Derived_gen.394:
let Test.83 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.85 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.86 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.84 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.97 #Derived_gen.397 #Derived_gen.398:
let Test.134 : Int1 = true;
let Test.133 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.398 UpdateModeId { id: 262 } TagId(1) Test.83 Test.85 Test.86 Test.84 Test.134;
let Test.132 : Int1 = false;
let Test.131 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.397 UpdateModeId { id: 261 } TagId(1) Test.133 Test.18 Test.19 Test.17 Test.132;
let #Derived_gen.24 : {} = lowlevel PtrStore #Derived_gen.6 Test.131;
let #Derived_gen.23 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.23;
in
let #Derived_gen.98 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.98 then
decref #Derived_gen.393;
let #Derived_gen.399 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 263 } };
jump #Derived_gen.97 #Derived_gen.394 #Derived_gen.399;
else
inc Test.83;
inc Test.86;
decref Test.118;
jump #Derived_gen.97 #Derived_gen.393 #Derived_gen.394;
in
let Test.151 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.152 : U8 = 1i64;
let Test.153 : U8 = GetTagId Test.151;
let Test.156 : Int1 = lowlevel Eq Test.152 Test.153;
if Test.156 then
let Test.148 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.149 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.148;
let Test.150 : Int1 = true;
let Test.155 : Int1 = lowlevel Eq Test.150 Test.149;
if Test.155 then
jump Test.137 #Derived_gen.391 #Derived_gen.392;
else
jump Test.154 #Derived_gen.391 #Derived_gen.392;
else
jump Test.154 #Derived_gen.391 #Derived_gen.392;
in
let Test.160 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.161 : U8 = 1i64;
let Test.162 : U8 = GetTagId Test.160;
let Test.165 : Int1 = lowlevel Eq Test.161 Test.162;
if Test.165 then
let Test.157 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.158 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.157;
let Test.159 : Int1 = true;
let Test.164 : Int1 = lowlevel Eq Test.159 Test.158;
if Test.164 then
joinpoint Test.145 #Derived_gen.400 #Derived_gen.401:
let Test.70 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.72 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118;
let Test.138 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.118;
let Test.73 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.138;
inc Test.73;
let Test.75 : I64 = UnionAtIndex (Id 1) (Index 1) Test.138;
let Test.76 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.138;
inc Test.76;
let Test.74 : I32 = UnionAtIndex (Id 1) (Index 3) Test.138;
let Test.71 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118;
joinpoint #Derived_gen.101 #Derived_gen.405 #Derived_gen.406 #Derived_gen.407:
let Test.130 : Int1 = false;
let Test.127 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.407 UpdateModeId { id: 271 } TagId(1) Test.70 Test.72 Test.73 Test.71 Test.130;
let Test.129 : Int1 = false;
let Test.128 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.406 UpdateModeId { id: 270 } TagId(1) Test.76 Test.18 Test.19 Test.17 Test.129;
let Test.126 : Int1 = true;
let Test.125 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.405 UpdateModeId { id: 269 } TagId(1) Test.127 Test.75 Test.128 Test.74 Test.126;
let #Derived_gen.26 : {} = lowlevel PtrStore #Derived_gen.6 Test.125;
let #Derived_gen.25 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.25;
in
let #Derived_gen.102 : Int1 = lowlevel RefCountIsUnique Test.118;
if #Derived_gen.102 then
decref #Derived_gen.400;
let #Derived_gen.408 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reset { symbol: Test.138, id: UpdateModeId { id: 272 } };
let #Derived_gen.409 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 273 } };
jump #Derived_gen.101 #Derived_gen.401 #Derived_gen.408 #Derived_gen.409;
else
inc Test.70;
decref Test.118;
let #Derived_gen.410 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.101 #Derived_gen.410 #Derived_gen.400 #Derived_gen.401;
in
let Test.142 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.143 : U8 = 1i64;
let Test.144 : U8 = GetTagId Test.142;
let Test.147 : Int1 = lowlevel Eq Test.143 Test.144;
if Test.147 then
let Test.139 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.118;
let Test.140 : Int1 = UnionAtIndex (Id 1) (Index 4) Test.139;
let Test.141 : Int1 = true;
let Test.146 : Int1 = lowlevel Eq Test.141 Test.140;
if Test.146 then
jump Test.137 #Derived_gen.114 #Derived_gen.329;
else
jump Test.145 #Derived_gen.114 #Derived_gen.329;
else
jump Test.145 #Derived_gen.114 #Derived_gen.329;
else
jump Test.163 #Derived_gen.114 #Derived_gen.329;
else
jump Test.163 #Derived_gen.114 #Derived_gen.329;
else
decref #Derived_gen.329;
decref #Derived_gen.114;
joinpoint #Derived_gen.103:
let Test.135 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;
let #Derived_gen.28 : {} = lowlevel PtrStore #Derived_gen.6 Test.135;
let #Derived_gen.27 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.27;
in
let #Derived_gen.106 : Int1 = lowlevel RefCountIsUnique Test.19;
if #Derived_gen.106 then
let #Derived_gen.105 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.19;
dec #Derived_gen.105;
let #Derived_gen.104 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.19;
dec #Derived_gen.104;
decref Test.19;
jump #Derived_gen.103;
else
decref Test.19;
jump #Derived_gen.103;
else
jump Test.176 #Derived_gen.114;
else
jump Test.176 #Derived_gen.114;
else
let Test.116 : Int1 = false;
let Test.115 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.114 UpdateModeId { id: 1 } TagId(1) Test.16 Test.11 Test.19 Test.10 Test.116;
let #Derived_gen.30 : {} = lowlevel PtrStore #Derived_gen.6 Test.115;
let #Derived_gen.29 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.29;
in
let #Derived_gen.110 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.110 then
let #Derived_gen.419 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 282 } };
jump #Derived_gen.109 #Derived_gen.419;
else
inc Test.16;
inc Test.19;
decref Test.9;
let #Derived_gen.420 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.109 #Derived_gen.420;
else
inc Test.96;
inc Test.99;
decref Test.9;
let #Derived_gen.387 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.74 #Derived_gen.387;
let Test.96 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 0) Test.9;
let Test.98 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9;
let Test.99 : [<rnu>C *self I64 *self I32 Int1, <null>] = UnionAtIndex (Id 1) (Index 2) Test.9;
let Test.97 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9;
joinpoint #Derived_gen.111 #Derived_gen.422:
let Test.247 : Int1 = CallByName Num.22 Test.10 Test.97;
if Test.247 then
let Test.250 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.96 Test.10 Test.11;
let Test.249 : Int1 = true;
let Test.248 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.422 UpdateModeId { id: 284 } TagId(1) Test.250 Test.98 Test.99 Test.97 Test.249;
let #Derived_gen.32 : {} = lowlevel PtrStore #Derived_gen.6 Test.248;
let #Derived_gen.31 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.31;
else
let Test.243 : Int1 = CallByName Num.24 Test.10 Test.97;
if Test.243 then
let Test.246 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.99 Test.10 Test.11;
let Test.245 : Int1 = true;
let Test.244 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.422 UpdateModeId { id: 284 } TagId(1) Test.96 Test.98 Test.246 Test.97 Test.245;
let #Derived_gen.34 : {} = lowlevel PtrStore #Derived_gen.6 Test.244;
let #Derived_gen.33 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.33;
else
let Test.242 : Int1 = true;
let Test.241 : [<rnu>C *self I64 *self I32 Int1, <null>] = Reuse #Derived_gen.422 UpdateModeId { id: 284 } TagId(1) Test.96 Test.11 Test.99 Test.10 Test.242;
let #Derived_gen.36 : {} = lowlevel PtrStore #Derived_gen.6 Test.241;
let #Derived_gen.35 : [<rnu>C *self I64 *self I32 Int1, <null>] = lowlevel PtrLoad #Derived_gen.3;
ret #Derived_gen.35;
in
let #Derived_gen.112 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.112 then
let #Derived_gen.423 : [<rnu>C *self I64 *self I32 Int1, <null>] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 285 } };
jump #Derived_gen.111 #Derived_gen.423;
else
inc Test.96;
inc Test.99;
decref Test.9;
let #Derived_gen.424 : [<rnu>C *self I64 *self I32 Int1, <null>] = NullPointer;
jump #Derived_gen.111 #Derived_gen.424;
in
jump #Derived_gen.5 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3;
procedure Test.0 ():
let Test.281 : [<rnu>C *self I64 *self I32 Int1, <null>] = TagId(0) ;

View file

@ -11,7 +11,7 @@ procedure Test.1 (Test.2):
let Test.7 : U32 = CallByName Test.3 Test.8 Test.2;
ret Test.7;
procedure Test.3 (Test.17, Test.18):
procedure Test.3 (#Derived_gen.0, #Derived_gen.1):
joinpoint Test.9 Test.4 Test.2:
let Test.13 : Int1 = CallByName Bool.2;
if Test.13 then
@ -20,7 +20,7 @@ procedure Test.3 (Test.17, Test.18):
let Test.11 : U32 = CallByName Num.19 Test.4 Test.2;
jump Test.9 Test.11 Test.2;
in
jump Test.9 Test.17 Test.18;
jump Test.9 #Derived_gen.0 #Derived_gen.1;
procedure Test.0 ():
let Test.6 : U32 = 6i64;

View file

@ -6,10 +6,10 @@ procedure List.5 (#Attr.2, #Attr.3):
procedure Test.2 (Test.5):
let Test.6 : List [<rnnu>C List *self] = UnionAtIndex (Id 0) (Index 0) Test.5;
inc Test.6;
let #Derived_gen.0 : [<rnnu>C List *self] = Reset { symbol: Test.5, id: UpdateModeId { id: 0 } };
let #Derived_gen.1 : [<rnnu>C List *self] = Reset { symbol: Test.5, id: UpdateModeId { id: 0 } };
let Test.15 : {} = Struct {};
let Test.7 : List [<rnnu>C List *self] = CallByName List.5 Test.6 Test.15;
let Test.14 : [<rnnu>C List *self] = Reuse #Derived_gen.0 UpdateModeId { id: 0 } TagId(0) Test.7;
let Test.14 : [<rnnu>C List *self] = Reuse #Derived_gen.1 UpdateModeId { id: 0 } TagId(0) Test.7;
ret Test.14;
procedure Test.0 ():

View file

@ -26,7 +26,7 @@ procedure Test.3 (Test.7):
procedure Test.6 (Test.16, #Attr.12):
let Test.5 : {} = UnionAtIndex (Id 0) (Index 0) #Attr.12;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.2:
let Test.19 : {} = Struct {};
let Test.22 : Str = "foobar";
let Test.20 : [<rnu><null>, C {}] = CallByName Test.8 Test.22 Test.5;
@ -42,13 +42,13 @@ procedure Test.6 (Test.16, #Attr.12):
ret Test.18;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.3 then
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.2;
else
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.2;
procedure Test.8 (Test.9, Test.7):
let Test.24 : [<rnu><null>, C {}] = CallByName Test.10 Test.9;

View file

@ -10,7 +10,7 @@ procedure Num.21 (#Attr.2, #Attr.3):
let Num.292 : U8 = lowlevel NumMul #Attr.2 #Attr.3;
ret Num.292;
procedure Test.1 (Test.26, Test.27):
procedure Test.1 (#Derived_gen.0, #Derived_gen.1):
joinpoint Test.11 Test.2 Test.3:
let Test.24 : U8 = 0i64;
let Test.20 : Int1 = CallByName Bool.11 Test.2 Test.24;
@ -33,13 +33,13 @@ procedure Test.1 (Test.26, Test.27):
let Test.14 : [<rnu><null>, C *self U8] = TagId(0) Test.3 Test.2;
jump Test.11 Test.13 Test.14;
in
jump Test.11 Test.26 Test.27;
jump Test.11 #Derived_gen.0 #Derived_gen.1;
procedure Test.4 (Test.28, Test.29):
procedure Test.4 (#Derived_gen.2, #Derived_gen.3):
joinpoint Test.15 Test.5 #Attr.12:
let Test.2 : U8 = UnionAtIndex (Id 0) (Index 1) #Attr.12;
let Test.3 : [<rnu><null>, C *self U8] = UnionAtIndex (Id 0) (Index 0) #Attr.12;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.4:
let Test.17 : U8 = CallByName Num.21 Test.2 Test.5;
let Test.18 : U8 = GetTagId Test.3;
switch Test.18:
@ -52,16 +52,16 @@ procedure Test.4 (Test.28, Test.29):
ret Test.16;
in
let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.1 then
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.5 then
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.4;
else
inc Test.3;
decref #Attr.12;
jump #Derived_gen.0;
jump #Derived_gen.4;
in
jump Test.15 Test.28 Test.29;
jump Test.15 #Derived_gen.2 #Derived_gen.3;
procedure Test.6 (Test.7):
ret Test.7;

View file

@ -8,8 +8,8 @@ procedure Str.3 (#Attr.2, #Attr.3):
procedure Test.11 (Test.29, #Attr.12):
let Test.10 : {} = UnionAtIndex (Id 0) (Index 0) #Attr.12;
let #Derived_gen.0 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.0 then
let #Derived_gen.9 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.9 then
decref #Attr.12;
ret Test.10;
else
@ -19,11 +19,11 @@ procedure Test.11 (Test.29, #Attr.12):
procedure Test.11 (Test.29, Test.10):
ret Test.10;
procedure Test.14 (Test.62, Test.63):
procedure Test.14 (#Derived_gen.2, #Derived_gen.3):
joinpoint Test.37 Test.36 #Attr.12:
let Test.12 : {} = UnionAtIndex (Id 1) (Index 1) #Attr.12;
let Test.13 : I64 = UnionAtIndex (Id 1) (Index 0) #Attr.12;
joinpoint #Derived_gen.1:
joinpoint #Derived_gen.10:
let Test.43 : {} = Struct {};
let Test.42 : {} = CallByName Test.11 Test.43 Test.12;
let Test.38 : [<r>C {}, C I64 {}] = CallByName Test.9 Test.42 Test.13;
@ -38,15 +38,15 @@ procedure Test.14 (Test.62, Test.63):
jump Test.37 Test.40 Test.38;
in
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.2 then
let #Derived_gen.11 : Int1 = lowlevel RefCountIsUnique #Attr.12;
if #Derived_gen.11 then
decref #Attr.12;
jump #Derived_gen.1;
jump #Derived_gen.10;
else
decref #Attr.12;
jump #Derived_gen.1;
jump #Derived_gen.10;
in
jump Test.37 Test.62 Test.63;
jump Test.37 #Derived_gen.2 #Derived_gen.3;
procedure Test.2 ():
let Test.6 : Str = "Hello";

View file

@ -23,7 +23,7 @@ procedure Test.2 (Test.9, Test.10):
let Test.29 : U64 = CallByName Test.3 Test.9;
ret Test.29;
else
joinpoint #Derived_gen.3:
joinpoint #Derived_gen.4:
let Test.13 : Str = UnionAtIndex (Id 0) (Index 0) Test.10;
let Test.14 : [<rnu><null>, C Str *self] = UnionAtIndex (Id 0) (Index 1) Test.10;
let Test.33 : U64 = CallByName Test.3 Test.12;
@ -36,15 +36,15 @@ procedure Test.2 (Test.9, Test.10):
else
ret Test.16;
in
let #Derived_gen.4 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.4 then
let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.9;
if #Derived_gen.5 then
dec Test.11;
decref Test.9;
jump #Derived_gen.3;
jump #Derived_gen.4;
else
inc Test.12;
decref Test.9;
jump #Derived_gen.3;
jump #Derived_gen.4;
procedure Test.3 (Test.17):
let Test.26 : U8 = 1i64;
@ -55,22 +55,22 @@ procedure Test.3 (Test.17):
ret Test.22;
else
let Test.18 : [<rnu><null>, C Str *self] = UnionAtIndex (Id 0) (Index 1) Test.17;
joinpoint #Derived_gen.0:
joinpoint #Derived_gen.1:
let Test.24 : U64 = 1i64;
let Test.25 : U64 = CallByName Test.3 Test.18;
let Test.23 : U64 = CallByName Num.19 Test.24 Test.25;
ret Test.23;
in
let #Derived_gen.2 : Int1 = lowlevel RefCountIsUnique Test.17;
if #Derived_gen.2 then
let #Derived_gen.1 : Str = UnionAtIndex (Id 0) (Index 0) Test.17;
dec #Derived_gen.1;
let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique Test.17;
if #Derived_gen.3 then
let #Derived_gen.2 : Str = UnionAtIndex (Id 0) (Index 0) Test.17;
dec #Derived_gen.2;
decref Test.17;
jump #Derived_gen.0;
jump #Derived_gen.1;
else
inc Test.18;
decref Test.17;
jump #Derived_gen.0;
jump #Derived_gen.1;
procedure Test.0 ():
let Test.5 : [<rnu><null>, C Str *self] = TagId(1) ;

View file

@ -6,7 +6,7 @@ procedure Num.20 (#Attr.2, #Attr.3):
let Num.293 : I64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.293;
procedure Test.1 (Test.15, Test.16):
procedure Test.1 (#Derived_gen.0, #Derived_gen.1):
joinpoint Test.7 Test.2 Test.3:
let Test.13 : I64 = 0i64;
let Test.14 : Int1 = lowlevel Eq Test.13 Test.2;
@ -18,7 +18,7 @@ procedure Test.1 (Test.15, Test.16):
let Test.11 : I64 = CallByName Num.19 Test.2 Test.3;
jump Test.7 Test.10 Test.11;
in
jump Test.7 Test.15 Test.16;
jump Test.7 #Derived_gen.0 #Derived_gen.1;
procedure Test.0 ():
let Test.5 : I64 = 1000000i64;

View file

@ -20,12 +20,12 @@ procedure Encode.24 (Encode.99, Encode.107, Encode.101):
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.123 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.123;
let Encode.118 : List U8 = CallByName TotallyNotJson.182 Encode.99 Encode.101 Encode.107;
ret Encode.118;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -136,23 +136,7 @@ procedure List.8 (#Attr.2, #Attr.3):
let List.598 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.598;
procedure List.80 (List.647, List.648, List.649, List.650, List.651):
joinpoint List.553 List.439 List.440 List.441 List.442 List.443:
let List.555 : Int1 = CallByName Num.22 List.442 List.443;
if List.555 then
let List.562 : Str = CallByName List.66 List.439 List.442;
inc List.562;
let List.556 : {List U8, U64} = CallByName List.145 List.440 List.562 List.441;
let List.559 : U64 = 1i64;
let List.558 : U64 = CallByName Num.19 List.442 List.559;
jump List.553 List.439 List.556 List.441 List.558 List.443;
else
dec List.439;
ret List.440;
in
jump List.553 List.647 List.648 List.649 List.650 List.651;
procedure List.80 (List.664, List.665, List.666, List.667, List.668):
procedure List.80 (#Derived_gen.11, #Derived_gen.12, #Derived_gen.13, #Derived_gen.14, #Derived_gen.15):
joinpoint List.573 List.439 List.440 List.441 List.442 List.443:
let List.575 : Int1 = CallByName Num.22 List.442 List.443;
if List.575 then
@ -165,9 +149,9 @@ procedure List.80 (List.664, List.665, List.666, List.667, List.668):
dec List.439;
ret List.440;
in
jump List.573 List.664 List.665 List.666 List.667 List.668;
jump List.573 #Derived_gen.11 #Derived_gen.12 #Derived_gen.13 #Derived_gen.14 #Derived_gen.15;
procedure List.80 (List.691, List.692, List.693, List.694, List.695):
procedure List.80 (#Derived_gen.16, #Derived_gen.17, #Derived_gen.18, #Derived_gen.19, #Derived_gen.20):
joinpoint List.626 List.439 List.440 List.441 List.442 List.443:
let List.628 : Int1 = CallByName Num.22 List.442 List.443;
if List.628 then
@ -191,7 +175,23 @@ procedure List.80 (List.691, List.692, List.693, List.694, List.695):
let List.627 : [C {U64, Int1}, C {U64, Int1}] = TagId(1) List.440;
ret List.627;
in
jump List.626 List.691 List.692 List.693 List.694 List.695;
jump List.626 #Derived_gen.16 #Derived_gen.17 #Derived_gen.18 #Derived_gen.19 #Derived_gen.20;
procedure List.80 (#Derived_gen.6, #Derived_gen.7, #Derived_gen.8, #Derived_gen.9, #Derived_gen.10):
joinpoint List.553 List.439 List.440 List.441 List.442 List.443:
let List.555 : Int1 = CallByName Num.22 List.442 List.443;
if List.555 then
let List.562 : Str = CallByName List.66 List.439 List.442;
inc List.562;
let List.556 : {List U8, U64} = CallByName List.145 List.440 List.562 List.441;
let List.559 : U64 = 1i64;
let List.558 : U64 = CallByName Num.19 List.442 List.559;
jump List.553 List.439 List.556 List.441 List.558 List.443;
else
dec List.439;
ret List.440;
in
jump List.553 #Derived_gen.6 #Derived_gen.7 #Derived_gen.8 #Derived_gen.9 #Derived_gen.10;
procedure List.93 (List.436, List.437, List.438):
let List.551 : U64 = 0i64;
@ -262,8 +262,8 @@ procedure Test.5 (Test.6, Test.7, Test.4):
if Test.25 then
let Test.26 : Str = "A";
let Test.29 : Str = StructAtIndex 0 Test.4;
let #Derived_gen.0 : Str = StructAtIndex 1 Test.4;
dec #Derived_gen.0;
let #Derived_gen.24 : Str = StructAtIndex 1 Test.4;
dec #Derived_gen.24;
let Test.28 : Str = CallByName TotallyNotJson.25 Test.29;
let Test.27 : List Str = Array [Test.28];
let Test.19 : {Str, List Str} = CallByName TotallyNotJson.32 Test.26 Test.27;
@ -271,8 +271,8 @@ procedure Test.5 (Test.6, Test.7, Test.4):
else
let Test.21 : Str = "B";
let Test.24 : Str = StructAtIndex 1 Test.4;
let #Derived_gen.1 : Str = StructAtIndex 0 Test.4;
dec #Derived_gen.1;
let #Derived_gen.25 : Str = StructAtIndex 0 Test.4;
dec #Derived_gen.25;
let Test.23 : Str = CallByName TotallyNotJson.25 Test.24;
let Test.22 : List Str = Array [Test.23];
let Test.19 : {Str, List Str} = CallByName TotallyNotJson.32 Test.21 Test.22;

View file

@ -59,8 +59,8 @@ procedure Test.43 (Test.44, Test.42):
jump Test.62 Test.61;
else
let Test.69 : U8 = StructAtIndex 1 Test.42;
let #Derived_gen.0 : Str = StructAtIndex 0 Test.42;
dec #Derived_gen.0;
let #Derived_gen.5 : Str = StructAtIndex 0 Test.42;
dec #Derived_gen.5;
let Test.63 : Int1 = CallByName Test.15 Test.69;
let Test.61 : Int1 = CallByName Test.14 Test.63;
jump Test.62 Test.61;

View file

@ -48,32 +48,32 @@ procedure Encode.23 (Encode.98):
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
dec Encode.99;
let Encode.138 : Str = "a Lambda Set is empty. Most likely there is a type error in your program.";
Crash Encode.138
let Encode.125 : Str = "a Lambda Set is empty. Most likely there is a type error in your program.";
Crash Encode.125
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.111 : List U8 = CallByName Test.5 Encode.99 Encode.101 Encode.107;
ret Encode.111;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.118 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.118;
let Encode.113 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.113;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.122 : U8 = GetTagId Encode.107;
switch Encode.122:
let Encode.117 : U8 = GetTagId Encode.107;
switch Encode.117:
case 0:
let Encode.121 : List U8 = CallByName #Derived.2 Encode.99 Encode.101 Encode.107;
ret Encode.121;
let Encode.116 : List U8 = CallByName #Derived.2 Encode.99 Encode.101 Encode.107;
ret Encode.116;
default:
let Encode.121 : List U8 = CallByName #Derived.7 Encode.99 Encode.101 Encode.107;
ret Encode.121;
let Encode.116 : List U8 = CallByName #Derived.7 Encode.99 Encode.101 Encode.107;
ret Encode.116;
procedure Encode.24 (Encode.99, Encode.107, Encode.101):
let Encode.134 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.134;
let Encode.121 : List U8 = CallByName TotallyNotJson.264 Encode.99 Encode.101 Encode.107;
ret Encode.121;
procedure Encode.26 (Encode.105, Encode.106):
let Encode.109 : List U8 = Array [];
@ -86,52 +86,67 @@ procedure List.145 (List.146, List.147, List.144):
ret List.566;
procedure List.145 (List.146, List.147, List.144):
let List.639 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.639;
let List.614 : {List U8, U64} = CallByName TotallyNotJson.267 List.146 List.147 List.144;
ret List.614;
procedure List.18 (List.142, List.143, List.144):
let List.547 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.547;
procedure List.18 (List.142, List.143, List.144):
let List.620 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.620;
let List.595 : {List U8, U64} = CallByName List.93 List.142 List.143 List.144;
ret List.595;
procedure List.4 (List.113, List.114):
let List.619 : U64 = 1i64;
let List.618 : List U8 = CallByName List.70 List.113 List.619;
let List.617 : List U8 = CallByName List.71 List.618 List.114;
ret List.617;
let List.594 : U64 = 1i64;
let List.593 : List U8 = CallByName List.70 List.113 List.594;
let List.592 : List U8 = CallByName List.71 List.593 List.114;
ret List.592;
procedure List.6 (#Attr.2):
let List.567 : U64 = lowlevel ListLen #Attr.2;
ret List.567;
procedure List.6 (#Attr.2):
let List.640 : U64 = lowlevel ListLen #Attr.2;
ret List.640;
let List.615 : U64 = lowlevel ListLen #Attr.2;
ret List.615;
procedure List.66 (#Attr.2, #Attr.3):
let List.563 : [C {}, C {}] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.563;
procedure List.66 (#Attr.2, #Attr.3):
let List.636 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.636;
let List.611 : [] = lowlevel ListGetUnsafe #Attr.2 #Attr.3;
ret List.611;
procedure List.70 (#Attr.2, #Attr.3):
let List.598 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.598;
let List.573 : List U8 = lowlevel ListReserve #Attr.2 #Attr.3;
ret List.573;
procedure List.71 (#Attr.2, #Attr.3):
let List.596 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.596;
let List.571 : List U8 = lowlevel ListAppendUnsafe #Attr.2 #Attr.3;
ret List.571;
procedure List.8 (#Attr.2, #Attr.3):
let List.641 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.641;
let List.616 : List U8 = lowlevel ListConcat #Attr.2 #Attr.3;
ret List.616;
procedure List.80 (List.578, List.579, List.580, List.581, List.582):
procedure List.80 (#Derived_gen.21, #Derived_gen.22, #Derived_gen.23, #Derived_gen.24, #Derived_gen.25):
joinpoint List.601 List.439 List.440 List.441 List.442 List.443:
let List.603 : Int1 = CallByName Num.22 List.442 List.443;
if List.603 then
let List.610 : [] = CallByName List.66 List.439 List.442;
let List.604 : {List U8, U64} = CallByName List.145 List.440 List.610 List.441;
let List.607 : U64 = 1i64;
let List.606 : U64 = CallByName Num.19 List.442 List.607;
jump List.601 List.439 List.604 List.441 List.606 List.443;
else
dec List.439;
ret List.440;
in
jump List.601 #Derived_gen.21 #Derived_gen.22 #Derived_gen.23 #Derived_gen.24 #Derived_gen.25;
procedure List.80 (#Derived_gen.29, #Derived_gen.30, #Derived_gen.31, #Derived_gen.32, #Derived_gen.33):
joinpoint List.553 List.439 List.440 List.441 List.442 List.443:
let List.555 : Int1 = CallByName Num.22 List.442 List.443;
if List.555 then
@ -144,22 +159,7 @@ procedure List.80 (List.578, List.579, List.580, List.581, List.582):
dec List.439;
ret List.440;
in
jump List.553 List.578 List.579 List.580 List.581 List.582;
procedure List.80 (List.651, List.652, List.653, List.654, List.655):
joinpoint List.626 List.439 List.440 List.441 List.442 List.443:
let List.628 : Int1 = CallByName Num.22 List.442 List.443;
if List.628 then
let List.635 : [] = CallByName List.66 List.439 List.442;
let List.629 : {List U8, U64} = CallByName List.145 List.440 List.635 List.441;
let List.632 : U64 = 1i64;
let List.631 : U64 = CallByName Num.19 List.442 List.632;
jump List.626 List.439 List.629 List.441 List.631 List.443;
else
dec List.439;
ret List.440;
in
jump List.626 List.651 List.652 List.653 List.654 List.655;
jump List.553 #Derived_gen.29 #Derived_gen.30 #Derived_gen.31 #Derived_gen.32 #Derived_gen.33;
procedure List.93 (List.436, List.437, List.438):
let List.551 : U64 = 0i64;
@ -168,34 +168,34 @@ procedure List.93 (List.436, List.437, List.438):
ret List.550;
procedure List.93 (List.436, List.437, List.438):
let List.624 : U64 = 0i64;
let List.625 : U64 = CallByName List.6 List.436;
let List.623 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.624 List.625;
ret List.623;
let List.599 : U64 = 0i64;
let List.600 : U64 = CallByName List.6 List.436;
let List.598 : {List U8, U64} = CallByName List.80 List.436 List.437 List.438 List.599 List.600;
ret List.598;
procedure Num.127 (#Attr.2):
let Num.320 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.320;
let Num.311 : U8 = lowlevel NumIntCast #Attr.2;
ret Num.311;
procedure Num.19 (#Attr.2, #Attr.3):
let Num.323 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.323;
let Num.314 : U64 = lowlevel NumAdd #Attr.2 #Attr.3;
ret Num.314;
procedure Num.20 (#Attr.2, #Attr.3):
let Num.321 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.321;
let Num.312 : U64 = lowlevel NumSub #Attr.2 #Attr.3;
ret Num.312;
procedure Num.22 (#Attr.2, #Attr.3):
let Num.324 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.324;
let Num.315 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.315;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.322 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.322;
let Num.313 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.313;
procedure Str.12 (#Attr.2):
let Str.300 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.300;
let Str.299 : List U8 = lowlevel StrToUtf8 #Attr.2;
ret Str.299;
procedure Test.2 (Test.11):
let Test.18 : {{}, {}} = CallByName Encode.23 Test.11;
@ -267,34 +267,34 @@ procedure TotallyNotJson.264 (TotallyNotJson.265, TotallyNotJson.1175, #Attr.12)
procedure TotallyNotJson.264 (TotallyNotJson.265, TotallyNotJson.1175, #Attr.12):
let TotallyNotJson.263 : List [] = StructAtIndex 1 #Attr.12;
let TotallyNotJson.262 : Str = StructAtIndex 0 #Attr.12;
let TotallyNotJson.1264 : I64 = 123i64;
let TotallyNotJson.1263 : U8 = CallByName Num.127 TotallyNotJson.1264;
let TotallyNotJson.1260 : List U8 = CallByName List.4 TotallyNotJson.265 TotallyNotJson.1263;
let TotallyNotJson.1262 : I64 = 34i64;
let TotallyNotJson.1261 : U8 = CallByName Num.127 TotallyNotJson.1262;
let TotallyNotJson.1258 : List U8 = CallByName List.4 TotallyNotJson.1260 TotallyNotJson.1261;
let TotallyNotJson.1259 : List U8 = CallByName Str.12 TotallyNotJson.262;
let TotallyNotJson.1255 : List U8 = CallByName List.8 TotallyNotJson.1258 TotallyNotJson.1259;
let TotallyNotJson.1257 : I64 = 34i64;
let TotallyNotJson.1256 : U8 = CallByName Num.127 TotallyNotJson.1257;
let TotallyNotJson.1252 : List U8 = CallByName List.4 TotallyNotJson.1255 TotallyNotJson.1256;
let TotallyNotJson.1254 : I64 = 58i64;
let TotallyNotJson.1256 : I64 = 123i64;
let TotallyNotJson.1255 : U8 = CallByName Num.127 TotallyNotJson.1256;
let TotallyNotJson.1252 : List U8 = CallByName List.4 TotallyNotJson.265 TotallyNotJson.1255;
let TotallyNotJson.1254 : I64 = 34i64;
let TotallyNotJson.1253 : U8 = CallByName Num.127 TotallyNotJson.1254;
let TotallyNotJson.1249 : List U8 = CallByName List.4 TotallyNotJson.1252 TotallyNotJson.1253;
let TotallyNotJson.1251 : I64 = 91i64;
let TotallyNotJson.1250 : U8 = CallByName Num.127 TotallyNotJson.1251;
let TotallyNotJson.268 : List U8 = CallByName List.4 TotallyNotJson.1249 TotallyNotJson.1250;
let TotallyNotJson.1248 : U64 = CallByName List.6 TotallyNotJson.263;
let TotallyNotJson.1236 : {List U8, U64} = Struct {TotallyNotJson.268, TotallyNotJson.1248};
let TotallyNotJson.1235 : {List U8, U64} = CallByName List.18 TotallyNotJson.263 TotallyNotJson.1236 TotallyNotJson.1175;
let TotallyNotJson.270 : List U8 = StructAtIndex 0 TotallyNotJson.1235;
let TotallyNotJson.1234 : I64 = 93i64;
let TotallyNotJson.1233 : U8 = CallByName Num.127 TotallyNotJson.1234;
let TotallyNotJson.1230 : List U8 = CallByName List.4 TotallyNotJson.270 TotallyNotJson.1233;
let TotallyNotJson.1232 : I64 = 125i64;
let TotallyNotJson.1231 : U8 = CallByName Num.127 TotallyNotJson.1232;
let TotallyNotJson.1229 : List U8 = CallByName List.4 TotallyNotJson.1230 TotallyNotJson.1231;
ret TotallyNotJson.1229;
let TotallyNotJson.1250 : List U8 = CallByName List.4 TotallyNotJson.1252 TotallyNotJson.1253;
let TotallyNotJson.1251 : List U8 = CallByName Str.12 TotallyNotJson.262;
let TotallyNotJson.1247 : List U8 = CallByName List.8 TotallyNotJson.1250 TotallyNotJson.1251;
let TotallyNotJson.1249 : I64 = 34i64;
let TotallyNotJson.1248 : U8 = CallByName Num.127 TotallyNotJson.1249;
let TotallyNotJson.1244 : List U8 = CallByName List.4 TotallyNotJson.1247 TotallyNotJson.1248;
let TotallyNotJson.1246 : I64 = 58i64;
let TotallyNotJson.1245 : U8 = CallByName Num.127 TotallyNotJson.1246;
let TotallyNotJson.1241 : List U8 = CallByName List.4 TotallyNotJson.1244 TotallyNotJson.1245;
let TotallyNotJson.1243 : I64 = 91i64;
let TotallyNotJson.1242 : U8 = CallByName Num.127 TotallyNotJson.1243;
let TotallyNotJson.268 : List U8 = CallByName List.4 TotallyNotJson.1241 TotallyNotJson.1242;
let TotallyNotJson.1240 : U64 = CallByName List.6 TotallyNotJson.263;
let TotallyNotJson.1228 : {List U8, U64} = Struct {TotallyNotJson.268, TotallyNotJson.1240};
let TotallyNotJson.1227 : {List U8, U64} = CallByName List.18 TotallyNotJson.263 TotallyNotJson.1228 TotallyNotJson.1175;
let TotallyNotJson.270 : List U8 = StructAtIndex 0 TotallyNotJson.1227;
let TotallyNotJson.1226 : I64 = 93i64;
let TotallyNotJson.1225 : U8 = CallByName Num.127 TotallyNotJson.1226;
let TotallyNotJson.1222 : List U8 = CallByName List.4 TotallyNotJson.270 TotallyNotJson.1225;
let TotallyNotJson.1224 : I64 = 125i64;
let TotallyNotJson.1223 : U8 = CallByName Num.127 TotallyNotJson.1224;
let TotallyNotJson.1221 : List U8 = CallByName List.4 TotallyNotJson.1222 TotallyNotJson.1223;
ret TotallyNotJson.1221;
procedure TotallyNotJson.267 (TotallyNotJson.1177, TotallyNotJson.273, TotallyNotJson.266):
let TotallyNotJson.271 : List U8 = StructAtIndex 0 TotallyNotJson.1177;
@ -320,21 +320,21 @@ procedure TotallyNotJson.267 (TotallyNotJson.1177, TotallyNotJson.273, TotallyNo
let TotallyNotJson.271 : List U8 = StructAtIndex 0 TotallyNotJson.1177;
let TotallyNotJson.272 : U64 = StructAtIndex 1 TotallyNotJson.1177;
let TotallyNotJson.274 : List U8 = CallByName Encode.24 TotallyNotJson.271 TotallyNotJson.273 TotallyNotJson.266;
joinpoint TotallyNotJson.1242 TotallyNotJson.275:
let TotallyNotJson.1240 : U64 = 1i64;
let TotallyNotJson.1239 : U64 = CallByName Num.20 TotallyNotJson.272 TotallyNotJson.1240;
let TotallyNotJson.1238 : {List U8, U64} = Struct {TotallyNotJson.275, TotallyNotJson.1239};
ret TotallyNotJson.1238;
joinpoint TotallyNotJson.1234 TotallyNotJson.275:
let TotallyNotJson.1232 : U64 = 1i64;
let TotallyNotJson.1231 : U64 = CallByName Num.20 TotallyNotJson.272 TotallyNotJson.1232;
let TotallyNotJson.1230 : {List U8, U64} = Struct {TotallyNotJson.275, TotallyNotJson.1231};
ret TotallyNotJson.1230;
in
let TotallyNotJson.1246 : U64 = 1i64;
let TotallyNotJson.1243 : Int1 = CallByName Num.24 TotallyNotJson.272 TotallyNotJson.1246;
if TotallyNotJson.1243 then
let TotallyNotJson.1245 : I64 = 44i64;
let TotallyNotJson.1244 : U8 = CallByName Num.127 TotallyNotJson.1245;
let TotallyNotJson.1241 : List U8 = CallByName List.4 TotallyNotJson.274 TotallyNotJson.1244;
jump TotallyNotJson.1242 TotallyNotJson.1241;
let TotallyNotJson.1238 : U64 = 1i64;
let TotallyNotJson.1235 : Int1 = CallByName Num.24 TotallyNotJson.272 TotallyNotJson.1238;
if TotallyNotJson.1235 then
let TotallyNotJson.1237 : I64 = 44i64;
let TotallyNotJson.1236 : U8 = CallByName Num.127 TotallyNotJson.1237;
let TotallyNotJson.1233 : List U8 = CallByName List.4 TotallyNotJson.274 TotallyNotJson.1236;
jump TotallyNotJson.1234 TotallyNotJson.1233;
else
jump TotallyNotJson.1242 TotallyNotJson.274;
jump TotallyNotJson.1234 TotallyNotJson.274;
procedure TotallyNotJson.32 (TotallyNotJson.262, TotallyNotJson.263):
let TotallyNotJson.1215 : {Str, List [C {}, C {}]} = Struct {TotallyNotJson.262, TotallyNotJson.263};
@ -342,9 +342,9 @@ procedure TotallyNotJson.32 (TotallyNotJson.262, TotallyNotJson.263):
ret TotallyNotJson.1214;
procedure TotallyNotJson.32 (TotallyNotJson.262, TotallyNotJson.263):
let TotallyNotJson.1266 : {Str, List []} = Struct {TotallyNotJson.262, TotallyNotJson.263};
let TotallyNotJson.1265 : {Str, List []} = CallByName Encode.23 TotallyNotJson.1266;
ret TotallyNotJson.1265;
let TotallyNotJson.1258 : {Str, List []} = Struct {TotallyNotJson.262, TotallyNotJson.263};
let TotallyNotJson.1257 : {Str, List []} = CallByName Encode.23 TotallyNotJson.1258;
ret TotallyNotJson.1257;
procedure Test.0 ():
let Test.13 : {{}, {}} = CallByName Test.3;

View file

@ -53,7 +53,7 @@ procedure List.72 (#Attr.2, #Attr.3, #Attr.4):
let List.527 : List U8 = lowlevel ListSublist #Attr.2 #Attr.3 #Attr.4;
ret List.527;
procedure List.80 (List.571, List.572, List.573, List.574, List.575):
procedure List.80 (#Derived_gen.0, #Derived_gen.1, #Derived_gen.2, #Derived_gen.3, #Derived_gen.4):
joinpoint List.545 List.439 List.440 List.441 List.442 List.443:
let List.547 : Int1 = CallByName Num.22 List.442 List.443;
if List.547 then
@ -77,7 +77,7 @@ procedure List.80 (List.571, List.572, List.573, List.574, List.575):
let List.546 : [C U64, C U64] = TagId(1) List.440;
ret List.546;
in
jump List.545 List.571 List.572 List.573 List.574 List.575;
jump List.545 #Derived_gen.0 #Derived_gen.1 #Derived_gen.2 #Derived_gen.3 #Derived_gen.4;
procedure List.93 (List.436, List.437, List.438):
let List.543 : U64 = 0i64;