procedure Num.22 (#Attr.2, #Attr.3): let Num.284 : Int1 = lowlevel NumLt #Attr.2 #Attr.3; ret Num.284; procedure Num.24 (#Attr.2, #Attr.3): let Num.282 : Int1 = lowlevel NumGt #Attr.2 #Attr.3; ret Num.282; 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 : [C *self I64 *self I32 Int1, ] = TagId(0) ; let Test.114 : [C *self I64 *self I32 Int1, ] = TagId(0) ; let Test.112 : Int1 = true; let Test.111 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.9; let Test.18 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9; let Test.19 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.9; let Test.17 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9; joinpoint #Derived_gen.16 #Derived_gen.22: let Test.179 : Int1 = CallByName Num.22 Test.10 Test.17; if Test.179 then joinpoint Test.238 #Derived_gen.96: let Test.233 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.16 Test.10 Test.11; let Test.232 : Int1 = false; let Test.231 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.96 UpdateModeId { id: 71 } 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 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.16 Test.10 Test.11; joinpoint Test.199 #Derived_gen.128: let Test.198 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.180; let Test.20 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.198; inc Test.20; let Test.22 : I64 = UnionAtIndex (Id 1) (Index 1) Test.198; let Test.23 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.180; let Test.24 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180; joinpoint #Derived_gen.0 #Derived_gen.132 #Derived_gen.133 #Derived_gen.134: let Test.186 : Int1 = false; let Test.183 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.134 UpdateModeId { id: 107 } TagId(1) Test.20 Test.22 Test.23 Test.21 Test.186; let Test.185 : Int1 = false; let Test.184 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.133 UpdateModeId { id: 106 } TagId(1) Test.26 Test.18 Test.19 Test.17 Test.185; let Test.182 : Int1 = true; let Test.181 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.132 UpdateModeId { id: 105 } TagId(1) Test.183 Test.25 Test.184 Test.24 Test.182; ret Test.181; in let #Derived_gen.1 : Int1 = lowlevel RefCountIsUnique Test.180; if #Derived_gen.1 then let #Derived_gen.135 : [C *self I64 *self I32 Int1, ] = Reset { symbol: Test.198, id: UpdateModeId { id: 108 } }; let #Derived_gen.136 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 109 } }; jump #Derived_gen.0 #Derived_gen.136 #Derived_gen.135 #Derived_gen.128; else inc Test.26; let #Derived_gen.137 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 110 } }; let #Derived_gen.138 : [C *self I64 *self I32 Int1, ] = NullPointer; jump #Derived_gen.0 #Derived_gen.137 #Derived_gen.128 #Derived_gen.138; 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.150: joinpoint Test.216 #Derived_gen.151: let Test.46 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.180; let Test.48 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180; let Test.49 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.180; let Test.47 : I32 = UnionAtIndex (Id 1) (Index 3) Test.180; joinpoint #Derived_gen.2 #Derived_gen.154 #Derived_gen.155: let Test.196 : Int1 = true; let Test.195 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.155 UpdateModeId { id: 126 } TagId(1) Test.46 Test.48 Test.49 Test.47 Test.196; let Test.194 : Int1 = false; let Test.193 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.154 UpdateModeId { id: 125 } TagId(1) Test.195 Test.18 Test.19 Test.17 Test.194; ret Test.193; in let #Derived_gen.3 : Int1 = lowlevel RefCountIsUnique Test.180; if #Derived_gen.3 then let #Derived_gen.156 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 127 } }; jump #Derived_gen.2 #Derived_gen.156 #Derived_gen.151; else inc Test.46; inc Test.49; let #Derived_gen.157 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 128 } }; jump #Derived_gen.2 #Derived_gen.157 #Derived_gen.151; in let Test.213 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.150; else jump Test.216 #Derived_gen.150; else jump Test.216 #Derived_gen.150; in let Test.222 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.158: let Test.33 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.180; let Test.35 : I64 = UnionAtIndex (Id 1) (Index 1) Test.180; let Test.200 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.180; let Test.36 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.200; inc Test.36; let Test.38 : I64 = UnionAtIndex (Id 1) (Index 1) Test.200; let Test.39 : [C *self I64 *self I32 Int1, ] = 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.4 #Derived_gen.162 #Derived_gen.163 #Derived_gen.164: let Test.192 : Int1 = false; let Test.189 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.164 UpdateModeId { id: 135 } TagId(1) Test.33 Test.35 Test.36 Test.34 Test.192; let Test.191 : Int1 = false; let Test.190 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.163 UpdateModeId { id: 134 } TagId(1) Test.39 Test.18 Test.19 Test.17 Test.191; let Test.188 : Int1 = true; let Test.187 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.162 UpdateModeId { id: 133 } TagId(1) Test.189 Test.38 Test.190 Test.37 Test.188; ret Test.187; in let #Derived_gen.5 : Int1 = lowlevel RefCountIsUnique Test.180; if #Derived_gen.5 then let #Derived_gen.165 : [C *self I64 *self I32 Int1, ] = Reset { symbol: Test.200, id: UpdateModeId { id: 136 } }; let #Derived_gen.166 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 137 } }; jump #Derived_gen.4 #Derived_gen.166 #Derived_gen.165 #Derived_gen.158; else inc Test.33; let #Derived_gen.167 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.180, id: UpdateModeId { id: 138 } }; let #Derived_gen.168 : [C *self I64 *self I32 Int1, ] = NullPointer; jump #Derived_gen.4 #Derived_gen.167 #Derived_gen.158 #Derived_gen.168; in let Test.204 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.22; else jump Test.207 #Derived_gen.22; else jump Test.207 #Derived_gen.22; else jump Test.225 #Derived_gen.22; else jump Test.225 #Derived_gen.22; else decref #Derived_gen.22; dec Test.19; let Test.197 : [C *self I64 *self I32 Int1, ] = TagId(0) ; ret Test.197; else jump Test.238 #Derived_gen.22; else jump Test.238 #Derived_gen.22; else let Test.117 : Int1 = CallByName Num.24 Test.10 Test.17; if Test.117 then joinpoint Test.176 #Derived_gen.271: let Test.171 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.19 Test.10 Test.11; let Test.170 : Int1 = false; let Test.169 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.271 UpdateModeId { id: 241 } 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 let #Derived_gen.272 : [C *self I64 *self I32 Int1, ] = Reset { symbol: Test.16, id: UpdateModeId { id: 242 } }; inc Test.19; let Test.118 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.19 Test.10 Test.11; joinpoint Test.137 #Derived_gen.317 #Derived_gen.318: let Test.136 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.118; let Test.57 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.136; inc Test.57; let Test.59 : I64 = UnionAtIndex (Id 1) (Index 1) Test.136; let Test.60 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.118; let Test.61 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118; joinpoint #Derived_gen.6 #Derived_gen.323 #Derived_gen.324 #Derived_gen.325: let Test.124 : Int1 = false; let Test.121 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.325 UpdateModeId { id: 295 } TagId(1) Test.57 Test.59 Test.60 Test.58 Test.124; let Test.123 : Int1 = false; let Test.122 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.324 UpdateModeId { id: 294 } TagId(1) Test.63 Test.18 Test.19 Test.17 Test.123; let Test.120 : Int1 = true; let Test.119 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.323 UpdateModeId { id: 293 } TagId(1) Test.121 Test.62 Test.122 Test.61 Test.120; ret Test.119; in let #Derived_gen.7 : Int1 = lowlevel RefCountIsUnique Test.118; if #Derived_gen.7 then decref #Derived_gen.317; let #Derived_gen.326 : [C *self I64 *self I32 Int1, ] = Reset { symbol: Test.136, id: UpdateModeId { id: 296 } }; let #Derived_gen.327 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 297 } }; jump #Derived_gen.6 #Derived_gen.327 #Derived_gen.326 #Derived_gen.318; else inc Test.63; let #Derived_gen.328 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 298 } }; jump #Derived_gen.6 #Derived_gen.328 #Derived_gen.318 #Derived_gen.317; 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.341 #Derived_gen.342: joinpoint Test.154 #Derived_gen.344: let Test.83 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.118; let Test.85 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118; let Test.86 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.118; let Test.84 : I32 = UnionAtIndex (Id 1) (Index 3) Test.118; joinpoint #Derived_gen.8 #Derived_gen.348 #Derived_gen.349: let Test.134 : Int1 = true; let Test.133 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.349 UpdateModeId { id: 319 } TagId(1) Test.83 Test.85 Test.86 Test.84 Test.134; let Test.132 : Int1 = false; let Test.131 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.348 UpdateModeId { id: 318 } TagId(1) Test.133 Test.18 Test.19 Test.17 Test.132; ret Test.131; in let #Derived_gen.9 : Int1 = lowlevel RefCountIsUnique Test.118; if #Derived_gen.9 then let #Derived_gen.350 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 320 } }; jump #Derived_gen.8 #Derived_gen.350 #Derived_gen.344; else inc Test.83; inc Test.86; let #Derived_gen.351 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 321 } }; jump #Derived_gen.8 #Derived_gen.351 #Derived_gen.344; in let Test.151 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.342 #Derived_gen.341; else decref #Derived_gen.341; jump Test.154 #Derived_gen.342; else decref #Derived_gen.341; jump Test.154 #Derived_gen.342; in let Test.160 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.352 #Derived_gen.353: let Test.70 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.118; let Test.72 : I64 = UnionAtIndex (Id 1) (Index 1) Test.118; let Test.138 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.118; let Test.73 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.138; inc Test.73; let Test.75 : I64 = UnionAtIndex (Id 1) (Index 1) Test.138; let Test.76 : [C *self I64 *self I32 Int1, ] = 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.10 #Derived_gen.358 #Derived_gen.359 #Derived_gen.360: let Test.130 : Int1 = false; let Test.127 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.360 UpdateModeId { id: 330 } TagId(1) Test.70 Test.72 Test.73 Test.71 Test.130; let Test.129 : Int1 = false; let Test.128 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.359 UpdateModeId { id: 329 } TagId(1) Test.76 Test.18 Test.19 Test.17 Test.129; let Test.126 : Int1 = true; let Test.125 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.358 UpdateModeId { id: 328 } TagId(1) Test.127 Test.75 Test.128 Test.74 Test.126; ret Test.125; in let #Derived_gen.11 : Int1 = lowlevel RefCountIsUnique Test.118; if #Derived_gen.11 then decref #Derived_gen.352; let #Derived_gen.361 : [C *self I64 *self I32 Int1, ] = Reset { symbol: Test.138, id: UpdateModeId { id: 331 } }; let #Derived_gen.362 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 332 } }; jump #Derived_gen.10 #Derived_gen.362 #Derived_gen.361 #Derived_gen.353; else inc Test.70; let #Derived_gen.363 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.118, id: UpdateModeId { id: 333 } }; jump #Derived_gen.10 #Derived_gen.363 #Derived_gen.353 #Derived_gen.352; in let Test.142 : [C *self I64 *self I32 Int1, ] = 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 : [C *self I64 *self I32 Int1, ] = 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.272 #Derived_gen.22; else jump Test.145 #Derived_gen.272 #Derived_gen.22; else jump Test.145 #Derived_gen.272 #Derived_gen.22; else jump Test.163 #Derived_gen.272 #Derived_gen.22; else jump Test.163 #Derived_gen.272 #Derived_gen.22; else decref #Derived_gen.272; decref #Derived_gen.22; joinpoint #Derived_gen.12: let Test.135 : [C *self I64 *self I32 Int1, ] = TagId(0) ; ret Test.135; in let #Derived_gen.15 : Int1 = lowlevel RefCountIsUnique Test.19; if #Derived_gen.15 then let #Derived_gen.14 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.19; dec #Derived_gen.14; let #Derived_gen.13 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.19; dec #Derived_gen.13; decref Test.19; jump #Derived_gen.12; else decref Test.19; jump #Derived_gen.12; else jump Test.176 #Derived_gen.22; else jump Test.176 #Derived_gen.22; else let Test.116 : Int1 = false; let Test.115 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.22 UpdateModeId { id: 2 } TagId(1) Test.16 Test.11 Test.19 Test.10 Test.116; ret Test.115; in let #Derived_gen.17 : Int1 = lowlevel RefCountIsUnique Test.9; if #Derived_gen.17 then let #Derived_gen.373 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 343 } }; jump #Derived_gen.16 #Derived_gen.373; else inc Test.16; inc Test.19; let #Derived_gen.374 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 344 } }; jump #Derived_gen.16 #Derived_gen.374; else let Test.96 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 0) Test.9; let Test.98 : I64 = UnionAtIndex (Id 1) (Index 1) Test.9; let Test.99 : [C *self I64 *self I32 Int1, ] = UnionAtIndex (Id 1) (Index 2) Test.9; let Test.97 : I32 = UnionAtIndex (Id 1) (Index 3) Test.9; joinpoint #Derived_gen.18 #Derived_gen.377: let Test.247 : Int1 = CallByName Num.22 Test.10 Test.97; if Test.247 then let Test.250 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.96 Test.10 Test.11; let Test.249 : Int1 = true; let Test.248 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.377 UpdateModeId { id: 347 } 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 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.99 Test.10 Test.11; let Test.245 : Int1 = true; let Test.244 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.377 UpdateModeId { id: 347 } TagId(1) Test.96 Test.98 Test.246 Test.97 Test.245; ret Test.244; else let Test.242 : Int1 = true; let Test.241 : [C *self I64 *self I32 Int1, ] = Reuse #Derived_gen.377 UpdateModeId { id: 347 } TagId(1) Test.96 Test.11 Test.99 Test.10 Test.242; ret Test.241; in let #Derived_gen.19 : Int1 = lowlevel RefCountIsUnique Test.9; if #Derived_gen.19 then let #Derived_gen.378 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 348 } }; jump #Derived_gen.18 #Derived_gen.378; else inc Test.96; inc Test.99; let #Derived_gen.379 : [C *self I64 *self I32 Int1, ] = ResetRef { symbol: Test.9, id: UpdateModeId { id: 349 } }; jump #Derived_gen.18 #Derived_gen.379; procedure Test.0 (): let Test.281 : [C *self I64 *self I32 Int1, ] = TagId(0) ; let Test.282 : I32 = 0i64; let Test.283 : I64 = 0i64; let Test.278 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.281 Test.282 Test.283; let Test.279 : I32 = 5i64; let Test.280 : I64 = 1i64; let Test.275 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.278 Test.279 Test.280; let Test.276 : I32 = 6i64; let Test.277 : I64 = 2i64; let Test.272 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.275 Test.276 Test.277; let Test.273 : I32 = 4i64; let Test.274 : I64 = 3i64; let Test.269 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.272 Test.273 Test.274; let Test.270 : I32 = 9i64; let Test.271 : I64 = 4i64; let Test.266 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.269 Test.270 Test.271; let Test.267 : I32 = 3i64; let Test.268 : I64 = 5i64; let Test.263 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.266 Test.267 Test.268; let Test.264 : I32 = 2i64; let Test.265 : I64 = 6i64; let Test.260 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.263 Test.264 Test.265; let Test.261 : I32 = 1i64; let Test.262 : I64 = 7i64; let Test.257 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.260 Test.261 Test.262; let Test.258 : I32 = 8i64; let Test.259 : I64 = 8i64; let Test.107 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.257 Test.258 Test.259; let Test.108 : I32 = 7i64; let Test.109 : I64 = 9i64; let Test.106 : [C *self I64 *self I32 Int1, ] = CallByName Test.3 Test.107 Test.108 Test.109; ret Test.106;