roc/crates/compiler/test_mono/generated/rb_tree_fbip.txt
2023-06-24 14:49:47 +02:00

486 lines
41 KiB
Text

procedure Num.22 (#Attr.2, #Attr.3):
let Num.295 : Int1 = lowlevel NumLt #Attr.2 #Attr.3;
ret Num.295;
procedure Num.24 (#Attr.2, #Attr.3):
let Num.293 : Int1 = lowlevel NumGt #Attr.2 #Attr.3;
ret Num.293;
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.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.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
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) ;
let Test.282 : I32 = 0i64;
let Test.283 : I64 = 0i64;
let Test.278 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.281 Test.282 Test.283;
let Test.279 : I32 = 5i64;
let Test.280 : I64 = 1i64;
let Test.275 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.278 Test.279 Test.280;
let Test.276 : I32 = 6i64;
let Test.277 : I64 = 2i64;
let Test.272 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.275 Test.276 Test.277;
let Test.273 : I32 = 4i64;
let Test.274 : I64 = 3i64;
let Test.269 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.272 Test.273 Test.274;
let Test.270 : I32 = 9i64;
let Test.271 : I64 = 4i64;
let Test.266 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.269 Test.270 Test.271;
let Test.267 : I32 = 3i64;
let Test.268 : I64 = 5i64;
let Test.263 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.266 Test.267 Test.268;
let Test.264 : I32 = 2i64;
let Test.265 : I64 = 6i64;
let Test.260 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.263 Test.264 Test.265;
let Test.261 : I32 = 1i64;
let Test.262 : I64 = 7i64;
let Test.257 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.260 Test.261 Test.262;
let Test.258 : I32 = 8i64;
let Test.259 : I64 = 8i64;
let Test.107 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.257 Test.258 Test.259;
let Test.108 : I32 = 7i64;
let Test.109 : I64 = 9i64;
let Test.106 : [<rnu>C *self I64 *self I32 Int1, <null>] = CallByName Test.3 Test.107 Test.108 Test.109;
ret Test.106;