summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Interpreter.ml33
-rw-r--r--src/InterpreterBorrows.ml131
-rw-r--r--src/InterpreterBorrowsCore.ml16
-rw-r--r--src/InterpreterExpansion.ml35
-rw-r--r--src/InterpreterExpressions.ml48
-rw-r--r--src/InterpreterPaths.ml11
-rw-r--r--src/InterpreterProjectors.ml27
-rw-r--r--src/InterpreterStatements.ml91
-rw-r--r--src/InterpreterUtils.ml21
-rw-r--r--src/Invariants.ml92
-rw-r--r--src/Logging.ml34
-rw-r--r--src/Print.ml25
-rw-r--r--src/Values.ml56
-rw-r--r--src/main.ml17
-rw-r--r--tests/trace_reference.txt56994
15 files changed, 48203 insertions, 9428 deletions
diff --git a/src/Interpreter.ml b/src/Interpreter.ml
index 2789517e..f38cb66e 100644
--- a/src/Interpreter.ml
+++ b/src/Interpreter.ml
@@ -21,6 +21,9 @@ open InterpreterStatements
(* TODO: remove the config parameters when they are useless *)
+(** The local logger *)
+let log = L.interpreter_log
+
module Test = struct
let initialize_context (type_context : C.type_context)
(fun_defs : A.fun_def list) (type_vars : T.type_var list) : C.eval_ctx =
@@ -66,29 +69,23 @@ module Test = struct
let input_svs =
List.map (fun ty -> mk_fresh_symbolic_value ty) inst_sg.inputs
in
- (* Create the abstractions and insert them in the context *)
- let create_abs (ctx : C.eval_ctx) (rg : A.abs_region_group) : C.eval_ctx =
- let abs_id = rg.A.id in
- let parents =
- List.fold_left
- (fun s pid -> V.AbstractionId.Set.add pid s)
- V.AbstractionId.Set.empty rg.A.parents
- in
- let regions =
- List.fold_left
- (fun s rid -> T.RegionId.Set.add rid s)
- T.RegionId.Set.empty rg.A.regions
- in
+ (* Initialize the abstractions as empty (i.e., with no avalues) abstractions *)
+ let empty_absl =
+ create_empty_abstractions_from_abs_region_groups
+ inst_sg.A.regions_hierarchy
+ in
+ (* Add the avalues to the abstractions and insert them in the context *)
+ let insert_abs (ctx : C.eval_ctx) (abs : V.abs) : C.eval_ctx =
(* Project over the values - we use *loan* projectors, as explained above *)
let avalues = List.map mk_aproj_loans_from_symbolic_value input_svs in
- (* Create the abstraction *)
- let abs = { V.abs_id; parents; regions; avalues } in
+ (* Insert the avalues in the abstraction *)
+ let abs = { abs with avalues } in
(* Insert the abstraction in the context *)
let ctx = { ctx with env = Abs abs :: ctx.env } in
(* Return *)
ctx
in
- let ctx = List.fold_left create_abs ctx inst_sg.regions_hierarchy in
+ let ctx = List.fold_left insert_abs ctx empty_absl in
(* Split the variables between return var, inputs and remaining locals *)
let ret_var = List.hd fdef.locals in
let input_vars, local_vars =
@@ -113,7 +110,7 @@ module Test = struct
let fdef = A.FunDefId.nth fun_defs fid in
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy ("test_unit_function: " ^ Print.Types.name_to_string fdef.A.name));
(* Sanity check - *)
@@ -164,7 +161,7 @@ module Test = struct
let fdef = A.FunDefId.nth fun_defs fid in
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy
("test_function_symbolic: " ^ Print.Types.name_to_string fdef.A.name));
diff --git a/src/InterpreterBorrows.ml b/src/InterpreterBorrows.ml
index 1dd4d247..c651e2f1 100644
--- a/src/InterpreterBorrows.ml
+++ b/src/InterpreterBorrows.ml
@@ -169,9 +169,14 @@ let end_borrow_get_borrow (io : inner_outer)
* of the two cases described above *)
V.ABottom)
else V.ABorrow (super#visit_ASharedBorrow outer bid)
- | V.AIgnoredMutBorrow av ->
+ | V.AIgnoredMutBorrow (opt_bid, av) ->
(* Nothing special to do *)
- V.ABorrow (super#visit_AIgnoredMutBorrow outer av)
+ V.ABorrow (super#visit_AIgnoredMutBorrow outer opt_bid av)
+ | V.AEndedIgnoredMutBorrow { given_back_loans_proj; child } ->
+ (* Nothing special to do *)
+ V.ABorrow
+ (super#visit_AEndedIgnoredMutBorrow outer given_back_loans_proj
+ child)
| V.AProjSharedBorrow asb ->
(* Check if the borrow we are looking for is in the asb *)
if borrow_in_asb l asb then (
@@ -232,7 +237,18 @@ let give_back_value (config : C.config) (bid : V.BorrowId.id)
object (self)
inherit [_] C.map_eval_ctx as super
- method! visit_Loan opt_abs lc =
+ method! visit_typed_value opt_abs (v : V.typed_value) : V.typed_value =
+ match v.V.value with
+ | V.Loan lc ->
+ let value = self#visit_typed_Loan opt_abs v.V.ty lc in
+ ({ v with V.value } : V.typed_value)
+ | _ -> super#visit_typed_value opt_abs v
+ (** This is a bit annoying, but as we need the type of the value we
+ are exploring, for sanity checks, we need to implement
+ [visit_typed_avalue] instead of
+ overriding [visit_ALoan] *)
+
+ method visit_typed_Loan opt_abs ty lc =
match lc with
| V.SharedLoan (bids, v) ->
(* We are giving back a value (i.e., the content of a *mutable*
@@ -241,6 +257,15 @@ let give_back_value (config : C.config) (bid : V.BorrowId.id)
| V.MutLoan bid' ->
(* Check if this is the loan we are looking for *)
if bid' = bid then (
+ (* Sanity check *)
+ let expected_ty = ty in
+ if nv.V.ty <> expected_ty then (
+ log#serror
+ ("give_back_value: improper type:\n- expected: "
+ ^ ety_to_string ctx ty ^ "\n- received: "
+ ^ ety_to_string ctx nv.V.ty);
+ failwith "Value given back doesn't have the proper type");
+ (* Replace *)
set_replaced ();
nv.V.value)
else V.Loan (super#visit_MutLoan opt_abs bid')
@@ -257,15 +282,46 @@ let give_back_value (config : C.config) (bid : V.BorrowId.id)
back, we need to reimplement [visit_typed_avalue] instead of
[visit_ALoan] *)
+ method! visit_ABorrow (opt_abs : V.abs option) (bc : V.aborrow_content)
+ : V.avalue =
+ match bc with
+ | V.AIgnoredMutBorrow (bid', child) ->
+ if bid' = Some bid then
+ (* Insert a loans projector - note that if this case happens,
+ * it is necessarily because we ended a parent abstraction,
+ * and the given back value is thus a symbolic value *)
+ match nv.V.value with
+ | V.Symbolic sv ->
+ (* The loan projector *)
+ let given_back_loans_proj =
+ mk_aproj_loans_from_symbolic_value sv
+ in
+ (* Continue giving back in the child value *)
+ let child = super#visit_typed_avalue opt_abs child in
+ (* Return *)
+ V.ABorrow
+ (V.AEndedIgnoredMutBorrow { given_back_loans_proj; child })
+ | _ -> failwith "Unreachable"
+ else
+ (* Continue exploring *)
+ V.ABorrow (super#visit_AIgnoredMutBorrow opt_abs bid' child)
+ | _ ->
+ (* Continue exploring *)
+ super#visit_ABorrow opt_abs bc
+ (** We need to inspect ignored mutable borrows, to insert loan projectors
+ if necessary.
+ *)
+
method visit_typed_ALoan (opt_abs : V.abs option) (ty : T.rty)
(lc : V.aloan_content) : V.avalue =
(* Preparing a bit *)
- let regions =
+ let regions, ancestors_regions =
match opt_abs with
| None -> failwith "Unreachable"
- | Some abs -> abs.V.regions
+ | Some abs -> (abs.V.regions, abs.V.ancestors_regions)
in
- (* Rk.: there is a small issue with the types of the aloan values *)
+ (* Rk.: there is a small issue with the types of the aloan values.
+ * See the comment at the level of definition of [typed_avalue] *)
let borrowed_value_aty =
let _, ty, _ = ty_get_ref ty in
ty
@@ -281,8 +337,10 @@ let give_back_value (config : C.config) (bid : V.BorrowId.id)
(* Apply the projection *)
let given_back =
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- regions nv borrowed_value_aty
+ regions ancestors_regions nv borrowed_value_aty
in
+ (* Continue giving back in the child value *)
+ let child = super#visit_typed_avalue opt_abs child in
(* Return the new value *)
V.ALoan (V.AEndedMutLoan { given_back; child }))
else
@@ -307,8 +365,10 @@ let give_back_value (config : C.config) (bid : V.BorrowId.id)
* (i.e., we don't call [set_replaced]) *)
let given_back =
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- regions nv borrowed_value_aty
+ regions ancestors_regions nv borrowed_value_aty
in
+ (* Continue giving back in the child value *)
+ let child = super#visit_typed_avalue opt_abs child in
V.ALoan (V.AEndedIgnoredMutLoan { given_back; child })
else V.ALoan (super#visit_AIgnoredMutLoan opt_abs bid' child)
| V.AEndedIgnoredMutLoan { given_back; child } ->
@@ -378,13 +438,22 @@ let give_back_avalue (_config : C.config) (bid : V.BorrowId.id)
match lc with
| V.AMutLoan (bid', child) ->
if bid' = bid then (
+ (* Sanity check - about why we need to call [ty_get_ref]
+ * (and don't do the same thing as in [give_back_value])
+ * see the comment at the level of the definition of
+ * [typed_avalue] *)
+ let _, expected_ty, _ = ty_get_ref ty in
+ if nv.V.ty <> expected_ty then (
+ log#serror
+ ("give_back_avalue: improper type:\n- expected: "
+ ^ rty_to_string ctx ty ^ "\n- received: "
+ ^ rty_to_string ctx nv.V.ty);
+ failwith "Value given back doesn't have the proper type");
(* This is the loan we are looking for: apply the projection to
* the value we give back and replaced this mutable loan with
* an ended loan *)
(* Register the insertion *)
set_replaced ();
- (* Sanity check *)
- assert (nv.V.ty = ty);
(* Return the new value *)
V.ALoan (V.AEndedMutLoan { given_back = nv; child }))
else
@@ -600,7 +669,8 @@ let give_back (config : C.config) (l : V.BorrowId.id) (bc : g_borrow_content)
assert (borrow_in_asb l asb);
(* Update the context *)
give_back_shared config l ctx
- | Abstract (V.AIgnoredMutBorrow _) -> failwith "Unreachable"
+ | Abstract (V.AIgnoredMutBorrow _ | V.AEndedIgnoredMutBorrow _) ->
+ failwith "Unreachable"
(** Convert an [avalue] to a [value].
@@ -743,12 +813,30 @@ and end_borrows (config : C.config) (io : inner_outer)
and end_abstraction (config : C.config) (abs_id : V.AbstractionId.id)
(ctx : C.eval_ctx) : C.eval_ctx =
+ (* Remember the original context for printing purposes *)
+ let ctx0 = ctx in
+ log#ldebug
+ (lazy
+ ("end_abstraction: "
+ ^ V.AbstractionId.to_string abs_id
+ ^ "\n- original context:\n" ^ eval_ctx_to_string ctx0));
(* Lookup the abstraction *)
let abs = C.ctx_lookup_abs ctx abs_id in
(* End the parent abstractions first *)
let ctx = end_abstractions config abs.parents ctx in
+ log#ldebug
+ (lazy
+ ("end_abstraction: "
+ ^ V.AbstractionId.to_string abs_id
+ ^ "\n- context after parent abstractions ended:\n"
+ ^ eval_ctx_to_string ctx));
(* End the loans inside the abstraction *)
let ctx = end_abstraction_loans config abs_id ctx in
+ log#ldebug
+ (lazy
+ ("end_abstraction: "
+ ^ V.AbstractionId.to_string abs_id
+ ^ "\n- context after loans ended:\n" ^ eval_ctx_to_string ctx));
(* End the abstraction itself by redistributing the borrows it contains *)
let ctx = end_abstraction_borrows config abs_id ctx in
(* End the regions owned by the abstraction - note that we don't need to
@@ -762,7 +850,16 @@ and end_abstraction (config : C.config) (abs_id : V.AbstractionId.id)
in
(* Remove all the references to the id of the current abstraction, and remove
* the abstraction itself *)
- end_abstraction_remove_from_context config abs_id ctx
+ let ctx = end_abstraction_remove_from_context config abs_id ctx in
+ (* Debugging *)
+ log#ldebug
+ (lazy
+ ("end_abstraction: "
+ ^ V.AbstractionId.to_string abs_id
+ ^ "\n- original context:\n" ^ eval_ctx_to_string ctx0
+ ^ "\n\n- new context:\n" ^ eval_ctx_to_string ctx));
+ (* Return *)
+ ctx
and end_abstractions (config : C.config) (abs_ids : V.AbstractionId.set_t)
(ctx : C.eval_ctx) : C.eval_ctx =
@@ -862,7 +959,7 @@ and end_abstraction_borrows (config : C.config) (abs_id : V.AbstractionId.id)
asb
then raise (FoundABorrowContent bc)
else ()
- | V.AIgnoredMutBorrow _ ->
+ | V.AIgnoredMutBorrow _ | V.AEndedIgnoredMutBorrow _ ->
(* Nothing to do for ignored borrows *)
()
end
@@ -891,7 +988,8 @@ and end_abstraction_borrows (config : C.config) (abs_id : V.AbstractionId.id)
with
| V.AsbBorrow bid -> bid
| _ -> failwith "Unexpected")
- | V.AIgnoredMutBorrow _ -> failwith "Unexpected"
+ | V.AIgnoredMutBorrow _ | V.AEndedIgnoredMutBorrow _ ->
+ failwith "Unexpected"
in
let ctx = update_aborrow ek_all bid V.ABottom ctx in
(* Then give back the value *)
@@ -905,7 +1003,8 @@ and end_abstraction_borrows (config : C.config) (abs_id : V.AbstractionId.id)
| V.AProjSharedBorrow _ ->
(* Nothing to do *)
ctx
- | V.AIgnoredMutBorrow _ -> failwith "Unexpected"
+ | V.AIgnoredMutBorrow _ | V.AEndedIgnoredMutBorrow _ ->
+ failwith "Unexpected"
in
(* Reexplore *)
end_abstraction_borrows config abs_id ctx
@@ -1031,7 +1130,7 @@ let rec activate_inactivated_mut_borrow (config : C.config) (io : inner_outer)
| None ->
(* No loan to end inside the value *)
(* Some sanity checks *)
- L.log#ldebug
+ log#ldebug
(lazy
("activate_inactivated_mut_borrow: resulting value:\n"
^ V.show_typed_value sv));
diff --git a/src/InterpreterBorrowsCore.ml b/src/InterpreterBorrowsCore.ml
index bc2f5971..b590eff6 100644
--- a/src/InterpreterBorrowsCore.ml
+++ b/src/InterpreterBorrowsCore.ml
@@ -9,6 +9,9 @@ module Subst = Substitute
module L = Logging
open InterpreterUtils
+(** The local logger *)
+let log = L.borrows_log
+
(** TODO: cleanup this a bit, once we have a better understanding about
what we need.
TODO: I'm not sure in which file this should be moved... *)
@@ -302,7 +305,10 @@ let lookup_borrow_opt (ek : exploration_kind) (l : V.BorrowId.id)
| V.ASharedBorrow bid ->
if bid = l then raise (FoundGBorrowContent (Abstract bc))
else super#visit_ASharedBorrow env bid
- | V.AIgnoredMutBorrow av -> super#visit_AIgnoredMutBorrow env av
+ | V.AIgnoredMutBorrow (opt_bid, av) ->
+ super#visit_AIgnoredMutBorrow env opt_bid av
+ | V.AEndedIgnoredMutBorrow { given_back_loans_proj; child } ->
+ super#visit_AEndedIgnoredMutBorrow env given_back_loans_proj child
| V.AProjSharedBorrow asb ->
if borrow_in_asb l asb then
raise (FoundGBorrowContent (Abstract bc))
@@ -415,8 +421,12 @@ let update_aborrow (ek : exploration_kind) (l : V.BorrowId.id) (nv : V.avalue)
| V.ASharedBorrow bid ->
if bid = l then update ()
else V.ABorrow (super#visit_ASharedBorrow env bid)
- | V.AIgnoredMutBorrow av ->
- V.ABorrow (super#visit_AIgnoredMutBorrow env av)
+ | V.AIgnoredMutBorrow (opt_bid, av) ->
+ V.ABorrow (super#visit_AIgnoredMutBorrow env opt_bid av)
+ | V.AEndedIgnoredMutBorrow { given_back_loans_proj; child } ->
+ V.ABorrow
+ (super#visit_AEndedIgnoredMutBorrow env given_back_loans_proj
+ child)
| V.AProjSharedBorrow asb ->
if borrow_in_asb l asb then update ()
else V.ABorrow (super#visit_AProjSharedBorrow env asb)
diff --git a/src/InterpreterExpansion.ml b/src/InterpreterExpansion.ml
index 345c3df3..e19f8bb4 100644
--- a/src/InterpreterExpansion.ml
+++ b/src/InterpreterExpansion.ml
@@ -16,6 +16,9 @@ open InterpreterUtils
open InterpreterProjectors
open InterpreterBorrows
+(** The local logger *)
+let log = L.expansion_log
+
(** Projector kind *)
type proj_kind = LoanProj | BorrowProj
@@ -60,15 +63,17 @@ let apply_symbolic_expansion_to_target_avalues (config : C.config)
object
inherit [_] C.map_eval_ctx as super
- method! visit_abs proj_regions abs =
- assert (Option.is_none proj_regions);
- let proj_regions = Some abs.V.regions in
- super#visit_abs proj_regions abs
+ method! visit_abs current_abs abs =
+ assert (Option.is_none current_abs);
+ let current_abs = Some abs in
+ super#visit_abs current_abs abs
(** When visiting an abstraction, we remember the regions it owns to be
able to properly reduce projectors when expanding symbolic values *)
- method! visit_ASymbolic proj_regions aproj =
- let proj_regions = Option.get proj_regions in
+ method! visit_ASymbolic current_abs aproj =
+ let current_abs = Option.get current_abs in
+ let proj_regions = current_abs.regions in
+ let ancestors_regions = current_abs.ancestors_regions in
match (aproj, proj_kind) with
| V.AProjLoans sv, LoanProj ->
(* Check if this is the symbolic value we are looking for *)
@@ -82,7 +87,7 @@ let apply_symbolic_expansion_to_target_avalues (config : C.config)
projected_value.V.value
else
(* Not the searched symbolic value: nothing to do *)
- super#visit_ASymbolic (Some proj_regions) aproj
+ super#visit_ASymbolic (Some current_abs) aproj
| V.AProjBorrows (sv, proj_ty), BorrowProj ->
(* Check if this is the symbolic value we are looking for *)
if same_symbolic_id sv original_sv then
@@ -98,16 +103,16 @@ let apply_symbolic_expansion_to_target_avalues (config : C.config)
(* Apply the projector *)
let projected_value =
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- proj_regions expansion proj_ty
+ proj_regions ancestors_regions expansion proj_ty
in
(* Replace *)
projected_value.V.value
else
(* Not the searched symbolic value: nothing to do *)
- super#visit_ASymbolic (Some proj_regions) aproj
+ super#visit_ASymbolic (Some current_abs) aproj
| V.AProjLoans _, BorrowProj | V.AProjBorrows (_, _), LoanProj ->
(* Nothing to do *)
- super#visit_ASymbolic (Some proj_regions) aproj
+ super#visit_ASymbolic (Some current_abs) aproj
end
in
(* Apply the expansion *)
@@ -366,6 +371,8 @@ let expand_symbolic_value_borrow (config : C.config)
let expand_symbolic_value_no_branching (config : C.config)
(pe : E.projection_elem) (sp : V.symbolic_value) (ctx : C.eval_ctx) :
C.eval_ctx =
+ (* Remember the initial context for printing purposes *)
+ let ctx0 = ctx in
(* Compute the expanded value - note that when doing so, we may introduce
* fresh symbolic values in the context (which thus gets updated) *)
let original_sv = sp in
@@ -424,6 +431,14 @@ let expand_symbolic_value_no_branching (config : C.config)
failwith
("Unreachable: " ^ E.show_projection_elem pe ^ ", " ^ T.show_rty rty)
in
+ (* Debugging *)
+ (* Debug *)
+ log#ldebug
+ (lazy
+ ("expand_symbolic_value: "
+ ^ symbolic_value_to_string ctx0 sp
+ ^ "\n\n- original context:\n" ^ eval_ctx_to_string ctx0
+ ^ "\n\n- new context:\n" ^ eval_ctx_to_string ctx ^ "\n"));
(* Sanity check: the symbolic value has disappeared *)
assert (not (symbolic_value_id_in_ctx original_sv.V.sv_id ctx));
(* Return *)
diff --git a/src/InterpreterExpressions.ml b/src/InterpreterExpressions.ml
index 0b4bc90f..f3b07cc2 100644
--- a/src/InterpreterExpressions.ml
+++ b/src/InterpreterExpressions.ml
@@ -14,6 +14,9 @@ open InterpreterUtils
open InterpreterExpansion
open InterpreterPaths
+(** The local logger *)
+let log = L.expressions_log
+
(** TODO: change the name *)
type eval_error = Panic
@@ -70,7 +73,37 @@ let constant_value_to_typed_value (ctx : C.eval_ctx) (ty : T.ety)
| _, Unit | _, ConstantAdt _ | _, ConstantValue _ ->
failwith "Improperly typed constant value"
-(** Prepare the evaluation of an operand. *)
+(** Prepare the evaluation of an operand.
+
+ Evaluating an operand requires updating the context to get access to a
+ given place (by ending borrows, expanding symbolic values...) then
+ applying the operand operation (move, copy, etc.).
+
+ Sometimes, we want to decouple the two operations.
+ Consider the following example:
+ ```
+ context = {
+ x -> shared_borrow l0
+ y -> shared_loan {l0} v
+ }
+
+ dest <- f(move x, move y);
+ ...
+ ```
+ Because of the way end_borrow is implemented, when giving back the borrow
+ `l0` upon evaluating `move y`, we won't notice that `shared_borrow l0` has
+ disappeared from the environment (it has been moved and not assigned yet,
+ and so is hanging in "thin air").
+
+ By first "preparing" the operands evaluation, we make sure no such thing
+ happens. To be more precise, we make sure all the updates to borrows triggered
+ by access *and* move operations have already been applied.
+
+ As a side note: doing this is actually not completely necessary because when
+ generating MIR, rustc introduces intermediate assignments for all the function
+ parameters. Still, it is better for soundness purposes, and corresponds to
+ what we do in the formal semantics.
+ *)
let eval_operand_prepare (config : C.config) (ctx : C.eval_ctx) (op : E.operand)
: C.eval_ctx * V.typed_value =
let ctx, v =
@@ -94,7 +127,7 @@ let eval_operand_prepare (config : C.config) (ctx : C.eval_ctx) (op : E.operand)
let eval_operand (config : C.config) (ctx : C.eval_ctx) (op : E.operand) :
C.eval_ctx * V.typed_value =
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy
("eval_operand:\n- ctx:\n" ^ eval_ctx_to_string ctx ^ "\n\n- op:\n"
^ operand_to_string ctx op ^ "\n"));
@@ -108,7 +141,6 @@ let eval_operand (config : C.config) (ctx : C.eval_ctx) (op : E.operand) :
let access = Read in
let ctx, v = prepare_rplace config access p ctx in
(* Copy the value *)
- L.log#ldebug (lazy ("Value to copy:\n" ^ typed_value_to_string ctx v));
assert (not (bottom_in_value ctx.ended_regions v));
let allow_adt_copy = false in
copy_value allow_adt_copy config ctx v
@@ -117,16 +149,24 @@ let eval_operand (config : C.config) (ctx : C.eval_ctx) (op : E.operand) :
let access = Move in
let ctx, v = prepare_rplace config access p ctx in
(* Move the value *)
- L.log#ldebug (lazy ("Value to move:\n" ^ typed_value_to_string ctx v));
assert (not (bottom_in_value ctx.ended_regions v));
let bottom : V.typed_value = { V.value = Bottom; ty = v.ty } in
match write_place config access p bottom ctx with
| Error _ -> failwith "Unreachable"
| Ok ctx -> (ctx, v))
+(** Small utility.
+
+ See [eval_operand_prepare].
+ *)
+let eval_operands_prepare (config : C.config) (ctx : C.eval_ctx)
+ (ops : E.operand list) : C.eval_ctx * V.typed_value list =
+ List.fold_left_map (fun ctx op -> eval_operand_prepare config ctx op) ctx ops
+
(** Evaluate several operands. *)
let eval_operands (config : C.config) (ctx : C.eval_ctx) (ops : E.operand list)
: C.eval_ctx * V.typed_value list =
+ let ctx, _ = eval_operands_prepare config ctx ops in
List.fold_left_map (fun ctx op -> eval_operand config ctx op) ctx ops
let eval_two_operands (config : C.config) (ctx : C.eval_ctx) (op1 : E.operand)
diff --git a/src/InterpreterPaths.ml b/src/InterpreterPaths.ml
index 07c615a0..491e4c21 100644
--- a/src/InterpreterPaths.ml
+++ b/src/InterpreterPaths.ml
@@ -12,6 +12,9 @@ open InterpreterBorrowsCore
open InterpreterBorrows
open InterpreterExpansion
+(** The local logger *)
+let log = L.paths_log
+
(** Paths *)
(** When we fail reading from or writing to a path, it might be because we
@@ -76,7 +79,7 @@ let rec access_projection (access : projection_access) (ctx : C.eval_ctx)
let nv = update v in
(* Type checking *)
if nv.ty <> v.ty then (
- L.log#lerror
+ log#lerror
(lazy
("Not the same type:\n- nv.ty: " ^ T.show_ety nv.ty ^ "\n- v.ty: "
^ T.show_ety v.ty));
@@ -244,7 +247,7 @@ let rec access_projection (access : projection_access) (ctx : C.eval_ctx)
let pe = "- pe: " ^ E.show_projection_elem pe in
let v = "- v:\n" ^ V.show_value v in
let ty = "- ty:\n" ^ T.show_ety ty in
- L.log#serror ("Inconsistent projection:\n" ^ pe ^ "\n" ^ v ^ "\n" ^ ty);
+ log#serror ("Inconsistent projection:\n" ^ pe ^ "\n" ^ v ^ "\n" ^ ty);
failwith "Inconsistent projection")
(** Generic function to access (read/write) the value at a given place.
@@ -314,7 +317,7 @@ let read_place (config : C.config) (access : access_kind) (p : E.place)
^ C.show_env ctx1.env ^ "\n\nOld environment:\n"
^ C.show_env ctx.env
in
- L.log#serror msg;
+ log#serror msg;
failwith "Unexpected environment update");
Ok read_value
@@ -402,7 +405,7 @@ let expand_bottom_value_from_projection (config : C.config)
(access : access_kind) (p : E.place) (remaining_pes : int)
(pe : E.projection_elem) (ty : T.ety) (ctx : C.eval_ctx) : C.eval_ctx =
(* Debugging *)
- L.log#ldebug
+ log#ldebug
(lazy
("expand_bottom_value_from_projection:\n" ^ "pe: "
^ E.show_projection_elem pe ^ "\n" ^ "ty: " ^ T.show_ety ty));
diff --git a/src/InterpreterProjectors.ml b/src/InterpreterProjectors.ml
index 036082eb..cbd07f3e 100644
--- a/src/InterpreterProjectors.ml
+++ b/src/InterpreterProjectors.ml
@@ -129,8 +129,8 @@ let rec apply_proj_borrows_on_shared_borrow (ctx : C.eval_ctx)
*)
let rec apply_proj_borrows (check_symbolic_no_ended : bool) (ctx : C.eval_ctx)
(fresh_reborrow : V.BorrowId.id -> V.BorrowId.id)
- (regions : T.RegionId.set_t) (v : V.typed_value) (ty : T.rty) :
- V.typed_avalue =
+ (regions : T.RegionId.set_t) (ancestors_regions : T.RegionId.set_t)
+ (v : V.typed_value) (ty : T.rty) : V.typed_avalue =
(* Sanity check - TODO: move this elsewhere (here we perform the check at every
* recursive call which is a bit overkill...) *)
let ety = Substitute.erase_regions ty in
@@ -151,7 +151,7 @@ let rec apply_proj_borrows (check_symbolic_no_ended : bool) (ctx : C.eval_ctx)
List.map
(fun (fv, fty) ->
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- regions fv fty)
+ regions ancestors_regions fv fty)
fields_types
in
V.AAdt { V.variant_id = adt.V.variant_id; field_values = proj_fields }
@@ -169,7 +169,7 @@ let rec apply_proj_borrows (check_symbolic_no_ended : bool) (ctx : C.eval_ctx)
(* Apply the projection on the borrowed value *)
let bv =
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- regions bv ref_ty
+ regions ancestors_regions bv ref_ty
in
V.AMutBorrow (bid, bv)
| V.SharedBorrow bid, T.Shared -> V.ASharedBorrow bid
@@ -183,13 +183,19 @@ let rec apply_proj_borrows (check_symbolic_no_ended : bool) (ctx : C.eval_ctx)
(* Not in the set: ignore *)
let bc =
match (bc, kind) with
- | V.MutBorrow (_bid, bv), T.Mut ->
+ | V.MutBorrow (bid, bv), T.Mut ->
(* Apply the projection on the borrowed value *)
let bv =
apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow
- regions bv ref_ty
+ regions ancestors_regions bv ref_ty
in
- V.AIgnoredMutBorrow bv
+ (* If the borrow id is in the ancestor's regions, we still need
+ * to remember it *)
+ let opt_bid =
+ if region_in_set r ancestors_regions then Some bid else None
+ in
+ (* Return *)
+ V.AIgnoredMutBorrow (opt_bid, bv)
| V.SharedBorrow bid, T.Shared ->
(* Lookup the shared value *)
let ek = ek_all in
@@ -493,8 +499,8 @@ let prepare_reborrows (config : C.config) (allow_reborrows : bool) :
(fresh_reborrow, apply_registered_reborrows)
let apply_proj_borrows_on_input_value (config : C.config) (ctx : C.eval_ctx)
- (regions : T.RegionId.set_t) (v : V.typed_value) (ty : T.rty) :
- C.eval_ctx * V.typed_avalue =
+ (regions : T.RegionId.set_t) (ancestors_regions : T.RegionId.set_t)
+ (v : V.typed_value) (ty : T.rty) : C.eval_ctx * V.typed_avalue =
let check_symbolic_no_ended = true in
let allow_reborrows = true in
(* Prepare the reborrows *)
@@ -503,7 +509,8 @@ let apply_proj_borrows_on_input_value (config : C.config) (ctx : C.eval_ctx)
in
(* Apply the projector *)
let av =
- apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow regions v ty
+ apply_proj_borrows check_symbolic_no_ended ctx fresh_reborrow regions
+ ancestors_regions v ty
in
(* Apply the reborrows *)
let ctx = apply_registered_reborrows ctx in
diff --git a/src/InterpreterStatements.ml b/src/InterpreterStatements.ml
index 36d11a9e..917f1265 100644
--- a/src/InterpreterStatements.ml
+++ b/src/InterpreterStatements.ml
@@ -15,13 +15,16 @@ open InterpreterExpansion
open InterpreterPaths
open InterpreterExpressions
+(** The local logger *)
+let log = L.statements_log
+
(** Result of evaluating a statement *)
type statement_eval_res = Unit | Break of int | Continue of int | Return
(** Drop a value at a given place *)
let drop_value (config : C.config) (ctx : C.eval_ctx) (p : E.place) : C.eval_ctx
=
- L.log#ldebug (lazy ("drop_value: place: " ^ place_to_string ctx p));
+ log#ldebug (lazy ("drop_value: place: " ^ place_to_string ctx p));
(* Prepare the place (by ending the loans, then the borrows) *)
let ctx, v = prepare_lplace config p ctx in
(* Replace the value with [Bottom] *)
@@ -167,7 +170,7 @@ let get_non_local_function_return_type (fid : A.assumed_fun_id)
let ctx_pop_frame (config : C.config) (ctx : C.eval_ctx) :
C.eval_ctx * V.typed_value =
(* Debug *)
- L.log#ldebug (lazy ("ctx_pop_frame:\n" ^ eval_ctx_to_string ctx));
+ log#ldebug (lazy ("ctx_pop_frame:\n" ^ eval_ctx_to_string ctx));
(* Eval *)
let ret_vid = V.VarId.zero in
(* List the local variables, but the return variable *)
@@ -182,7 +185,7 @@ let ctx_pop_frame (config : C.config) (ctx : C.eval_ctx) :
in
let locals = list_locals ctx.env in
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy
("ctx_pop_frame: locals to drop: ["
^ String.concat "," (List.map V.VarId.to_string locals)
@@ -194,7 +197,7 @@ let ctx_pop_frame (config : C.config) (ctx : C.eval_ctx) :
ctx locals
in
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy
("ctx_pop_frame: after dropping local variables:\n"
^ eval_ctx_to_string ctx));
@@ -510,11 +513,59 @@ let instantiate_fun_sig (type_params : T.ety list) (sg : A.fun_sig)
(* Return *)
(ctx, inst_sig)
+(** Helper
+
+ Create abstractions (with no avalues, which have to be inserted afterwards)
+ from a list of abs region groups.
+ *)
+let create_empty_abstractions_from_abs_region_groups
+ (rgl : A.abs_region_group list) : V.abs list =
+ (* We use a reference to progressively create a map from abstraction ids
+ * to set of ancestor regions. Note that abs_to_ancestors_regions[abs_id]
+ * returns the union of:
+ * - the regions of the ancestors of abs_id
+ * - the regions of abs_id
+ *)
+ let abs_to_ancestors_regions : T.RegionId.set_t V.AbstractionId.Map.t ref =
+ ref V.AbstractionId.Map.empty
+ in
+ (* Auxiliary function to create one abstraction *)
+ let create_abs (rg : A.abs_region_group) : V.abs =
+ let abs_id = rg.A.id in
+ let parents =
+ List.fold_left
+ (fun s pid -> V.AbstractionId.Set.add pid s)
+ V.AbstractionId.Set.empty rg.A.parents
+ in
+ let regions =
+ List.fold_left
+ (fun s rid -> T.RegionId.Set.add rid s)
+ T.RegionId.Set.empty rg.A.regions
+ in
+ let ancestors_regions =
+ List.fold_left
+ (fun acc parent_id ->
+ T.RegionId.Set.union acc
+ (V.AbstractionId.Map.find parent_id !abs_to_ancestors_regions))
+ T.RegionId.Set.empty rg.A.parents
+ in
+ let ancestors_regions_union_current_regions =
+ T.RegionId.Set.union ancestors_regions regions
+ in
+ abs_to_ancestors_regions :=
+ V.AbstractionId.Map.add abs_id ancestors_regions_union_current_regions
+ !abs_to_ancestors_regions;
+ (* Create the abstraction *)
+ { V.abs_id; parents; regions; ancestors_regions; avalues = [] }
+ in
+ (* Apply *)
+ List.map create_abs rgl
+
(** Evaluate a statement *)
let rec eval_statement (config : C.config) (ctx : C.eval_ctx) (st : A.statement)
: (C.eval_ctx * statement_eval_res) eval_result list =
(* Debugging *)
- L.log#ldebug
+ log#ldebug
(lazy
("\n**About to evaluate statement**: [\n"
^ statement_to_string_with_tab ctx st
@@ -814,36 +865,30 @@ and eval_function_call_symbolic_from_inst_sig (config : C.config)
(fun ((arg, rty) : V.typed_value * T.rty) ->
arg.V.ty = Subst.erase_regions rty)
args_with_rtypes);
- (* Create the abstractions from the region groups and add them to the context *)
- let create_abs (ctx : C.eval_ctx) (rg : A.abs_region_group) : C.eval_ctx =
- let abs_id = rg.A.id in
- let parents =
- List.fold_left
- (fun s pid -> V.AbstractionId.Set.add pid s)
- V.AbstractionId.Set.empty rg.A.parents
- in
- let regions =
- List.fold_left
- (fun s rid -> T.RegionId.Set.add rid s)
- T.RegionId.Set.empty rg.A.regions
- in
+ (* Initialize the abstractions as empty (i.e., with no avalues) abstractions *)
+ let empty_absl =
+ create_empty_abstractions_from_abs_region_groups inst_sg.A.regions_hierarchy
+ in
+ (* Add the avalues to the abstractions and insert them in the context *)
+ let insert_abs (ctx : C.eval_ctx) (abs : V.abs) : C.eval_ctx =
(* Project over the input values *)
let ctx, args_projs =
List.fold_left_map
(fun ctx (arg, arg_rty) ->
- apply_proj_borrows_on_input_value config ctx regions arg arg_rty)
+ apply_proj_borrows_on_input_value config ctx abs.regions
+ abs.ancestors_regions arg arg_rty)
ctx args_with_rtypes
in
(* Group the input and output values *)
let avalues = List.append args_projs [ ret_av ] in
- (* Create the abstraction *)
- let abs = { V.abs_id; parents; regions; avalues } in
+ (* Add the avalues to the abstraction *)
+ let abs = { abs with avalues } in
(* Insert the abstraction in the context *)
let ctx = { ctx with env = Abs abs :: ctx.env } in
(* Return *)
ctx
in
- let ctx = List.fold_left create_abs ctx inst_sg.A.regions_hierarchy in
+ let ctx = List.fold_left insert_abs ctx empty_absl in
(* Move the return value to its destination *)
let ctx = assign_to_place config ctx ret_value dest in
(* Synthesis *)
@@ -896,7 +941,7 @@ and eval_non_local_function_call (config : C.config) (ctx : C.eval_ctx)
(type_params : T.ety list) (args : E.operand list) (dest : E.place) :
C.eval_ctx eval_result =
(* Debug *)
- L.log#ldebug
+ log#ldebug
(lazy
(let type_params =
"["
diff --git a/src/InterpreterUtils.ml b/src/InterpreterUtils.ml
index 1f8e47e0..6c5d3289 100644
--- a/src/InterpreterUtils.ml
+++ b/src/InterpreterUtils.ml
@@ -10,28 +10,29 @@ module L = Logging
open ValuesUtils
open Utils
open TypesUtils
+module PA = Print.EvalCtxCfimAst
(** Some utilities *)
let eval_ctx_to_string = Print.Contexts.eval_ctx_to_string
-let ety_to_string = Print.EvalCtxCfimAst.ety_to_string
+let ety_to_string = PA.ety_to_string
-let rty_to_string = Print.EvalCtxCfimAst.rty_to_string
+let rty_to_string = PA.rty_to_string
-let typed_value_to_string = Print.EvalCtxCfimAst.typed_value_to_string
+let symbolic_value_to_string = PA.symbolic_value_to_string
-let typed_avalue_to_string = Print.EvalCtxCfimAst.typed_avalue_to_string
+let typed_value_to_string = PA.typed_value_to_string
-let place_to_string = Print.EvalCtxCfimAst.place_to_string
+let typed_avalue_to_string = PA.typed_avalue_to_string
-let operand_to_string = Print.EvalCtxCfimAst.operand_to_string
+let place_to_string = PA.place_to_string
-let statement_to_string ctx =
- Print.EvalCtxCfimAst.statement_to_string ctx "" " "
+let operand_to_string = PA.operand_to_string
-let statement_to_string_with_tab ctx =
- Print.EvalCtxCfimAst.statement_to_string ctx " " " "
+let statement_to_string ctx = PA.statement_to_string ctx "" " "
+
+let statement_to_string_with_tab ctx = PA.statement_to_string ctx " " " "
let same_symbolic_id (sv0 : V.symbolic_value) (sv1 : V.symbolic_value) : bool =
sv0.V.sv_id = sv1.V.sv_id
diff --git a/src/Invariants.ml b/src/Invariants.ml
index e214e820..3fc390b5 100644
--- a/src/Invariants.ml
+++ b/src/Invariants.ml
@@ -12,7 +12,8 @@ open TypesUtils
open InterpreterUtils
open InterpreterBorrowsCore
-let debug_invariants : bool ref = ref false
+(** The local logger *)
+let log = L.invariants_log
type borrow_info = {
loan_kind : T.ref_kind;
@@ -35,20 +36,24 @@ let set_outer_mut (info : outer_borrow_info) : outer_borrow_info =
let set_outer_shared (_info : outer_borrow_info) : outer_borrow_info =
{ outer_borrow = true; outer_shared = true }
-(* TODO: we need to factorize print functions for strings *)
-let ids_reprs_to_string (reprs : V.BorrowId.id V.BorrowId.Map.t) : string =
+(* TODO: we need to factorize print functions for sets *)
+let ids_reprs_to_string (indent : string)
+ (reprs : V.BorrowId.id V.BorrowId.Map.t) : string =
let bindings = V.BorrowId.Map.bindings reprs in
let bindings =
List.map
(fun (id, repr_id) ->
- V.BorrowId.to_string id ^ " -> " ^ V.BorrowId.to_string repr_id)
+ indent ^ V.BorrowId.to_string id ^ " -> " ^ V.BorrowId.to_string repr_id)
bindings
in
String.concat "\n" bindings
-let borrows_infos_to_string (infos : borrow_info V.BorrowId.Map.t) : string =
+let borrows_infos_to_string (indent : string)
+ (infos : borrow_info V.BorrowId.Map.t) : string =
let bindings = V.BorrowId.Map.bindings infos in
- let bindings = List.map (fun (_, info) -> show_borrow_info info) bindings in
+ let bindings =
+ List.map (fun (_, info) -> indent ^ show_borrow_info info) bindings
+ in
String.concat "\n" bindings
type borrow_kind = Mut | Shared | Inactivated
@@ -67,9 +72,24 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
let borrows_infos : borrow_info V.BorrowId.Map.t ref =
ref V.BorrowId.Map.empty
in
+ let context_to_string () : string =
+ eval_ctx_to_string ctx ^ "- representants:\n"
+ ^ ids_reprs_to_string " " !ids_reprs
+ ^ "\n- info:\n"
+ ^ borrows_infos_to_string " " !borrows_infos
+ in
+ (* Ignored loans - when we find an ignored loan while building the borrows_infos
+ * map, we register it in this list; once the borrows_infos map is completely
+ * built, we check that all the borrow ids of the ignored loans are in this
+ * map *)
+ let ignored_loans : (T.ref_kind * V.BorrowId.id) list ref = ref [] in
- (* First, register all the loans *)
+ (* first, register all the loans *)
(* Some utilities to register the loans *)
+ let register_ignored_loan (rkind : T.ref_kind) (bid : V.BorrowId.id) : unit =
+ ignored_loans := (rkind, bid) :: !ignored_loans
+ in
+
let register_shared_loan (loan_in_abs : bool) (bids : V.BorrowId.set_t) : unit
=
let reprs = !ids_reprs in
@@ -150,11 +170,11 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
match lc with
| V.AMutLoan (bid, _) -> register_mut_loan inside_abs bid
| V.ASharedLoan (bids, _, _) -> register_shared_loan inside_abs bids
+ | V.AIgnoredMutLoan (bid, _) -> register_ignored_loan T.Mut bid
+ | V.AIgnoredSharedLoan _
| V.AEndedMutLoan { given_back = _; child = _ }
| V.AEndedSharedLoan (_, _)
- | V.AIgnoredMutLoan (_, _) (* We might want to do something here *)
- | V.AEndedIgnoredMutLoan { given_back = _; child = _ }
- | V.AIgnoredSharedLoan _ ->
+ | V.AEndedIgnoredMutLoan { given_back = _; child = _ } ->
(* Do nothing *)
()
in
@@ -178,13 +198,9 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
| None ->
let err =
"find_info: could not find the representant of borrow "
- ^ V.BorrowId.to_string bid ^ "\n" ^ "\n- Context:\n"
- ^ eval_ctx_to_string ctx ^ "\n- representants:\n"
- ^ ids_reprs_to_string !ids_reprs
- ^ "\n- info:\n"
- ^ borrows_infos_to_string !borrows_infos
+ ^ V.BorrowId.to_string bid ^ "\n" ^ context_to_string ()
in
- L.log#serror err;
+ log#serror err;
failwith err
in
@@ -201,6 +217,8 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
borrows_infos := infos
in
+ let register_ignored_borrow = register_ignored_loan in
+
let register_borrow (kind : borrow_kind) (bid : V.BorrowId.id) : unit =
(* Lookup the info *)
let info = find_info bid in
@@ -246,7 +264,9 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
match bc with
| V.AMutBorrow (bid, _) -> register_borrow Mut bid
| V.ASharedBorrow bid -> register_borrow Shared bid
- | V.AIgnoredMutBorrow _ | V.AProjSharedBorrow _ ->
+ | V.AIgnoredMutBorrow (Some bid, _) -> register_ignored_borrow Mut bid
+ | V.AIgnoredMutBorrow (None, _)
+ | V.AEndedIgnoredMutBorrow _ | V.AProjSharedBorrow _ ->
(* Do nothing *)
()
in
@@ -259,17 +279,18 @@ let check_loans_borrows_relation_invariant (ctx : C.eval_ctx) : unit =
borrows_visitor#visit_eval_ctx () ctx;
(* Debugging *)
- if !debug_invariants then (
- L.log#ldebug
- (lazy
- ("\nAbout to check context invariant:\n" ^ eval_ctx_to_string ctx ^ "\n"));
- L.log#ldebug
- (lazy
- ("\nBorrows information:\n"
- ^ borrows_infos_to_string !borrows_infos
- ^ "\n")));
+ log#ldebug
+ (lazy ("\nAbout to check context invariant:\n" ^ context_to_string ()));
(* Finally, check that everything is consistant *)
+ (* First, check all the ignored loans are present at the proper place *)
+ List.iter
+ (fun (rkind, bid) ->
+ let info = find_info bid in
+ assert (info.loan_kind = rkind))
+ !ignored_loans;
+
+ (* Then, check the borrow infos *)
V.BorrowId.Map.iter
(fun _ info ->
(* Note that we can't directly compare the sets - I guess they are
@@ -347,7 +368,8 @@ let check_borrowed_values_invariant (ctx : C.eval_ctx) : unit =
match bc with
| V.AMutBorrow (_, _) -> set_outer_mut info
| V.ASharedBorrow _ -> set_outer_shared info
- | V.AIgnoredMutBorrow _ -> set_outer_mut info
+ | V.AIgnoredMutBorrow _ | V.AEndedIgnoredMutBorrow _ ->
+ set_outer_mut info
| V.AProjSharedBorrow _ -> set_outer_shared info
in
(* Continue exploring *)
@@ -464,6 +486,14 @@ let check_typing_invariant (ctx : C.eval_ctx) : unit =
(* Continue exploring to inspect the subterms *)
super#visit_typed_value info tv
+ (* TODO: there is a lot of duplication with [visit_typed_value]
+ * which is quite annoying. There might be a way of factorizing
+ * that by factorizing the definitions of value and avalue, but
+ * the generation of visitors then doesn't work properly (TODO:
+ * report that). Still, it is actually not that problematic
+ * because this code shouldn't change a lot in the future,
+ * so the cost of maintenance should be pretty low.
+ * *)
method! visit_typed_avalue info atv =
(* Check the current pair (value, type) *)
(match (atv.V.value, atv.V.ty) with
@@ -526,7 +556,12 @@ let check_typing_invariant (ctx : C.eval_ctx) : unit =
| Abstract (V.ASharedLoan (_, sv, _)) ->
assert (sv.V.ty = Subst.erase_regions ref_ty)
| _ -> failwith "Inconsistent context")
- | V.AIgnoredMutBorrow av, T.Mut -> assert (av.V.ty = ref_ty)
+ | V.AIgnoredMutBorrow (_opt_bid, av), T.Mut ->
+ assert (av.V.ty = ref_ty)
+ | V.AEndedIgnoredMutBorrow { given_back_loans_proj; child }, T.Mut
+ ->
+ assert (given_back_loans_proj.V.ty = ref_ty);
+ assert (child.V.ty = ref_ty)
| V.AProjSharedBorrow _, T.Shared -> ()
| _ -> failwith "Inconsistent context")
| V.ALoan lc, aty -> (
@@ -569,7 +604,6 @@ let check_typing_invariant (ctx : C.eval_ctx) : unit =
| _ -> failwith "Erroneous typing");
(* Continue exploring to inspect the subterms *)
super#visit_typed_avalue info atv
- (** TODO: there is a lot of duplication with [visit_typed_value]... *)
end
in
visitor#visit_eval_ctx () ctx
diff --git a/src/Logging.ml b/src/Logging.ml
index a1060014..36ede236 100644
--- a/src/Logging.ml
+++ b/src/Logging.ml
@@ -3,7 +3,32 @@ module L = Easy_logging.Logging
let _ = L.make_logger "MainLogger" Debug [ Cli Debug ]
-let log = L.get_logger "MainLogger"
+(** The main logger *)
+let main_log = L.get_logger "MainLogger"
+
+(** Below, we create subgloggers for various submodules, so that we can precisely
+ toggle logging on/off, depending on which information we need *)
+
+(** Logger for Interpreter *)
+let interpreter_log = L.get_logger "MainLogger.Interpreter"
+
+(** Logger for InterpreterStatements *)
+let statements_log = L.get_logger "MainLogger.Interpreter.Statements"
+
+(** Logger for InterpreterExpressions *)
+let expressions_log = L.get_logger "MainLogger.Interpreter.Expressions"
+
+(** Logger for InterpreterPaths *)
+let paths_log = L.get_logger "MainLogger.Interpreter.Paths"
+
+(** Logger for InterpreterExpansion *)
+let expansion_log = L.get_logger "MainLogger.Interpreter.Expansion"
+
+(** Logger for InterpreterBorrows *)
+let borrows_log = L.get_logger "MainLogger.Interpreter.Borrows"
+
+(** Logger for Invariants *)
+let invariants_log = L.get_logger "MainLogger.Interpreter.Invariants"
(** Terminal colors - TODO: comes from easy_logging (did not manage to reuse the module directly) *)
type color =
@@ -109,7 +134,7 @@ let format_tags (tags : string list) =
"[" ^ elems_str ^ "] "
(* Change the formatters *)
-let _ =
+let main_logger_handler =
(* TODO: comes from easy_logging *)
let formatter (item : L.log_item) : string =
let item_level_fmt =
@@ -125,5 +150,6 @@ let _ =
item_msg_fmt
in
(* There should be exactly one handler *)
- let handlers = log#get_handlers in
- List.map (fun h -> H.set_formatter h formatter) handlers
+ let handlers = main_log#get_handlers in
+ List.iter (fun h -> H.set_formatter h formatter) handlers;
+ match handlers with [ handler ] -> handler | _ -> failwith "Unexpected"
diff --git a/src/Print.ml b/src/Print.ml
index f714e847..5ae722b9 100644
--- a/src/Print.ml
+++ b/src/Print.ml
@@ -7,6 +7,9 @@ module A = CfimAst
module C = Contexts
module M = Modules
+let option_to_string (to_string : 'a -> string) (x : 'a option) : string =
+ match x with Some x -> "Some (" ^ to_string x ^ ")" | None -> "None"
+
(** Pretty-printing for types *)
module Types = struct
let type_var_to_string (tv : T.type_var) : string = tv.name
@@ -390,7 +393,7 @@ module Values = struct
^ typed_avalue_to_string fmt av
^ ")"
| AEndedIgnoredMutLoan ml ->
- "@ended_ignored_mut_borrow{ given_back="
+ "@ended_ignored_mut_loan{ given_back="
^ typed_avalue_to_string fmt ml.given_back
^ "; child: "
^ typed_avalue_to_string fmt ml.child
@@ -406,8 +409,18 @@ module Values = struct
^ typed_avalue_to_string fmt av
^ ")"
| ASharedBorrow bid -> "⌊shared@" ^ V.BorrowId.to_string bid ^ "⌋"
- | AIgnoredMutBorrow av ->
- "@ignored_mut_borrow(" ^ typed_avalue_to_string fmt av ^ ")"
+ | AIgnoredMutBorrow (opt_bid, av) ->
+ "@ignored_mut_borrow("
+ ^ option_to_string V.BorrowId.to_string opt_bid
+ ^ ", "
+ ^ typed_avalue_to_string fmt av
+ ^ ")"
+ | AEndedIgnoredMutBorrow { given_back_loans_proj; child } ->
+ "@ended_ignored_mut_borrow{ given_back_loans_proj="
+ ^ typed_avalue_to_string fmt given_back_loans_proj
+ ^ "; child="
+ ^ typed_avalue_to_string fmt child
+ ^ ")"
| AProjSharedBorrow sb ->
"@ignored_shared_borrow("
^ abstract_shared_borrows_to_string fmt sb
@@ -973,6 +986,12 @@ module EvalCtxCfimAst = struct
let fmt = PC.ctx_to_rtype_formatter fmt in
PT.rty_to_string fmt t
+ let symbolic_value_to_string (ctx : C.eval_ctx) (sv : V.symbolic_value) :
+ string =
+ let fmt = PC.eval_ctx_to_ctx_formatter ctx in
+ let fmt = PC.ctx_to_rtype_formatter fmt in
+ PV.symbolic_value_to_string fmt sv
+
let typed_value_to_string (ctx : C.eval_ctx) (v : V.typed_value) : string =
let fmt = PC.eval_ctx_to_ctx_formatter ctx in
PV.typed_value_to_string fmt v
diff --git a/src/Values.ml b/src/Values.ml
index b6bb414b..bcb08dc8 100644
--- a/src/Values.ml
+++ b/src/Values.ml
@@ -195,6 +195,8 @@ class ['self] iter_typed_avalue_base =
object (_self : 'self)
inherit [_] iter_typed_value
+ method visit_id : 'env -> BorrowId.id -> unit = fun _ _ -> ()
+
method visit_region : 'env -> region -> unit = fun _ _ -> ()
method visit_aproj : 'env -> aproj -> unit = fun _ _ -> ()
@@ -211,6 +213,8 @@ class ['self] map_typed_avalue_base =
object (_self : 'self)
inherit [_] map_typed_value
+ method visit_id : 'env -> BorrowId.id -> BorrowId.id = fun _ id -> id
+
method visit_region : 'env -> region -> region = fun _ r -> r
method visit_aproj : 'env -> aproj -> aproj = fun _ p -> p
@@ -421,11 +425,15 @@ and aborrow_content =
> abs0 { a_shared_bororw l0 }
```
*)
- | AIgnoredMutBorrow of typed_avalue
+ | AIgnoredMutBorrow of BorrowId.id option * typed_avalue
(** An ignored mutable borrow.
-
- This is mostly useful for typing concerns: when a borrow doesn't
- belong to an abstraction, it would be weird to ignore it altogether.
+
+ We need to keep track of ignored mut borrows because when ending such
+ borrows, we need to project the loans of the given back value to
+ insert them in the proper abstractions.
+
+ Note that we need to do so only for borrows consumed by parent
+ abstractions (hence the optional borrow id).
Example:
========
@@ -441,9 +449,38 @@ and aborrow_content =
> x -> mut_loan l0
> px -> mut_loan l1
> ppx -> ⊥
- > abs'a { a_mut_borrow l1 (a_ignored_mut_borrow (U32 0)) } // TODO: duplication
- > abs'b { a_ignored_mut_borrow (a_mut_borrow l0 (U32 0)) }
+ > abs'a { a_mut_borrow l1 (a_ignored_mut_borrow None (U32 0)) } // TODO: duplication
+ > abs'b {parents={abs'a}} { a_ignored_mut_borrow (Some l1) (a_mut_borrow l0 (U32 0)) }
+
+ ... // abs'a ends
+
+ > x -> mut_loan l0
+ > px -> @s0
+ > ppx -> ⊥
+ > abs'b {
+ > a_ended_ignored_mut_borrow (a_proj_loans (@s0 <: &'b mut u32)) // <-- loan projector
+ > (a_mut_borrow l0 (U32 0))
+ > }
+
+ ... // `@s0` gets expanded to `&mut l2 @s1`
+
+ > x -> mut_loan l0
+ > px -> &mut l2 @s1
+ > ppx -> ⊥
+ > abs'b {
+ > a_ended_ignored_mut_borrow (a_mut_loan l2) // <-- loan l2 is here
+ > (a_mut_borrow l0 (U32 0))
+ > }
+
```
+
+ Note that we could use AIgnoredMutLoan in the case the borrow id is not
+ None, which would allow us to simplify the rules (to not have rules
+ to specifically handle the case of AIgnoredMutBorrow with Some borrow
+ id) and also remove the AEndedIgnoredMutBorrow variant.
+ For now, the rules are implemented and it allows us to make the avalues
+ more precise and clearer, so we will keep it that way.
+
TODO: this is annoying, we are duplicating information. Maybe we
could introduce an "Ignored" value? We have to pay attention to
two things:
@@ -460,6 +497,10 @@ and aborrow_content =
abstraction so that we can properly call the backward functions
when generating the pure translation.
*)
+ | AEndedIgnoredMutBorrow of {
+ given_back_loans_proj : typed_avalue;
+ child : typed_avalue;
+ } (** See the explanations for [AIgnoredMutBorrow] *)
| AProjSharedBorrow of abstract_shared_borrows
(** A projected shared borrow.
@@ -522,6 +563,9 @@ type abs = {
abs_id : (AbstractionId.id[@opaque]);
parents : (AbstractionId.set_t[@opaque]); (** The parent abstractions *)
regions : (RegionId.set_t[@opaque]); (** Regions owned by this abstraction *)
+ ancestors_regions : (RegionId.set_t[@opaque]);
+ (** Union of the regions owned by this abstraction's ancestors (not
+ including the regions of this abstraction itself) *)
avalues : typed_avalue list; (** The values in this abstraction *)
}
[@@deriving
diff --git a/src/main.ml b/src/main.ml
index ac49b782..d8e9aa40 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -4,6 +4,7 @@ open Print
module T = Types
module A = CfimAst
module I = Interpreter
+module EL = Easy_logging.Logging
(* This is necessary to have a backtrace when raising exceptions - for some
* reason, the -g option doesn't work.
@@ -19,6 +20,7 @@ Usage: %s [OPTIONS] FILE
Sys.argv.(0)
let () =
+ (* Read the command line arguments *)
let spec = [] in
let spec = Arg.align spec in
let filename = ref "" in
@@ -39,12 +41,23 @@ let () =
if !filename = "" then (
print_string usage;
exit 1);
+ (* Set up the logging - for now we use default values - TODO: use the
+ * command-line arguments *)
+ Easy_logging.Handlers.set_level main_logger_handler EL.Debug;
+ main_log#set_level EL.Debug;
+ interpreter_log#set_level EL.Debug;
+ statements_log#set_level EL.Debug;
+ expressions_log#set_level EL.Warning;
+ expansion_log#set_level EL.Debug;
+ borrows_log#set_level EL.Debug;
+ invariants_log#set_level EL.Warning;
+ (* Load the module *)
let json = Yojson.Basic.from_file !filename in
match cfim_module_of_json json with
- | Error s -> log#error "error: %s\n" s
+ | Error s -> main_log#error "error: %s\n" s
| Ok m ->
(* Print the module *)
- log#ldebug (lazy ("\n" ^ Print.Module.module_to_string m ^ "\n"));
+ main_log#ldebug (lazy ("\n" ^ Print.Module.module_to_string m ^ "\n"));
(* Test the unit functions with the concrete interpreter *)
I.Test.test_unit_functions m.types m.functions;
diff --git a/tests/trace_reference.txt b/tests/trace_reference.txt
index 767b6cbb..46015011 100644
--- a/tests/trace_reference.txt
+++ b/tests/trace_reference.txt
@@ -878,6 +878,143 @@ fn test_char() -> char {
return
}
+fn test_loops() {
+ var@0 : ();
+ x : u32;
+ var@2 : bool;
+ var@3 : bool;
+ var@4 : u32;
+ x : u32;
+ var@6 : bool;
+ var@7 : bool;
+ var@8 : u32;
+ x : u32;
+ var@10 : bool;
+ var@11 : bool;
+ var@12 : u32;
+ x : u32;
+ var@14 : bool;
+ var@15 : bool;
+ var@16 : u32;
+ x : u32;
+ var@18 : bool;
+ var@19 : bool;
+ var@20 : u32;
+ x : u32;
+ var@22 : bool;
+ var@23 : bool;
+ var@24 : u32;
+
+ x := move test_loop1(2: u32);
+ var@4 := copy x;
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+}
+
+fn id_mut_mut_test1() {
+ var@0 : ();
+ x : i32;
+ px : &'_ mut (i32);
+ ppx : &'_ mut (&'_ mut (i32));
+ ppy : &'_ mut (&'_ mut (i32));
+ var@5 : &'_ mut (&'_ mut (i32));
+ var@6 : bool;
+ var@7 : bool;
+ var@8 : i32;
+ var@9 : bool;
+ var@10 : bool;
+ var@11 : i32;
+
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+}
+
+fn id_mut_mut_test2() {
+ var@0 : ();
+ x : i32;
+ px : &'_ mut (i32);
+ ppx : &'_ mut (&'_ mut (i32));
+ ppy : &'_ mut (&'_ mut (i32));
+ var@5 : &'_ mut (&'_ mut (i32));
+ y : i32;
+ py : &'_ mut (i32);
+ var@8 : &'_ mut (i32);
+ var@9 : bool;
+ var@10 : bool;
+ var@11 : i32;
+ var@12 : bool;
+ var@13 : bool;
+ var@14 : i32;
+ var@15 : bool;
+ var@16 : bool;
+ var@17 : i32;
+
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+}
+
[Debug] test_unit_function: test2
[Debug]
**About to evaluate statement**: [
@@ -943,30 +1080,6 @@ fn test_char() -> char {
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-23: u32
-
[Debug]
**About to evaluate statement**: [
y := 44: u32;
@@ -1030,30 +1143,6 @@ fn test_char() -> char {
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-44: u32
-
[Debug]
**About to evaluate statement**: [
z := 67: u32;
@@ -1116,30 +1205,6 @@ fn test_char() -> char {
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-67: u32
-
[Debug]
**About to evaluate statement**: [
var@5 := copy x;
@@ -1201,32 +1266,6 @@ fn test_char() -> char {
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-23: u32
[Debug]
**About to evaluate statement**: [
(p).x := move var@5;
@@ -1287,32 +1326,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> 23: u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-23: u32
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (0, None)), 0))
ty: (Types.Adt ((Types.AdtId 0), [],
@@ -1376,30 +1389,6 @@ ty: (Types.Adt ((Types.AdtId 0), [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-67: u32
-
[Debug]
**About to evaluate statement**: [
(s as test1::Sum::Right).0 := true;
@@ -1458,30 +1447,6 @@ ty: (Types.Adt ((Types.AdtId 0), [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = 67: u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-true
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (6, (Some 1))), 0))
ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool]))
@@ -1598,30 +1563,6 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = 67: u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> test1::Sum::Right { 0 = true; } ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-3: u64
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (2, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
@@ -1873,52 +1814,6 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-4: u32
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-3: u32
-
[Debug]
**About to evaluate statement**: [
var@4 := copy x;
@@ -1998,41 +1893,6 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-4: u32
[Debug]
**About to evaluate statement**: [
var@5 := copy y;
@@ -2111,41 +1971,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> 4: u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-3: u32
[Debug]
**About to evaluate statement**: [
var@3 := move var@4 >= move var@5;
@@ -2223,76 +2048,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> 4: u32 ;
- var@5 -> 3: u32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-4: u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> 3: u32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-3: u32
[Debug]
**About to evaluate statement**: [
if (move var@3) {
@@ -2374,41 +2129,6 @@ move var@5
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> true ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@0 := copy x
@@ -2444,41 +2164,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 4: u32 ;
- y -> 3: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-4: u32
[Debug]
**About to evaluate statement**: [
return
@@ -2576,41 +2261,6 @@ copy x
var@5 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> 4: u32 ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-4: u32
[Debug]
**About to evaluate statement**: [
y := move get_max(10: u32, 11: u32);
@@ -2669,52 +2319,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-10: u32
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-11: u32
-
[Debug]
**About to evaluate statement**: [
var@4 := copy x;
@@ -2794,41 +2398,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-10: u32
[Debug]
**About to evaluate statement**: [
var@5 := copy y;
@@ -2907,41 +2476,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> 10: u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-11: u32
[Debug]
**About to evaluate statement**: [
var@3 := move var@4 >= move var@5;
@@ -3019,76 +2553,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> 10: u32 ;
- var@5 -> 11: u32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-10: u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> 11: u32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-11: u32
[Debug]
**About to evaluate statement**: [
if (move var@3) {
@@ -3170,41 +2634,6 @@ move var@5
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> false ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@0 := copy y
@@ -3240,41 +2669,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : u32 ;
- x -> 10: u32 ;
- y -> 11: u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-11: u32
[Debug]
**About to evaluate statement**: [
return
@@ -3372,41 +2766,6 @@ copy y
var@5 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-# Frame 1:
-{
- var@0 -> 11: u32 ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-11: u32
[Debug]
**About to evaluate statement**: [
var@4 := copy x;
@@ -3464,31 +2823,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-4: u32
[Debug]
**About to evaluate statement**: [
var@5 := copy y;
@@ -3545,31 +2879,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> ⊥ : u32 ;
- var@4 -> 4: u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-11: u32
[Debug]
**About to evaluate statement**: [
z := copy var@4 + copy var@5;
@@ -3625,56 +2934,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> ⊥ : u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy var@4
-
-[Debug] Value to copy:
-4: u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> ⊥ : u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy var@5
-
-[Debug] Value to copy:
-11: u32
[Debug]
**About to evaluate statement**: [
var@9 := copy z;
@@ -3729,31 +2988,6 @@ copy var@5
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> 15: u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy z
-
-[Debug] Value to copy:
-15: u32
[Debug]
**About to evaluate statement**: [
var@8 := move var@9 == 15: u32;
@@ -3807,54 +3041,6 @@ copy z
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> 15: u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> 15: u32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-15: u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> 15: u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-15: u32
-
[Debug]
**About to evaluate statement**: [
var@7 := ¬ move var@8;
@@ -3907,31 +3093,6 @@ move var@9
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> 15: u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> true ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@7);
@@ -3983,31 +3144,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 4: u32 ;
- y -> 11: u32 ;
- z -> 15: u32 ;
- var@4 -> 4: u32 ;
- var@5 -> 11: u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> false ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
return
@@ -4072,22 +3208,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
-}
-
-
-- op:
-3: i32
-
[Debug]
**About to evaluate statement**: [
y := -3: i32;
@@ -4125,22 +3245,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 3: i32 ;
- y -> ⊥ : i32 ;
-}
-
-
-- op:
--3: i32
-
[Debug]
**About to evaluate statement**: [
return
@@ -4212,26 +3316,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -4382,26 +3466,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⌊mut@1⌋ ;
- ppx -> &mut@1 (&mut@0 (0: i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@6 := copy x;
@@ -4450,28 +3514,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⌊mut@1⌋ ;
- ppx -> &mut@1 (&mut@0 (1: i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-1: i32
[Debug]
**About to evaluate statement**: [
var@5 := move var@6 == 1: i32;
@@ -4519,48 +3561,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> 1: i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-1: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@4 := ¬ move var@5;
@@ -4607,28 +3607,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> true ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@4);
@@ -4674,28 +3652,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> false ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
return
@@ -4811,38 +3767,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
y := 1: i32;
@@ -4934,38 +3858,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -5406,40 +4298,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@0 (0: i32)) ;
- var@6 -> &mut@3 (1: i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-&mut@3 (1: i32)
[Debug]
**About to evaluate statement**: [
*(*(ppx)) := 2: i32;
@@ -5525,38 +4383,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@3 (1: i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@9 := copy *(px);
@@ -5641,40 +4467,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@3 (2: i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(px)
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@8 := move var@9 == 2: i32;
@@ -5758,72 +4550,6 @@ copy *(px)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> 2: i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@7 := ¬ move var@8;
@@ -5906,40 +4632,6 @@ move var@9
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> true ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@7);
@@ -6021,40 +4713,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> false ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@12 := copy x;
@@ -6135,40 +4793,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@11 := move var@12 == 0: i32;
@@ -6248,72 +4872,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> 0: i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@12
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@10 := ¬ move var@11;
@@ -6392,40 +4950,6 @@ move var@12
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> true ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@11
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@10);
@@ -6503,40 +5027,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> false ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@10
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@15 := copy *(py);
@@ -6613,40 +5103,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(py)
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@14 := move var@15 == 2: i32;
@@ -6722,72 +5178,6 @@ copy *(py)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> 2: i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@15
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@13 := ¬ move var@14;
@@ -6862,40 +5252,6 @@ move var@15
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> true ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@14
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@13);
@@ -6969,40 +5325,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> false ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@13
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@18 := copy y;
@@ -7075,40 +5397,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@17 := move var@18 == 2: i32;
@@ -7180,72 +5468,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> 2: i32 ;
-}
-
-
-- op:
-move var@18
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@16 := ¬ move var@17;
@@ -7316,40 +5538,6 @@ move var@18
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> true ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@17
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@16);
@@ -7419,40 +5607,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> false ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@16
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
return
@@ -7580,50 +5734,6 @@ false
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-# Frame 1:
-{
- @return -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@1 -> test1::List::Nil ;
-}
-
-
-- op:
-move var@1
-
-[Debug] Value to move:
-test1::List::Nil
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -7662,31 +5772,6 @@ test1::List::Nil
var@1 -> ⊥ : test1::List<i32> ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-# Frame 1:
-{
- @return -> @Box(test1::List::Nil) ;
- var@1 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -7729,23 +5814,6 @@ move @return
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -7790,25 +5858,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -7973,58 +6022,6 @@ move var@2
- type_params: [i32]
- args: [0: i32]
- dest: b
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> ⊥ : std::boxed::Box<i32> ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> ⊥ : std::boxed::Box<i32> ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> ⊥ : std::boxed::Box<i32> ;
- var@1 -> 0: i32 ;
-}
-
-
-- op:
-move var@1
-
-[Debug] Value to move:
-0: i32
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -8073,36 +6070,6 @@ move var@1
var@1 -> ⊥ : i32 ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> ⊥ : std::boxed::Box<i32> ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> @Box(0: i32) ;
- var@1 -> ⊥ : i32 ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-@Box(0: i32)
[Debug]
**About to evaluate statement**: [
var@3 := &two-phase b;
@@ -8223,28 +6190,6 @@ move @return
- type_params: [i32]
- args: [move var@3]
- dest: x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @shared_loan({0}, @Box(0: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⌊inactivated_mut@0⌋ ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@3
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Adt
@@ -8258,8 +6203,6 @@ move var@3
});
ty =
(Types.Adt ((Types.Assumed Types.Box), [], [(Types.Integer Types.I32)])) }
-[Debug] Value to move:
-&mut@0 (@Box(0: i32))
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -8308,36 +6251,6 @@ move var@3
var@1 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(⌊mut@1⌋) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> &mut@1 (0: i32) ;
- var@1 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-&mut@1 (0: i32)
[Debug]
**About to evaluate statement**: [
*(x) := 1: i32;
@@ -8394,28 +6307,6 @@ move @return
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(⌊mut@1⌋) ;
- x -> &mut@1 (0: i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@5 := &b;
@@ -8530,30 +6421,6 @@ move @return
- type_params: [i32]
- args: [move var@5]
- dest: x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @shared_loan({2}, @Box(1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⌊shared@2⌋ ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-⌊shared@2⌋
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -8602,36 +6469,6 @@ move var@5
var@1 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> ⌊shared@3⌋ ;
- var@1 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-⌊shared@3⌋
[Debug]
**About to evaluate statement**: [
var@8 := copy *(x);
@@ -8685,30 +6522,6 @@ move @return
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(x)
-
-[Debug] Value to copy:
-1: i32
[Debug]
**About to evaluate statement**: [
var@7 := move var@8 == 1: i32;
@@ -8761,52 +6574,6 @@ copy *(x)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> 1: i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-1: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@6 := ¬ move var@7;
@@ -8858,30 +6625,6 @@ move var@8
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> true ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@6);
@@ -8932,30 +6675,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @Box(@shared_loan({3}, 1: i32)) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> false ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
drop(b);
@@ -9088,28 +6807,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- px -> ⊥ : &'_ (i32) ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
px := &x;
@@ -9221,30 +6918,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-@shared_loan({0}, 0: i32)
[Debug]
**About to evaluate statement**: [
y := move copy_int(move var@4);
@@ -9299,30 +6972,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> 0: i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@0 := copy x;
@@ -9384,36 +7033,6 @@ move var@4
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : i32 ;
- x -> 0: i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
return
@@ -9492,36 +7111,6 @@ copy x
x -> ⊥ : i32 ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> 0: i32 ;
- x -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@7 := copy *(px);
@@ -9575,30 +7164,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(px)
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@8 := copy y;
@@ -9651,30 +7216,6 @@ copy *(px)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> 0: i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@6 := move var@7 == move var@8;
@@ -9726,54 +7267,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> 0: i32 ;
- var@8 -> 0: i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> 0: i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@5 := ¬ move var@6;
@@ -9824,30 +7317,6 @@ move var@8
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> true ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@5);
@@ -9897,30 +7366,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> 0: i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> false ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
return
@@ -10064,58 +7509,6 @@ false
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-# Frame 1:
-{
- @return -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@1 -> test1::List::Nil ;
-}
-
-
-- op:
-move var@1
-
-[Debug] Value to move:
-test1::List::Nil
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -10162,35 +7555,6 @@ test1::List::Nil
var@1 -> ⊥ : test1::List<i32> ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-# Frame 1:
-{
- @return -> @Box(test1::List::Nil) ;
- var@1 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -10246,27 +7610,6 @@ move @return
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -10324,29 +7667,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -10503,29 +7823,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-
-- op:
-copy var@7
-
-[Debug] Value to copy:
-⌊shared@0⌋
[Debug]
**About to evaluate statement**: [
var@5 := move is_cons<i32>(move var@6);
@@ -10576,29 +7873,6 @@ copy var@7
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⌊shared@1⌋ ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-⌊shared@1⌋
[Debug]
**About to evaluate statement**: [
var@2 := discriminant(*(l));
@@ -10752,36 +8026,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@1⌋ ;
- var@2 -> 0: isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-0: isize
[Debug]
**About to evaluate statement**: [
var@0 := true
@@ -10812,34 +8056,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@1⌋ ;
- var@2 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
return
@@ -10919,36 +8135,6 @@ true
var@2 -> ⊥ : isize ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-# Frame 1:
-{
- var@0 -> true ;
- l -> ⊥ : &'_ (test1::List<i32>) ;
- var@2 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@4 := ¬ move var@5;
@@ -10998,29 +8184,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> true ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@4);
@@ -11069,29 +8232,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> false ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
drop(l);
@@ -11300,64 +8440,6 @@ false
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@1 -> test1::List::Nil ;
-}
-
-
-- op:
-move var@1
-
-[Debug] Value to move:
-test1::List::Nil
[Debug] ctx_pop_frame:
# Ended regions: {}
# 2 frame(s)
@@ -11410,38 +8492,6 @@ test1::List::Nil
var@1 -> ⊥ : test1::List<i32> ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- @return -> @Box(test1::List::Nil) ;
- var@1 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-move @return
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -11506,30 +8556,6 @@ move @return
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -11596,32 +8622,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> @Box(test1::List::Nil) ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -11745,32 +8745,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move l
-
-[Debug] Value to move:
-test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
[Debug]
**About to evaluate statement**: [
var@6 := move split_list<i32>(move var@7);
@@ -11831,32 +8805,6 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
[Debug]
**About to evaluate statement**: [
var@8 := false;
@@ -11960,45 +8908,6 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); }
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
var@7 := false;
@@ -12101,45 +9010,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> ⊥ : bool ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
var@7 := true;
@@ -12241,45 +9111,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
var@8 := true;
@@ -12380,45 +9211,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
var@2 := discriminant(l);
@@ -12575,47 +9367,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> 0: isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> true ;
- var@8 -> true ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-0: isize
[Debug]
**About to evaluate statement**: [
var@8 := false;
@@ -12707,45 +9458,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> true ;
- var@8 -> true ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
hd := move (l as test1::List::Cons).0;
@@ -12836,47 +9548,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move (l as test1::List::Cons).0
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@7 := false;
@@ -12966,45 +9637,6 @@ move (l as test1::List::Cons).0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> 0: i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
tl := move (l as test1::List::Cons).1;
@@ -13093,47 +9725,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = @Box(test1::List::Nil); } ;
- var@2 -> ⊥ : isize ;
- hd -> 0: i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move (l as test1::List::Cons).1
-
-[Debug] Value to move:
-@Box(test1::List::Nil)
[Debug]
**About to evaluate statement**: [
var@5 := move hd;
@@ -13221,47 +9812,6 @@ move (l as test1::List::Cons).1
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> 0: i32 ;
- tl -> @Box(test1::List::Nil) ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move hd
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@6 := move deref_box(tl);
@@ -13348,47 +9898,6 @@ move hd
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> @Box(test1::List::Nil) ;
- var@5 -> 0: i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move deref_box(tl)
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
(var@0).0 := move var@5;
@@ -13474,47 +9983,6 @@ test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : (i32, test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> @Box(⊥ : test1::List<i32>) ;
- var@5 -> 0: i32 ;
- var@6 -> test1::List::Nil ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-0: i32
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjTuple 2), 0))
ty: (Types.Adt (Types.Tuple, [],
@@ -13605,47 +10073,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> (0: i32, ⊥ : test1::List<i32>) ;
- l -> test1::List::Cons { 0 = ⊥ : i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> @Box(⊥ : test1::List<i32>) ;
- var@5 -> ⊥ : i32 ;
- var@6 -> test1::List::Nil ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
var@9 := move alloc::alloc::box_free<test1::List<i32>>(move tl);
@@ -13855,47 +10282,6 @@ test1::List::Nil
var@10 -> ⊥ : isize ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> (0: i32, test1::List::Nil) ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@5 -> ⊥ : i32 ;
- var@6 -> ⊥ : test1::List<i32> ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-(0: i32, test1::List::Nil)
[Debug]
**About to evaluate statement**: [
hd := copy (var@6).0;
@@ -13955,32 +10341,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> (0: i32, test1::List::Nil) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy (var@6).0
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
tl := move (var@6).1;
@@ -14039,32 +10399,6 @@ copy (var@6).0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> (0: i32, test1::List::Nil) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move (var@6).1
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
var@10 := copy hd;
@@ -14122,32 +10456,6 @@ test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> test1::List::Nil ;
- var@6 -> (0: i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy hd
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@9 := move var@10 == 0: i32;
@@ -14204,56 +10512,6 @@ copy hd
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> test1::List::Nil ;
- var@6 -> (0: i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> 0: i32 ;
-}
-
-
-- op:
-move var@10
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> test1::List::Nil ;
- var@6 -> (0: i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@8 := ¬ move var@9;
@@ -14309,32 +10567,6 @@ move var@10
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> test1::List::Nil ;
- var@6 -> (0: i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> true ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@8);
@@ -14389,32 +10621,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> 0: i32 ;
- tl -> test1::List::Nil ;
- var@6 -> (0: i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> false ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
drop(tl);
@@ -14585,38 +10791,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
y := 0: i32;
@@ -14705,38 +10879,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⊥ : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@5 := &mut x;
@@ -15162,114 +11304,14 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⌊inactivated_mut@1⌋ ;
- var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-true
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⌊inactivated_mut@1⌋ ;
- var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
ty = (Types.Integer Types.I32) }
-[Debug] Value to move:
-&mut@1 (0: i32)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
ty = (Types.Integer Types.I32) }
-[Debug] Value to move:
-&mut@3 (0: i32)
[Debug]
**About to evaluate statement**: [
var@4 := copy b;
@@ -15363,49 +11405,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : &'_ mut (i32) ;
- b -> true ;
- x -> &mut@1 (0: i32) ;
- y -> &mut@3 (0: i32) ;
- var@4 -> ⊥ : bool ;
-}
-
-
-- op:
-copy b
-
-[Debug] Value to copy:
-true
[Debug]
**About to evaluate statement**: [
if (move var@4) {
@@ -15503,49 +11502,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> ⊥ : &'_ mut (i32) ;
- b -> true ;
- x -> &mut@1 (0: i32) ;
- y -> &mut@3 (0: i32) ;
- var@4 -> true ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@0 := &mut *(x)
@@ -15709,49 +11665,6 @@ true
var@4 -> ⊥ : bool ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-# Frame 1:
-{
- var@0 -> &mut@4 (0: i32) ;
- b -> ⊥ : bool ;
- x -> ⊥ : &'_ mut (i32) ;
- y -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : bool ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-&mut@4 (0: i32)
[Debug]
**About to evaluate statement**: [
var@8 := copy *(z);
@@ -15834,40 +11747,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (0: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(z)
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
*(z) := copy var@8 + 1: i32;
@@ -15949,72 +11828,6 @@ copy *(z)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (0: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy var@8
-
-[Debug] Value to copy:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (0: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@12 := copy *(z);
@@ -16095,40 +11908,6 @@ copy var@8
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(z)
-
-[Debug] Value to copy:
-1: i32
[Debug]
**About to evaluate statement**: [
var@11 := move var@12 == 1: i32;
@@ -16208,72 +11987,6 @@ copy *(z)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> 1: i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@12
-
-[Debug] Value to move:
-1: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@10 := ¬ move var@11;
@@ -16352,40 +12065,6 @@ move var@12
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> true ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@11
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@10);
@@ -16463,40 +12142,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> false ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@10
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@15 := copy x;
@@ -16573,40 +12218,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (1: i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@4⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-1: i32
[Debug]
**About to evaluate statement**: [
var@14 := move var@15 == 1: i32;
@@ -16682,72 +12293,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> 1: i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@15
-
-[Debug] Value to move:
-1: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@13 := ¬ move var@14;
@@ -16822,40 +12367,6 @@ move var@15
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> true ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@14
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@13);
@@ -16929,40 +12440,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> false ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@13
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@18 := copy y;
@@ -17035,40 +12512,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (0: i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@17 := move var@18 == 0: i32;
@@ -17140,72 +12583,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> 0: i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> 0: i32 ;
-}
-
-
-- op:
-move var@18
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> 0: i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@16 := ¬ move var@17;
@@ -17276,40 +12653,6 @@ move var@18
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> 0: i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> true ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@17
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
assert(¬move var@16);
@@ -17379,40 +12722,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- y -> 0: i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> 0: i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> false ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@16
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
return
@@ -17513,30 +12822,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-0: u32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -17664,32 +12949,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> &mut@0 (0: u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move px
-
-[Debug] Value to move:
-&mut@0 (0: u32)
[Debug]
**About to evaluate statement**: [
(p).0 := move var@4;
@@ -17752,32 +13011,6 @@ move px
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> &mut@0 (0: u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-&mut@0 (0: u32)
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjTuple 2), 0))
ty: (Types.Adt (Types.Tuple, [],
@@ -17845,30 +13078,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> (&mut@0 (0: u32), ⊥ : u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-1: u32
-
[Debug]
**About to evaluate statement**: [
pp0 := &mut p;
@@ -18046,30 +13255,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⌊inactivated_mut@2⌋ ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move var@7
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Adt
@@ -18097,8 +13282,6 @@ move var@7
(Types.Integer Types.U32)]
))
}
-[Debug] Value to move:
-&mut@2 ((&mut@0 (0: u32), 1: u32))
[Debug]
**About to evaluate statement**: [
var@2 := &mut *(x);
@@ -18322,39 +13505,6 @@ move var@7
var@2 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
}
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 2 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-# Frame 1:
-{
- var@0 -> &mut@4 ((&mut@0 (0: u32), 1: u32)) ;
- x -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@2 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
-}
-
-
-- op:
-move var@0
-
-[Debug] Value to move:
-&mut@4 ((&mut@0 (0: u32), 1: u32))
[Debug]
**About to evaluate statement**: [
y := 2: u32;
@@ -18412,30 +13562,6 @@ move var@0
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> &mut@4 ((&mut@0 (0: u32), 1: u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-2: u32
-
[Debug]
**About to evaluate statement**: [
var@10 := &mut y;
@@ -18601,36 +13727,36 @@ move var@0
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ *((pp1).1) := 3: u32;
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
+ x -> 0: u32 ;
px -> ⊥ : &'_ mut (u32) ;
p -> ⌊mut@1⌋ ;
var@4 -> ⊥ : &'_ mut (u32) ;
pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> &mut@4 ((&mut@0 (0: u32), 1: u32)) ;
+ pp1 -> &mut@4 ((&mut@6 (2: u32), 1: u32)) ;
var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
y -> ⌊mut@5⌋ ;
- var@9 -> &mut@6 (2: u32) ;
+ var@9 -> ⊥ : &'_ mut (u32) ;
var@10 -> &mut@5 (⌊mut@6⌋) ;
}
-- op:
-move var@9
-[Debug] Value to move:
-&mut@6 (2: u32)
[Debug]
**About to evaluate statement**: [
- *((pp1).1) := 3: u32;
- return
+ *((pp1).1) := 3: u32
]
**Context**:
@@ -18656,7 +13782,7 @@ move var@9
[Debug]
**About to evaluate statement**: [
- *((pp1).1) := 3: u32
+ return
]
**Context**:
@@ -18671,7 +13797,7 @@ move var@9
p -> ⌊mut@1⌋ ;
var@4 -> ⊥ : &'_ mut (u32) ;
pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> &mut@4 ((&mut@6 (2: u32), 1: u32)) ;
+ pp1 -> &mut@4 ((&mut@6 (2: u32), 3: u32)) ;
var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
y -> ⌊mut@5⌋ ;
var@9 -> ⊥ : &'_ mut (u32) ;
@@ -18680,32 +13806,2920 @@ move var@9
-[Debug] eval_operand:
-- ctx:
+[Debug] test_unit_function: test_char
+[Debug]
+**About to evaluate statement**: [
+ var@0 := a;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : char ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := a
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : char ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> a ;
+}
+
+
+
+[Debug] test_unit_function: test_loops
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop1(2: u32);
+ var@4 := copy x;
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> 0: u32 ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> &mut@4 ((&mut@6 (2: u32), 1: u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⌊mut@5⌋ ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> &mut@5 (⌊mut@6⌋) ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop1(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32;
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s * 2: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s * 2: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s * 2: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
}
-- op:
-3: u32
[Debug]
**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ s := copy s + copy var@6;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> false ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s * 2: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s * 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: var@3
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : (u32, bool) ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy x;
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18716,24 +16730,104 @@ move var@9
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> 0: u32 ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (⌊mut@4⌋) ;
- pp1 -> &mut@4 ((&mut@6 (2: u32), 3: u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⌊mut@5⌋ ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> &mut@5 (⌊mut@6⌋) ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] test_unit_function: test_char
[Debug]
**About to evaluate statement**: [
- var@0 := a;
+ var@4 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18743,14 +16837,38 @@ move var@9
# Frame 0:
{
- var@0 -> ⊥ : char ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@0 := a
+ var@3 := move var@4 == 2: u32
]
**Context**:
@@ -18759,27 +16877,170 @@ move var@9
# Frame 0:
{
- var@0 -> ⊥ : char ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : char ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-a
[Debug]
**About to evaluate statement**: [
+ var@2 := ¬ move var@3
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18789,17 +17050,102 @@ a
# Frame 0:
{
- var@0 -> a ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> false ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] test_function_symbolic: add_test
[Debug]
**About to evaluate statement**: [
- var@3 := copy x;
- var@4 := copy y;
- var@0 := copy var@3 + copy var@4;
+ assert(¬move var@2)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> false ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18809,19 +17155,38 @@ a
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@3 := copy x
+ x := move test_loop2(2: u32)
]
**Context**:
@@ -18830,41 +17195,3268 @@ a
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32;
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 0: u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@7
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> 1: u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@7
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@6 := copy i;
+ switch (move var@6) {
+ 17: u32 => {
+ break 0
+ }
+ _ => {
+ var@7 := copy i;
+ s := copy s + copy var@7;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> false ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> 1: u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: var@3
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : (u32, bool) ;
+ var@9 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-copy x
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
- var@4 := copy y;
- var@0 := copy var@3 + copy var@4;
+ var@8 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18874,19 +20466,38 @@ s@0 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@4 := copy y
+ var@7 := move var@8 == 1: u32
]
**Context**:
@@ -18895,40 +20506,160 @@ s@0 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-copy y
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@0 := copy var@3 + copy var@4;
+ var@6 := ¬ move var@7
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -18938,19 +20669,38 @@ s@1 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> false ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@0 := copy var@3 + copy var@4
+ assert(¬move var@6)
]
**Context**:
@@ -18959,58 +20709,14960 @@ s@1 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> false ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-copy var@3
-[Debug] Value to copy:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop3(2: u32)
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32;
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ nop
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ nop
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> false ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@17
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 0: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ nop
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 0: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 2: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 2: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ nop
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> false ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 0: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@17
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ continue 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> false ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
}
-- op:
-copy var@4
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
return
@@ -19018,26 +35670,316 @@ s@1 : u32
**Context**:
# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 1: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> 1: u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@19
+[Debug] drop_value: place: var@18
+[Debug] drop_value: place: var@17
+[Debug] drop_value: place: var@16
+[Debug] drop_value: place: var@15
+[Debug] drop_value: place: var@14
+[Debug] drop_value: place: var@13
+[Debug] drop_value: place: var@12
+[Debug] drop_value: place: var@11
+[Debug] drop_value: place: var@10
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: j
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 3: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> s@2 : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] test_function_symbolic: subs_test
[Debug]
**About to evaluate statement**: [
- var@3 := copy x;
- var@4 := copy y;
- var@0 := copy var@3 - copy var@4;
+ var@12 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -19047,19 +35989,38 @@ s@1 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> 3: u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@3 := copy x
+ var@11 := move var@12 == 3: u32
]
**Context**:
@@ -19068,41 +36029,150 @@ s@1 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> 3: u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> true ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-copy x
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
- var@4 := copy y;
- var@0 := copy var@3 - copy var@4;
+ var@10 := ¬ move var@11
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> true ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -19112,19 +36182,17893 @@ s@0 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : (u32, bool) ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> false ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
[Debug]
**About to evaluate statement**: [
- var@4 := copy y
+ assert(¬move var@10)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> false ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop4(20: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 1: u32;
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 20: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 20: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ };
+ j := 0: u32;
+ var@17 := copy i;
+ s := copy s + copy var@17;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 20: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 20: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i;
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j;
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12;
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy var@11 + copy var@12
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ };
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ switch (move var@10) {
+ 17: u32 => {
+ continue 0
+ }
+ _ => {
+ nop
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ nop
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i;
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14;
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@14
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 1
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 20: u32 ;
+ i -> 1: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> 1: u32 ;
+ var@12 -> 0: u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> 1: u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@19
+[Debug] drop_value: place: var@18
+[Debug] drop_value: place: var@17
+[Debug] drop_value: place: var@16
+[Debug] drop_value: place: var@15
+[Debug] drop_value: place: var@14
+[Debug] drop_value: place: var@13
+[Debug] drop_value: place: var@12
+[Debug] drop_value: place: var@11
+[Debug] drop_value: place: var@10
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: j
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : u32 ;
+ var@12 -> ⊥ : u32 ;
+ var@13 -> ⊥ : (u32, bool) ;
+ var@14 -> ⊥ : u32 ;
+ var@15 -> ⊥ : (u32, bool) ;
+ var@16 -> ⊥ : (u32, bool) ;
+ var@17 -> ⊥ : u32 ;
+ var@18 -> ⊥ : (u32, bool) ;
+ var@19 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> 1: u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := move var@16 == 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> 1: u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> true ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := ¬ move var@15
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> true ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> false ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@14)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> false ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop5(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32;
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32;
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 0: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 0: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@10
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 0: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> true ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 0: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@10
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ j := copy j + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 1: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> false ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@13
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 1: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> true ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy j
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 < move var@9
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 2: u32 ;
+ var@9 -> 2: u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> false ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 0: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@13
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i;
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max;
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6;
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := move var@5 < move var@6
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> 2: u32 ;
+ var@6 -> 2: u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@4) {
+ loop {
+ var@8 := copy j;
+ var@9 := copy max;
+ var@7 := move var@8 < move var@9;
+ if (move var@7) {
+ var@10 := copy j;
+ s := copy s + copy var@10;
+ j := copy j + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+ };
+ var@13 := copy i;
+ s := copy s + copy var@13;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> false ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ j -> 2: u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> 1: u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> 1: u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@15
+[Debug] drop_value: place: var@14
+[Debug] drop_value: place: var@13
+[Debug] drop_value: place: var@12
+[Debug] drop_value: place: var@11
+[Debug] drop_value: place: var@10
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: j
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ j -> ⊥ : u32 ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : u32 ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : u32 ;
+ var@10 -> ⊥ : u32 ;
+ var@11 -> ⊥ : (u32, bool) ;
+ var@12 -> ⊥ : (u32, bool) ;
+ var@13 -> ⊥ : u32 ;
+ var@14 -> ⊥ : (u32, bool) ;
+ var@15 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@20 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> 2: u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@19 := move var@20 == 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> 2: u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> true ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@18 := ¬ move var@19
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> true ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> false ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@18)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> false ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop6(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32;
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s + 1: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32;
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s + 1: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := 0: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> ⊥ : u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+ };
+ s := copy s + 1: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ loop {
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 0: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := move var@7 > 3: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> 0: u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> false ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@8
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 0: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 1: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> true ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> 1: u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := move var@7 > 3: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> 1: u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> false ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 0: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + copy var@8
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 0: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32;
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ i := copy i + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 1: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ continue 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i;
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy i
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max;
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := copy max
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5;
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 < move var@5
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> 2: u32 ;
+ var@5 -> 2: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ if (move var@3) {
+ var@7 := copy i;
+ var@6 := move var@7 > 3: u32;
+ if (move var@6) {
+ break 0
+ }
+ else {
+ var@8 := copy i;
+ s := copy s + copy var@8;
+ i := copy i + 1: u32;
+ continue 0
+ }
+ }
+ else {
+ break 0
+ }
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> false ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ break 0
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + 1: u32;
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ s := copy s + 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 1: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> 2: u32 ;
+ i -> 2: u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> 1: u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [11,10,9,8,7,6,5,4,3,2,1]
+[Debug] drop_value: place: var@11
+[Debug] drop_value: place: var@10
+[Debug] drop_value: place: var@9
+[Debug] drop_value: place: var@8
+[Debug] drop_value: place: var@7
+[Debug] drop_value: place: var@6
+[Debug] drop_value: place: var@5
+[Debug] drop_value: place: var@4
+[Debug] drop_value: place: var@3
+[Debug] drop_value: place: i
+[Debug] drop_value: place: max
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+# Frame 1:
+{
+ s -> 2: u32 ;
+ max -> ⊥ : u32 ;
+ i -> ⊥ : u32 ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ var@5 -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : u32 ;
+ var@8 -> ⊥ : u32 ;
+ var@9 -> ⊥ : (u32, bool) ;
+ var@10 -> ⊥ : (u32, bool) ;
+ var@11 -> ⊥ : (u32, bool) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@24 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> 2: u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@23 := move var@24 == 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> 2: u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> true ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@22 := ¬ move var@23
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> true ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> false ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@22)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> false ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 2: u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> 3: u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> 1: u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> 2: u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug] test_unit_function: id_mut_mut_test1
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Borrow
+ (Values.MutBorrow (<opaque>,
+ { Values.value =
+ (Values.Concrete
+ (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+ )));
+ ty = (Types.Ref (Types.Erased, (Types.Integer Types.I32), Types.Mut)) }
+[Debug]
+**About to evaluate statement**: [
+ var@2 := &mut *(x);
+ var@0 := &mut *(var@2);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (&mut@0 (0: i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@2 := &mut *(x)
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (&mut@0 (0: i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := &mut *(var@2);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (&mut@0 (0: i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := &mut *(var@2)
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (&mut@0 (0: i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (⌊mut@4⌋) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (⌊mut@4⌋) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [2,1]
+[Debug] drop_value: place: var@2
+[Debug] drop_value: place: x
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (0: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (0: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy *(px)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> 1: i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> true ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> true ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> false ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> false ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (1: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> 1: i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> 1: i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> true ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> true ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> false ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> false ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] test_unit_function: id_mut_mut_test2
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Borrow
+ (Values.MutBorrow (<opaque>,
+ { Values.value =
+ (Values.Concrete
+ (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+ )));
+ ty = (Types.Ref (Types.Erased, (Types.Integer Types.I32), Types.Mut)) }
+[Debug]
+**About to evaluate statement**: [
+ var@2 := &mut *(x);
+ var@0 := &mut *(var@2);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (&mut@0 (0: i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@2 := &mut *(x)
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (&mut@0 (0: i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := &mut *(var@2);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (&mut@0 (0: i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@0 := &mut *(var@2)
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (&mut@0 (0: i32)) ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (⌊mut@4⌋) ;
+}
+
+
+
+[Debug] ctx_pop_frame:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> &mut@2 (⌊mut@3⌋) ;
+ var@2 -> &mut@3 (⌊mut@4⌋) ;
+}
+
+[Debug] ctx_pop_frame: locals to drop: [2,1]
+[Debug] drop_value: place: var@2
+[Debug] drop_value: place: x
+[Debug] ctx_pop_frame: after dropping local variables:
+# Ended regions: {}
+# 2 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+# Frame 1:
+{
+ var@0 -> &mut@4 (&mut@0 (0: i32)) ;
+ x -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (0: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (0: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ y := 2: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 2: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ py := &mut y
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 2: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (2: i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := &mut *(py)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (2: i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> &mut@6 (2: i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(ppy) := move var@8
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@0 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> &mut@6 (2: i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy *(px)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@4⌋) ;
+ ppy -> &mut@4 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> 2: i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 2: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> 2: i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> true ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> true ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> false ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> false ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(px) := 3: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (2: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> 1: i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := move var@14 == 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> 1: i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> true ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := ¬ move var@13
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> true ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> false ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@12)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> false ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy y
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> &mut@6 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> 3: i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := move var@17 == 3: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> 3: i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> true ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := ¬ move var@16
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> true ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> false ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@15)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> false ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 1: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 3: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] test_function_symbolic: add_test
+[Debug]
+**About to evaluate statement**: [
+ var@3 := copy x;
+ var@4 := copy y;
+ var@0 := copy var@3 + copy var@4;
+ return
]
**Context**:
@@ -19136,15 +54080,19 @@ s@0 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : (u32, bool) ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@3 := copy x
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19153,20 +54101,17 @@ s@0 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : (u32, bool) ;
}
-- op:
-copy y
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@0 := copy var@3 - copy var@4;
+ var@4 := copy y;
+ var@0 := copy var@3 + copy var@4;
return
]
@@ -19180,7 +54125,7 @@ s@1 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : (u32, bool) ;
}
@@ -19188,7 +54133,7 @@ s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@0 := copy var@3 - copy var@4
+ var@4 := copy y
]
**Context**:
@@ -19201,14 +54146,19 @@ s@1 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : (u32, bool) ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy var@3 + copy var@4;
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19223,13 +54173,13 @@ s@1 : u32
}
-- op:
-copy var@3
-[Debug] Value to copy:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy var@3 + copy var@4
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19244,11 +54194,7 @@ s@0 : u32
}
-- op:
-copy var@4
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
return
@@ -19270,12 +54216,12 @@ s@1 : u32
-[Debug] test_function_symbolic: div_test
+[Debug] test_function_symbolic: subs_test
[Debug]
**About to evaluate statement**: [
var@3 := copy x;
var@4 := copy y;
- var@0 := move var@3 / move var@4;
+ var@0 := copy var@3 - copy var@4;
return
]
@@ -19290,7 +54236,7 @@ s@1 : u32
y -> s@1 : u32 ;
var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
@@ -19311,36 +54257,15 @@ s@1 : u32
y -> s@1 : u32 ;
var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
-}
-
-
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
-- op:
-copy x
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
var@4 := copy y;
- var@0 := move var@3 / move var@4;
+ var@0 := copy var@3 - copy var@4;
return
]
@@ -19355,7 +54280,7 @@ s@0 : u32
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
@@ -19376,13 +54301,18 @@ s@0 : u32
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := copy var@3 - copy var@4;
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19392,20 +54322,15 @@ s@0 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : bool ;
+ var@4 -> s@1 : u32 ;
+ var@5 -> ⊥ : (u32, bool) ;
}
-- op:
-copy y
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@0 := move var@3 / move var@4;
- return
+ var@0 := copy var@3 - copy var@4
]
**Context**:
@@ -19419,14 +54344,14 @@ s@1 : u32
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
[Debug]
**About to evaluate statement**: [
- var@0 := move var@3 / move var@4
+ return
]
**Context**:
@@ -19435,18 +54360,26 @@ s@1 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
+ var@0 -> s@2 : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
var@4 -> s@1 : u32 ;
- var@5 -> ⊥ : bool ;
+ var@5 -> ⊥ : (u32, bool) ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug] test_function_symbolic: div_test
+[Debug]
+**About to evaluate statement**: [
+ var@3 := copy x;
+ var@4 := copy y;
+ var@0 := move var@3 / move var@4;
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19455,19 +54388,19 @@ s@1 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
+ var@3 -> ⊥ : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-- op:
-move var@3
-[Debug] Value to move:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@3 := copy x
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19477,18 +54410,16 @@ s@0 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> ⊥ : u32 ;
- var@4 -> s@1 : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-- op:
-move var@4
-[Debug] Value to move:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
+ var@4 := copy y;
+ var@0 := move var@3 / move var@4;
return
]
@@ -19498,23 +54429,19 @@ s@1 : u32
# Frame 0:
{
- var@0 -> s@2 : u32 ;
+ var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@3 -> s@0 : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-[Debug] test_function_symbolic: rem_test
[Debug]
**About to evaluate statement**: [
- var@3 := copy x;
- var@4 := copy y;
- var@0 := move var@3 % move var@4;
- return
+ var@4 := copy y
]
**Context**:
@@ -19526,7 +54453,7 @@ s@1 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@3 -> s@0 : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
@@ -19535,7 +54462,8 @@ s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@3 := copy x
+ var@0 := move var@3 / move var@4;
+ return
]
**Context**:
@@ -19547,15 +54475,19 @@ s@1 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
+ var@3 -> s@0 : u32 ;
+ var@4 -> s@1 : u32 ;
var@5 -> ⊥ : bool ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := move var@3 / move var@4
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19564,21 +54496,15 @@ s@1 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
+ var@3 -> s@0 : u32 ;
+ var@4 -> s@1 : u32 ;
var@5 -> ⊥ : bool ;
}
-- op:
-copy x
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
- var@4 := copy y;
- var@0 := move var@3 % move var@4;
return
]
@@ -19588,19 +54514,23 @@ s@0 : u32
# Frame 0:
{
- var@0 -> ⊥ : u32 ;
+ var@0 -> s@2 : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
+[Debug] test_function_symbolic: rem_test
[Debug]
**About to evaluate statement**: [
- var@4 := copy y
+ var@3 := copy x;
+ var@4 := copy y;
+ var@0 := move var@3 % move var@4;
+ return
]
**Context**:
@@ -19612,15 +54542,19 @@ s@0 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@3 := copy x
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19629,19 +54563,16 @@ s@0 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> s@0 : u32 ;
+ var@3 -> ⊥ : u32 ;
var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-- op:
-copy y
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
+ var@4 := copy y;
var@0 := move var@3 % move var@4;
return
]
@@ -19656,7 +54587,7 @@ s@1 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
@@ -19664,7 +54595,7 @@ s@1 : u32
[Debug]
**About to evaluate statement**: [
- var@0 := move var@3 % move var@4
+ var@4 := copy y
]
**Context**:
@@ -19677,14 +54608,19 @@ s@1 : u32
x -> s@0 : u32 ;
y -> s@1 : u32 ;
var@3 -> s@0 : u32 ;
- var@4 -> s@1 : u32 ;
+ var@4 -> ⊥ : u32 ;
var@5 -> ⊥ : bool ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := move var@3 % move var@4;
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19699,13 +54635,13 @@ s@1 : u32
}
-- op:
-move var@3
-[Debug] Value to move:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := move var@3 % move var@4
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -19714,17 +54650,13 @@ s@0 : u32
var@0 -> ⊥ : u32 ;
x -> s@0 : u32 ;
y -> s@1 : u32 ;
- var@3 -> ⊥ : u32 ;
+ var@3 -> s@0 : u32 ;
var@4 -> s@1 : u32 ;
var@5 -> ⊥ : bool ;
}
-- op:
-move var@4
-[Debug] Value to move:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
return
@@ -19811,30 +54743,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-23: u32
-
[Debug]
**About to evaluate statement**: [
y := 44: u32;
@@ -19898,30 +54806,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-44: u32
-
[Debug]
**About to evaluate statement**: [
z := 67: u32;
@@ -19984,30 +54868,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> ⊥ : u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-67: u32
-
[Debug]
**About to evaluate statement**: [
var@5 := copy x;
@@ -20069,32 +54929,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-23: u32
[Debug]
**About to evaluate statement**: [
(p).x := move var@5;
@@ -20155,32 +54989,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> ⊥ : test1::Pair<u32, u32> ;
- var@5 -> 23: u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-23: u32
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (0, None)), 0))
ty: (Types.Adt ((Types.AdtId 0), [],
@@ -20244,30 +55052,6 @@ ty: (Types.Adt ((Types.AdtId 0), [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = ⊥ : u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-67: u32
-
[Debug]
**About to evaluate statement**: [
(s as test1::Sum::Right).0 := true;
@@ -20326,30 +55110,6 @@ ty: (Types.Adt ((Types.AdtId 0), [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = 67: u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> ⊥ : test1::Sum<u32, bool> ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-true
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (6, (Some 1))), 0))
ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool]))
@@ -20466,30 +55226,6 @@ ty: (Types.Adt ((Types.AdtId 6), [], [(Types.Integer Types.U32); Types.Bool]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 23: u32 ;
- y -> 44: u32 ;
- z -> 67: u32 ;
- p -> test1::Pair { x = 23: u32; y = 67: u32; } ;
- var@5 -> ⊥ : u32 ;
- s -> test1::Sum::Right { 0 = true; } ;
- o -> ⊥ : test1::One<u64> ;
- e0 -> ⊥ : test1::EmptyEnum ;
- e1 -> ⊥ : test1::EmptyEnum ;
- enum0 -> ⊥ : test1::Enum ;
-}
-
-
-- op:
-3: u64
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (2, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
@@ -20733,27 +55469,6 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
var@5 := copy y;
@@ -20804,27 +55519,6 @@ s@0 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> s@0 : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
var@3 := move var@4 >= move var@5;
@@ -20874,48 +55568,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> s@1 : u32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
if (move var@3) {
@@ -20969,27 +55621,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> true ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@0 := copy x
@@ -21011,48 +55642,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> false ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@0 := copy y
@@ -21074,27 +55663,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : u32 ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- var@3 -> ⊥ : bool ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
return
@@ -21197,52 +55765,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-4: u32
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-3: u32
-
[Debug]
**About to evaluate statement**: [
y := move get_max(10: u32, 11: u32);
@@ -21301,52 +55823,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-10: u32
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> ⊥ : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-11: u32
-
[Debug]
**About to evaluate statement**: [
var@4 := copy x;
@@ -21404,31 +55880,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> ⊥ : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-s@0 : u32
[Debug]
**About to evaluate statement**: [
var@5 := copy y;
@@ -21485,31 +55936,6 @@ s@0 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> ⊥ : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
z := copy var@4 + copy var@5;
@@ -21565,56 +55991,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy var@4
-
-[Debug] Value to copy:
-s@0 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> ⊥ : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy var@5
-
-[Debug] Value to copy:
-s@1 : u32
[Debug]
**About to evaluate statement**: [
var@9 := copy z;
@@ -21669,31 +56045,6 @@ s@1 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> s@2 : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-copy z
-
-[Debug] Value to copy:
-s@2 : u32
[Debug]
**About to evaluate statement**: [
var@8 := move var@9 == 15: u32;
@@ -21747,54 +56098,6 @@ s@2 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> s@2 : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> s@2 : u32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-s@2 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> s@2 : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-15: u32
-
[Debug]
**About to evaluate statement**: [
var@7 := ¬ move var@8;
@@ -21847,31 +56150,6 @@ s@2 : u32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> s@2 : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> ⊥ : bool ;
- var@8 -> s@3 : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-s@3 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@7);
@@ -21923,31 +56201,6 @@ s@3 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@0 : u32 ;
- y -> s@1 : u32 ;
- z -> s@2 : u32 ;
- var@4 -> s@0 : u32 ;
- var@5 -> s@1 : u32 ;
- var@6 -> ⊥ : (u32, bool) ;
- var@7 -> true ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : u32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
return
@@ -22016,25 +56269,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
- var@2 -> ⊥ : i32 ;
- var@3 -> ⊥ : bool ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-s@0 : i32
[Debug]
**About to evaluate statement**: [
var@3 := copy var@2 == -2147483648: i32;
@@ -22076,42 +56310,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
- var@2 -> s@0 : i32 ;
- var@3 -> ⊥ : bool ;
-}
-
-
-- op:
-copy var@2
-
-[Debug] Value to copy:
-s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
- var@2 -> s@0 : i32 ;
- var@3 -> ⊥ : bool ;
-}
-
-
-- op:
--2147483648: i32
-
[Debug]
**About to evaluate statement**: [
assert(¬move var@3);
@@ -22152,25 +56350,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
- var@2 -> s@0 : i32 ;
- var@3 -> true ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@0 := - move var@2;
@@ -22210,25 +56389,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
- var@2 -> s@0 : i32 ;
- var@3 -> ⊥ : bool ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-s@0 : i32
[Debug]
**About to evaluate statement**: [
return
@@ -22287,22 +56447,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
-}
-
-
-- op:
-3: i32
-
[Debug]
**About to evaluate statement**: [
y := -3: i32;
@@ -22340,22 +56484,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 3: i32 ;
- y -> ⊥ : i32 ;
-}
-
-
-- op:
--3: i32
-
[Debug]
**About to evaluate statement**: [
return
@@ -22427,26 +56555,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -22597,26 +56705,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⌊mut@1⌋ ;
- ppx -> &mut@1 (&mut@0 (0: i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@6 := copy x;
@@ -22665,28 +56753,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⌊mut@1⌋ ;
- ppx -> &mut@1 (&mut@0 (1: i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-1: i32
[Debug]
**About to evaluate statement**: [
var@5 := move var@6 == 1: i32;
@@ -22734,48 +56800,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> 1: i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-1: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
var@4 := ¬ move var@5;
@@ -22822,28 +56846,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> ⊥ : bool ;
- var@5 -> s@0 : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-s@0 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@4);
@@ -22889,28 +56891,6 @@ s@0 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 1: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@4 -> true ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
return
@@ -23026,38 +57006,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
y := 1: i32;
@@ -23149,38 +57097,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⊥ : i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-1: i32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -23621,40 +57537,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@0 (0: i32)) ;
- var@6 -> &mut@3 (1: i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-&mut@3 (1: i32)
[Debug]
**About to evaluate statement**: [
*(*(ppx)) := 2: i32;
@@ -23740,38 +57622,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@3 (1: i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@9 := copy *(px);
@@ -23856,40 +57706,6 @@ move var@6
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⌊mut@2⌋ ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> &mut@2 (&mut@3 (2: i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(px)
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@8 := move var@9 == 2: i32;
@@ -23973,72 +57789,6 @@ copy *(px)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> 2: i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@7 := ¬ move var@8;
@@ -24121,40 +57871,6 @@ move var@9
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> s@0 : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-s@0 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@7);
@@ -24236,40 +57952,6 @@ s@0 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> true ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@12 := copy x;
@@ -24350,40 +58032,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@11 := move var@12 == 0: i32;
@@ -24463,72 +58111,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> 0: i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@12
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@10 := ¬ move var@11;
@@ -24607,40 +58189,6 @@ move var@12
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> s@2 : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@11
-
-[Debug] Value to move:
-s@2 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@10);
@@ -24718,40 +58266,6 @@ s@2 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> true ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@10
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@15 := copy *(py);
@@ -24828,40 +58342,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> &mut@3 (2: i32) ;
- py -> &mut@1 (⌊mut@3⌋) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(py)
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@14 := move var@15 == 2: i32;
@@ -24937,72 +58417,6 @@ copy *(py)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> 2: i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@15
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@13 := ¬ move var@14;
@@ -25077,40 +58491,6 @@ move var@15
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> s@4 : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@14
-
-[Debug] Value to move:
-s@4 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@13);
@@ -25184,40 +58564,6 @@ s@4 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> true ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@13
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@18 := copy y;
@@ -25290,40 +58636,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⌊mut@1⌋ ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> &mut@1 (2: i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-2: i32
[Debug]
**About to evaluate statement**: [
var@17 := move var@18 == 2: i32;
@@ -25395,72 +58707,6 @@ copy y
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> 2: i32 ;
-}
-
-
-- op:
-move var@18
-
-[Debug] Value to move:
-2: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-2: i32
-
[Debug]
**About to evaluate statement**: [
var@16 := ¬ move var@17;
@@ -25531,40 +58777,6 @@ move var@18
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> s@6 : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@17
-
-[Debug] Value to move:
-s@6 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@16);
@@ -25634,40 +58846,6 @@ s@6 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> 2: i32 ;
- px -> ⊥ : &'_ mut (i32) ;
- py -> ⊥ : &'_ mut (i32) ;
- ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : i32 ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> true ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@16
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
return
@@ -25795,25 +58973,6 @@ true
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -25856,23 +59015,6 @@ test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -25917,25 +59059,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-s@0 : std::boxed::Box<test1::List<i32>>
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -26100,28 +59223,6 @@ s@0 : std::boxed::Box<test1::List<i32>>
- type_params: [i32]
- args: [0: i32]
- dest: b
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> ⊥ : std::boxed::Box<i32> ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@3 := &two-phase b;
@@ -26242,28 +59343,6 @@ s@0 : std::boxed::Box<test1::List<i32>>
- type_params: [i32]
- args: [move var@3]
- dest: x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- b -> @shared_loan({0}, s@0 : std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ mut (i32) ;
- var@3 -> ⌊inactivated_mut@0⌋ ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@3
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Symbolic
@@ -26274,8 +59353,6 @@ move var@3
});
ty =
(Types.Adt ((Types.Assumed Types.Box), [], [(Types.Integer Types.I32)])) }
-[Debug] Value to move:
-&mut@0 (s@0 : std::boxed::Box<i32>)
[Debug]
**About to evaluate statement**: [
*(x) := 1: i32;
@@ -26340,8 +59417,9 @@ move var@3
-[Debug] eval_operand:
-- ctx:
+[Debug] expand_symbolic_value: s@1 : &r@0 mut (i32)
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -26363,8 +59441,27 @@ move var@3
}
-- op:
-1: i32
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> ⌊mut@0⌋ ;
+ x -> &mut@1 (s@2 : i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)),
+ ⌊mut@1, proj_loans (s@2 : i32)⌋
+ }
+}
+
[Debug]
**About to evaluate statement**: [
@@ -26429,6 +59526,112 @@ move var@3
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> ⌊mut@0⌋ ;
+ x -> &mut@1 (1: i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)),
+ ⌊mut@1, proj_loans (s@2 : i32)⌋
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after parent abstractions ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> ⌊mut@0⌋ ;
+ x -> &mut@1 (1: i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)),
+ ⌊mut@1, proj_loans (s@2 : i32)⌋
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after loans ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> ⌊mut@0⌋ ;
+ x -> ⊥ : &'_ mut (i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)),
+ @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }
+ }
+}
+
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> ⌊mut@0⌋ ;
+ x -> &mut@1 (1: i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@0 (proj_borrows (s@0 : std::boxed::Box<i32> <: std::boxed::Box<i32>)),
+ ⌊mut@1, proj_loans (s@2 : i32)⌋
+ }
+}
+
+
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> s@3 : std::boxed::Box<i32> ;
+ x -> ⊥ : &'_ mut (i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+}
+
[Debug]
**About to evaluate statement**: [
x := move core::ops::deref::Deref<Box<i32>>::deref(move var@5);
@@ -26488,8 +59691,17 @@ move var@3
- type_params: [i32]
- args: [move var@5]
- dest: x
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy *(x);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ drop(b);
+ return
+]
+
+**Context**:
# Ended regions: {0}
# 1 frame(s)
@@ -26499,27 +59711,22 @@ move var@3
b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ;
x -> ⊥ : &'_ mut (i32) ;
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⊥ : &'_ (i32) ;
- var@5 -> ⌊shared@2⌋ ;
+ x -> s@4 : &r@1 (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ ⌊shared@2⌋,
+ proj_loans (s@4 : &r@1 (i32))
+ }
}
-- op:
-move var@5
-[Debug] Value to move:
-⌊shared@2⌋
[Debug]
**About to evaluate statement**: [
- var@8 := copy *(x);
- var@7 := move var@8 == 1: i32;
- var@6 := ¬ move var@7;
- assert(¬move var@6);
- drop(b);
- return
+ var@8 := copy *(x)
]
**Context**:
@@ -26545,12 +59752,9 @@ move var@5
-[Debug]
-**About to evaluate statement**: [
- var@8 := copy *(x)
-]
+[Debug] expand_symbolic_value: s@4 : &r@1 (i32)
-**Context**:
+- original context:
# Ended regions: {0}
# 1 frame(s)
@@ -26572,9 +59776,7 @@ move var@5
}
-
-[Debug] eval_operand:
-- ctx:
+- new context:
# Ended regions: {0}
# 1 frame(s)
@@ -26584,23 +59786,18 @@ move var@5
b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ;
x -> ⊥ : &'_ mut (i32) ;
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> s@4 : &r@1 (i32) ;
+ x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
- proj_loans (s@4 : &r@1 (i32))
+ @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32))
}
}
-- op:
-copy *(x)
-
-[Debug] Value to copy:
-s@5 : i32
[Debug]
**About to evaluate statement**: [
var@7 := move var@8 == 1: i32;
@@ -26661,8 +59858,15 @@ s@5 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ drop(b);
+ return
+]
+
+**Context**:
# Ended regions: {0}
# 1 frame(s)
@@ -26675,8 +59879,8 @@ s@5 : i32
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
- var@8 -> s@5 : i32 ;
+ var@7 -> s@6 : bool ;
+ var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
@shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32))
@@ -26684,13 +59888,13 @@ s@5 : i32
}
-- op:
-move var@8
-[Debug] Value to move:
-s@5 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7
+]
+
+**Context**:
# Ended regions: {0}
# 1 frame(s)
@@ -26703,7 +59907,7 @@ s@5 : i32
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : bool ;
+ var@7 -> s@6 : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
@@ -26712,12 +59916,9 @@ s@5 : i32
}
-- op:
-1: i32
[Debug]
**About to evaluate statement**: [
- var@6 := ¬ move var@7;
assert(¬move var@6);
drop(b);
return
@@ -26735,8 +59936,8 @@ s@5 : i32
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> s@6 : bool ;
+ var@6 -> s@7 : bool ;
+ var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
@@ -26748,7 +59949,7 @@ s@5 : i32
[Debug]
**About to evaluate statement**: [
- var@6 := ¬ move var@7
+ assert(¬move var@6)
]
**Context**:
@@ -26763,8 +59964,8 @@ s@5 : i32
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> ⊥ : bool ;
- var@7 -> s@6 : bool ;
+ var@6 -> s@7 : bool ;
+ var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
@@ -26774,8 +59975,13 @@ s@5 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ drop(b);
+ return
+]
+
+**Context**:
# Ended regions: {0}
# 1 frame(s)
@@ -26788,7 +59994,7 @@ s@5 : i32
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
- var@7 -> s@6 : bool ;
+ var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
@@ -26797,16 +60003,10 @@ s@5 : i32
}
-- op:
-move var@7
-[Debug] Value to move:
-s@6 : bool
[Debug]
**About to evaluate statement**: [
- assert(¬move var@6);
- drop(b);
- return
+ drop(b)
]
**Context**:
@@ -26821,7 +60021,7 @@ s@6 : bool
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> s@7 : bool ;
+ var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
@@ -26832,12 +60032,9 @@ s@6 : bool
-[Debug]
-**About to evaluate statement**: [
- assert(¬move var@6)
-]
-
-**Context**:
+[Debug] drop_value: place: b
+[Debug] end_abstraction: 1
+- original context:
# Ended regions: {0}
# 1 frame(s)
@@ -26849,7 +60046,7 @@ s@6 : bool
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> s@7 : bool ;
+ var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
@@ -26858,10 +60055,8 @@ s@6 : bool
}
}
-
-
-[Debug] eval_operand:
-- ctx:
+[Debug] end_abstraction: 1
+- context after parent abstractions ended:
# Ended regions: {0}
# 1 frame(s)
@@ -26873,7 +60068,7 @@ s@6 : bool
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
x -> ⌊shared@3⌋ ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
- var@6 -> true ;
+ var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
@@ -26882,19 +60077,8 @@ s@6 : bool
}
}
-
-- op:
-move var@6
-
-[Debug] Value to move:
-true
-[Debug]
-**About to evaluate statement**: [
- drop(b);
- return
-]
-
-**Context**:
+[Debug] end_abstraction: 1
+- context after loans ended:
# Ended regions: {0}
# 1 frame(s)
@@ -26904,25 +60088,19 @@ true
b -> @shared_loan({2}, s@3 : std::boxed::Box<i32>) ;
x -> ⊥ : &'_ mut (i32) ;
var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
- x -> ⌊shared@3⌋ ;
+ x -> ⊥ : &'_ (i32) ;
var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
var@6 -> ⊥ : bool ;
var@7 -> ⊥ : bool ;
var@8 -> ⊥ : i32 ;
abs@1{parents={}}{regions={1}} {
⌊shared@2⌋,
- @shared_loan({3}, s@5 : i32, proj_loans (s@5 : i32))
+ @ended_shared_loan(s@5 : i32, proj_loans (s@5 : i32))
}
}
-
-
-[Debug]
-**About to evaluate statement**: [
- drop(b)
-]
-
-**Context**:
+[Debug] end_abstraction: 1
+- original context:
# Ended regions: {0}
# 1 frame(s)
@@ -26944,8 +60122,23 @@ true
}
+- new context:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ b -> s@3 : std::boxed::Box<i32> ;
+ x -> ⊥ : &'_ mut (i32) ;
+ var@3 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ;
+ x -> ⊥ : &'_ (i32) ;
+ var@5 -> ⊥ : &'_ (std::boxed::Box<i32>) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+}
-[Debug] drop_value: place: b
[Debug]
**About to evaluate statement**: [
return
@@ -27006,23 +60199,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : i32 ;
- x -> s@0 : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-s@0 : i32
[Debug]
**About to evaluate statement**: [
return
@@ -27098,28 +60274,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- px -> ⊥ : &'_ (i32) ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
px := &x;
@@ -27231,30 +60385,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy x
-
-[Debug] Value to copy:
-@shared_loan({0}, 0: i32)
[Debug]
**About to evaluate statement**: [
y := move copy_int(move var@4);
@@ -27309,30 +60439,6 @@ copy x
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> ⊥ : i32 ;
- var@4 -> 0: i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-0: i32
[Debug]
**About to evaluate statement**: [
var@7 := copy *(px);
@@ -27386,30 +60492,6 @@ move var@4
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy *(px)
-
-[Debug] Value to copy:
-0: i32
[Debug]
**About to evaluate statement**: [
var@8 := copy y;
@@ -27462,30 +60544,6 @@ copy *(px)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> 0: i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-s@0 : i32
[Debug]
**About to evaluate statement**: [
var@6 := move var@7 == move var@8;
@@ -27537,54 +60595,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> 0: i32 ;
- var@8 -> s@0 : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-0: i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> s@0 : i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-s@0 : i32
[Debug]
**About to evaluate statement**: [
var@5 := ¬ move var@6;
@@ -27635,30 +60645,6 @@ s@0 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> ⊥ : bool ;
- var@6 -> s@1 : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-s@1 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@5);
@@ -27708,30 +60694,6 @@ s@1 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> @shared_loan({0}, 0: i32) ;
- px -> ⌊shared@0⌋ ;
- y -> s@0 : i32 ;
- var@4 -> ⊥ : i32 ;
- var@5 -> true ;
- var@6 -> ⊥ : bool ;
- var@7 -> ⊥ : i32 ;
- var@8 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@5
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
return
@@ -27811,6 +60773,38 @@ true
+[Debug] expand_symbolic_value: s@0 : &r@0 (test1::List<T>)
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ proj_loans (s@0 : &r@0 (test1::List<T>))
+ }
+ var@0 -> ⊥ : bool ;
+ l -> s@0 : &r@0 (test1::List<T>) ;
+ var@2 -> ⊥ : isize ;
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ @shared_loan({0}, s@1 : test1::List<T>, proj_loans (s@1 : test1::List<T>))
+ }
+ var@0 -> ⊥ : bool ;
+ l -> ⌊shared@0⌋ ;
+ var@2 -> ⊥ : isize ;
+}
+
+
[Debug]
**About to evaluate statement**: [
switch (move var@2) {
@@ -27874,27 +60868,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); })
- }
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@0⌋ ;
- var@2 -> 0: isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-0: isize
[Debug]
**About to evaluate statement**: [
var@0 := true
@@ -27916,25 +60889,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- @shared_loan({0}, test1::List::Cons { 0 = s@2 : T; 1 = s@3 : std::boxed::Box<test1::List<T>>; }, test1::List::Cons { 0 = proj_loans (s@2 : T); 1 = proj_loans (s@3 : std::boxed::Box<test1::List<T>>); })
- }
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@0⌋ ;
- var@2 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
return
@@ -28019,27 +60973,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- @shared_loan({0}, test1::List::Nil, test1::List::Nil)
- }
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@0⌋ ;
- var@2 -> 1: isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-1: isize
[Debug]
**About to evaluate statement**: [
var@0 := false
@@ -28061,25 +60994,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- @shared_loan({0}, test1::List::Nil, test1::List::Nil)
- }
- var@0 -> ⊥ : bool ;
- l -> ⌊shared@0⌋ ;
- var@2 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
return
@@ -28220,29 +61134,6 @@ false
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -28298,27 +61189,6 @@ test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -28376,29 +61246,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⊥ : &'_ (test1::List<i32>) ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-s@0 : std::boxed::Box<test1::List<i32>>
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -28555,29 +61402,6 @@ s@0 : std::boxed::Box<test1::List<i32>>
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> @shared_loan({0}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
-}
-
-
-- op:
-copy var@7
-
-[Debug] Value to copy:
-⌊shared@0⌋
[Debug]
**About to evaluate statement**: [
var@5 := move is_cons<i32>(move var@6);
@@ -28628,8 +61452,15 @@ copy var@7
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@4 := ¬ move var@5;
+ assert(¬move var@4);
+ drop(l);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -28640,23 +61471,20 @@ copy var@7
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
var@4 -> ⊥ : bool ;
- var@5 -> ⊥ : bool ;
- var@6 -> ⌊shared@1⌋ ;
+ var@5 -> s@1 : bool ;
+ var@6 -> ⊥ : &'_ (test1::List<i32>) ;
var@7 -> ⌊shared@0⌋ ;
+ abs@0{parents={}}{regions={0}} {
+ ⌊shared@1⌋,
+ proj_loans (s@1 : bool)
+ }
}
-- op:
-move var@6
-[Debug] Value to move:
-⌊shared@1⌋
[Debug]
**About to evaluate statement**: [
- var@4 := ¬ move var@5;
- assert(¬move var@4);
- drop(l);
- return
+ var@4 := ¬ move var@5
]
**Context**:
@@ -28683,7 +61511,9 @@ move var@6
[Debug]
**About to evaluate statement**: [
- var@4 := ¬ move var@5
+ assert(¬move var@4);
+ drop(l);
+ return
]
**Context**:
@@ -28696,8 +61526,8 @@ move var@6
l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> s@1 : bool ;
+ var@4 -> s@2 : bool ;
+ var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
var@7 -> ⌊shared@0⌋ ;
abs@0{parents={}}{regions={0}} {
@@ -28708,8 +61538,12 @@ move var@6
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@4)
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -28719,8 +61553,8 @@ move var@6
l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> ⊥ : bool ;
- var@5 -> s@1 : bool ;
+ var@4 -> s@2 : bool ;
+ var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
var@7 -> ⌊shared@0⌋ ;
abs@0{parents={}}{regions={0}} {
@@ -28730,14 +61564,9 @@ move var@6
}
-- op:
-move var@5
-[Debug] Value to move:
-s@1 : bool
[Debug]
**About to evaluate statement**: [
- assert(¬move var@4);
drop(l);
return
]
@@ -28752,7 +61581,7 @@ s@1 : bool
l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> s@2 : bool ;
+ var@4 -> ⊥ : bool ;
var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
var@7 -> ⌊shared@0⌋ ;
@@ -28766,7 +61595,7 @@ s@1 : bool
[Debug]
**About to evaluate statement**: [
- assert(¬move var@4)
+ drop(l)
]
**Context**:
@@ -28779,7 +61608,7 @@ s@1 : bool
l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> s@2 : bool ;
+ var@4 -> ⊥ : bool ;
var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
var@7 -> ⌊shared@0⌋ ;
@@ -28791,80 +61620,85 @@ s@1 : bool
-[Debug] eval_operand:
-- ctx:
+[Debug] drop_value: place: l
+[Debug] end_abstraction: 0
+- original context:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
+ l -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- var@4 -> true ;
+ var@4 -> ⊥ : bool ;
var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
+ var@7 -> ⊥ : &'_ (test1::List<i32>) ;
abs@0{parents={}}{regions={0}} {
⌊shared@1⌋,
proj_loans (s@1 : bool)
}
}
-
-- op:
-move var@4
-
-[Debug] Value to move:
-true
-[Debug]
-**About to evaluate statement**: [
- drop(l);
- return
-]
-
-**Context**:
+[Debug] end_abstraction: 0
+- context after parent abstractions ended:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
+ l -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
var@4 -> ⊥ : bool ;
var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
+ var@7 -> ⊥ : &'_ (test1::List<i32>) ;
abs@0{parents={}}{regions={0}} {
⌊shared@1⌋,
proj_loans (s@1 : bool)
}
}
+[Debug] end_abstraction: 0
+- context after loans ended:
+# Ended regions: {}
+# 1 frame(s)
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ l -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
+ var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
+ var@3 -> ⊥ : test1::List<i32> ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : bool ;
+ var@6 -> ⊥ : &'_ (test1::List<i32>) ;
+ var@7 -> ⊥ : &'_ (test1::List<i32>) ;
+ abs@0{parents={}}{regions={0}} {
+ ⌊shared@1⌋,
+ proj_loans (s@1 : bool)
+ }
+}
-[Debug]
-**About to evaluate statement**: [
- drop(l)
-]
-
-**Context**:
+[Debug] end_abstraction: 0
+- original context:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- l -> @shared_loan({0, 1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
+ l -> @shared_loan({1}, test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }) ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
var@4 -> ⊥ : bool ;
var@5 -> ⊥ : bool ;
var@6 -> ⊥ : &'_ (test1::List<i32>) ;
- var@7 -> ⌊shared@0⌋ ;
+ var@7 -> ⊥ : &'_ (test1::List<i32>) ;
abs@0{parents={}}{regions={0}} {
⌊shared@1⌋,
proj_loans (s@1 : bool)
@@ -28872,8 +61706,22 @@ true
}
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ;
+ var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
+ var@3 -> ⊥ : test1::List<i32> ;
+ var@4 -> ⊥ : bool ;
+ var@5 -> ⊥ : bool ;
+ var@6 -> ⊥ : &'_ (test1::List<i32>) ;
+ var@7 -> ⊥ : &'_ (test1::List<i32>) ;
+}
-[Debug] drop_value: place: l
[Debug]
**About to evaluate statement**: [
return
@@ -28971,30 +61819,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> s@0 : test1::List<T> ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> ⊥ : bool ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
var@7 := false;
@@ -29067,30 +61891,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> s@0 : test1::List<T> ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> ⊥ : bool ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
var@7 := true;
@@ -29162,30 +61962,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> s@0 : test1::List<T> ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
var@8 := true;
@@ -29256,30 +62032,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> s@0 : test1::List<T> ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-true
-
[Debug]
**About to evaluate statement**: [
var@2 := discriminant(l);
@@ -29391,32 +62143,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> 0: isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> true ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-0: isize
[Debug]
**About to evaluate statement**: [
var@8 := false;
@@ -29478,30 +62204,6 @@ move var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> true ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
hd := move (l as test1::List::Cons).0;
@@ -29562,32 +62264,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = s@1 : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move (l as test1::List::Cons).0
-
-[Debug] Value to move:
-s@1 : T
[Debug]
**About to evaluate statement**: [
var@7 := false;
@@ -29647,30 +62323,6 @@ s@1 : T
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> s@1 : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-false
-
[Debug]
**About to evaluate statement**: [
tl := move (l as test1::List::Cons).1;
@@ -29729,32 +62381,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = ⊥ : T; 1 = s@2 : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> s@1 : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move (l as test1::List::Cons).1
-
-[Debug] Value to move:
-s@2 : std::boxed::Box<test1::List<T>>
[Debug]
**About to evaluate statement**: [
var@5 := move hd;
@@ -29812,32 +62438,6 @@ s@2 : std::boxed::Box<test1::List<T>>
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> s@1 : T ;
- tl -> s@2 : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move hd
-
-[Debug] Value to move:
-s@1 : T
[Debug]
**About to evaluate statement**: [
var@6 := move deref_box(tl);
@@ -29894,8 +62494,9 @@ s@1 : T
-[Debug] eval_operand:
-- ctx:
+[Debug] expand_symbolic_value: s@2 : std::boxed::Box<test1::List<T>>
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -29915,20 +62516,7 @@ s@1 : T
}
-- op:
-move deref_box(tl)
-
-[Debug] Value to move:
-s@3 : test1::List<T>
-[Debug]
-**About to evaluate statement**: [
- (var@0).0 := move var@5;
- (var@0).1 := move var@6;
- var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl);
- return
-]
-
-**Context**:
+- new context:
# Ended regions: {}
# 1 frame(s)
@@ -29938,9 +62526,9 @@ s@3 : test1::List<T>
l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ;
var@2 -> ⊥ : isize ;
hd -> ⊥ : T ;
- tl -> @Box(⊥ : test1::List<T>) ;
+ tl -> @Box(s@3 : test1::List<T>) ;
var@5 -> s@1 : T ;
- var@6 -> s@3 : test1::List<T> ;
+ var@6 -> ⊥ : test1::List<T> ;
var@7 -> false ;
var@8 -> false ;
var@9 -> ⊥ : () ;
@@ -29948,10 +62536,12 @@ s@3 : test1::List<T>
}
-
[Debug]
**About to evaluate statement**: [
- (var@0).0 := move var@5
+ (var@0).0 := move var@5;
+ (var@0).1 := move var@6;
+ var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl);
+ return
]
**Context**:
@@ -29975,8 +62565,12 @@ s@3 : test1::List<T>
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ (var@0).0 := move var@5
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -29996,11 +62590,7 @@ s@3 : test1::List<T>
}
-- op:
-move var@5
-[Debug] Value to move:
-s@1 : T
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjTuple 2), 0))
ty: (Types.Adt (Types.Tuple, [],
@@ -30061,32 +62651,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> (s@1 : T, ⊥ : test1::List<T>) ;
- l -> test1::List::Cons { 0 = ⊥ : T; 1 = ⊥ : std::boxed::Box<test1::List<T>>; } ;
- var@2 -> ⊥ : isize ;
- hd -> ⊥ : T ;
- tl -> @Box(⊥ : test1::List<T>) ;
- var@5 -> ⊥ : T ;
- var@6 -> s@3 : test1::List<T> ;
- var@7 -> false ;
- var@8 -> false ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@6
-
-[Debug] Value to move:
-s@3 : test1::List<T>
[Debug]
**About to evaluate statement**: [
var@9 := move alloc::alloc::box_free<test1::List<T>>(move tl);
@@ -30214,32 +62778,6 @@ s@3 : test1::List<T>
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : (T, test1::List<T>) ;
- l -> test1::List::Nil ;
- var@2 -> 1: isize ;
- hd -> ⊥ : T ;
- tl -> ⊥ : std::boxed::Box<test1::List<T>> ;
- var@5 -> ⊥ : T ;
- var@6 -> ⊥ : test1::List<T> ;
- var@7 -> true ;
- var@8 -> true ;
- var@9 -> ⊥ : () ;
- var@10 -> ⊥ : isize ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-1: isize
[Debug]
**About to evaluate statement**: [
panic
@@ -30403,32 +62941,6 @@ move var@2
- type_params: [test1::List<i32>]
- args: [move var@3]
- dest: var@2
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> test1::List::Nil ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@3
-
-[Debug] Value to move:
-test1::List::Nil
[Debug]
**About to evaluate statement**: [
(l as test1::List::Cons).0 := 0: i32;
@@ -30493,30 +63005,6 @@ test1::List::Nil
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjAdt (1, (Some 0))), 0))
ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
@@ -30583,32 +63071,6 @@ ty: (Types.Adt ((Types.AdtId 1), [], [(Types.Integer Types.I32)]))
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = ⊥ : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> s@0 : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@2
-
-[Debug] Value to move:
-s@0 : std::boxed::Box<test1::List<i32>>
[Debug]
**About to evaluate statement**: [
set_discriminant(l, 0);
@@ -30732,32 +63194,6 @@ s@0 : std::boxed::Box<test1::List<i32>>
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move l
-
-[Debug] Value to move:
-test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
[Debug]
**About to evaluate statement**: [
var@6 := move split_list<i32>(move var@7);
@@ -30818,32 +63254,6 @@ test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> ⊥ : i32 ;
- tl -> ⊥ : test1::List<i32> ;
- var@6 -> ⊥ : (i32, test1::List<i32>) ;
- var@7 -> test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@7
-
-[Debug] Value to move:
-test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
[Debug]
**About to evaluate statement**: [
hd := copy (var@6).0;
@@ -30903,8 +63313,9 @@ test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
-[Debug] eval_operand:
-- ctx:
+[Debug] expand_symbolic_value: s@1 : (i32, test1::List<i32>)
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -30924,23 +63335,7 @@ test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; }
}
-- op:
-copy (var@6).0
-
-[Debug] Value to copy:
-s@2 : i32
-[Debug]
-**About to evaluate statement**: [
- tl := move (var@6).1;
- var@10 := copy hd;
- var@9 := move var@10 == 0: i32;
- var@8 := ¬ move var@9;
- assert(¬move var@8);
- drop(tl);
- return
-]
-
-**Context**:
+- new context:
# Ended regions: {}
# 1 frame(s)
@@ -30950,7 +63345,7 @@ s@2 : i32
l -> ⊥ : test1::List<i32> ;
var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
+ hd -> ⊥ : i32 ;
tl -> ⊥ : test1::List<i32> ;
var@6 -> (s@2 : i32, s@3 : test1::List<i32>) ;
var@7 -> ⊥ : test1::List<i32> ;
@@ -30960,10 +63355,15 @@ s@2 : i32
}
-
[Debug]
**About to evaluate statement**: [
- tl := move (var@6).1
+ tl := move (var@6).1;
+ var@10 := copy hd;
+ var@9 := move var@10 == 0: i32;
+ var@8 := ¬ move var@9;
+ assert(¬move var@8);
+ drop(tl);
+ return
]
**Context**:
@@ -30987,8 +63387,12 @@ s@2 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ tl := move (var@6).1
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -31008,11 +63412,7 @@ s@2 : i32
}
-- op:
-move (var@6).1
-[Debug] Value to move:
-s@3 : test1::List<i32>
[Debug]
**About to evaluate statement**: [
var@10 := copy hd;
@@ -31070,32 +63470,6 @@ s@3 : test1::List<i32>
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
- tl -> s@3 : test1::List<i32> ;
- var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy hd
-
-[Debug] Value to copy:
-s@2 : i32
[Debug]
**About to evaluate statement**: [
var@9 := move var@10 == 0: i32;
@@ -31152,56 +63526,6 @@ s@2 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
- tl -> s@3 : test1::List<i32> ;
- var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> s@2 : i32 ;
-}
-
-
-- op:
-move var@10
-
-[Debug] Value to move:
-s@2 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
- tl -> s@3 : test1::List<i32> ;
- var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@8 := ¬ move var@9;
@@ -31257,32 +63581,6 @@ s@2 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
- tl -> s@3 : test1::List<i32> ;
- var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> ⊥ : bool ;
- var@9 -> s@4 : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@9
-
-[Debug] Value to move:
-s@4 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@8);
@@ -31337,32 +63635,6 @@ s@4 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- l -> ⊥ : test1::List<i32> ;
- var@2 -> ⊥ : std::boxed::Box<test1::List<i32>> ;
- var@3 -> ⊥ : test1::List<i32> ;
- hd -> s@2 : i32 ;
- tl -> s@3 : test1::List<i32> ;
- var@6 -> (s@2 : i32, ⊥ : test1::List<i32>) ;
- var@7 -> ⊥ : test1::List<i32> ;
- var@8 -> true ;
- var@9 -> ⊥ : bool ;
- var@10 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@8
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
drop(tl);
@@ -31501,31 +63773,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- proj_loans (s@0 : bool),
- proj_loans (s@1 : &r@0 mut (T)),
- proj_loans (s@2 : &r@0 mut (T))
- }
- var@0 -> ⊥ : &'_ mut (T) ;
- b -> s@0 : bool ;
- x -> s@1 : &r@0 mut (T) ;
- y -> s@2 : &r@0 mut (T) ;
- var@4 -> ⊥ : bool ;
-}
-
-
-- op:
-copy b
-
-[Debug] Value to copy:
-s@0 : bool
[Debug]
**About to evaluate statement**: [
if (move var@4) {
@@ -31587,8 +63834,12 @@ s@0 : bool
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@0 := &mut *(x)
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -31603,21 +63854,14 @@ s@0 : bool
b -> true ;
x -> s@1 : &r@0 mut (T) ;
y -> s@2 : &r@0 mut (T) ;
- var@4 -> true ;
+ var@4 -> ⊥ : bool ;
}
-- op:
-move var@4
-[Debug] Value to move:
-true
-[Debug]
-**About to evaluate statement**: [
- var@0 := &mut *(x)
-]
+[Debug] expand_symbolic_value: s@1 : &r@0 mut (T)
-**Context**:
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -31636,32 +63880,25 @@ true
}
-
-[Debug] eval_operand:
-- ctx:
+- new context:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
abs@0{parents={}}{regions={0}} {
- false,
- proj_loans (s@1 : &r@0 mut (T)),
+ true,
+ ⌊mut@0, proj_loans (s@3 : T)⌋,
proj_loans (s@2 : &r@0 mut (T))
}
var@0 -> ⊥ : &'_ mut (T) ;
- b -> false ;
- x -> s@1 : &r@0 mut (T) ;
+ b -> true ;
+ x -> &mut@0 (s@3 : T) ;
y -> s@2 : &r@0 mut (T) ;
- var@4 -> false ;
+ var@4 -> ⊥ : bool ;
}
-- op:
-move var@4
-
-[Debug] Value to move:
-false
[Debug]
**About to evaluate statement**: [
var@0 := move y
@@ -31687,31 +63924,6 @@ false
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- abs@0{parents={}}{regions={0}} {
- false,
- proj_loans (s@1 : &r@0 mut (T)),
- proj_loans (s@2 : &r@0 mut (T))
- }
- var@0 -> ⊥ : &'_ mut (T) ;
- b -> false ;
- x -> s@1 : &r@0 mut (T) ;
- y -> s@2 : &r@0 mut (T) ;
- var@4 -> ⊥ : bool ;
-}
-
-
-- op:
-move y
-
-[Debug] Value to move:
-s@2 : &r@0 mut (T)
[Debug]
**About to evaluate statement**: [
return
@@ -31852,38 +64064,6 @@ s@2 : &r@0 mut (T)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : i32 ;
- y -> ⊥ : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
y := 0: i32;
@@ -31972,38 +64152,6 @@ s@2 : &r@0 mut (T)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> 0: i32 ;
- y -> ⊥ : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@5 := &mut x;
@@ -32429,114 +64577,14 @@ s@2 : &r@0 mut (T)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⌊inactivated_mut@1⌋ ;
- var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-true
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⌊inactivated_mut@1⌋ ;
- var@5 -> &mut@0 (@shared_loan({1}, 0: i32)) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@4
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
ty = (Types.Integer Types.I32) }
-[Debug] Value to move:
-&mut@1 (0: i32)
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⌊inactivated_mut@3⌋ ;
- var@7 -> &mut@2 (@shared_loan({3}, 0: i32)) ;
- var@8 -> ⊥ : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@6
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
ty = (Types.Integer Types.I32) }
-[Debug] Value to move:
-&mut@3 (0: i32)
[Debug]
**About to evaluate statement**: [
var@8 := copy *(z);
@@ -32631,8 +64679,9 @@ move var@6
-[Debug] eval_operand:
-- ctx:
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (i32)
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -32666,30 +64715,7 @@ move var@6
}
-- op:
-copy *(z)
-
-[Debug] Value to copy:
-s@1 : i32
-[Debug]
-**About to evaluate statement**: [
- *(z) := copy var@8 + 1: i32;
- var@12 := copy *(z);
- var@11 := move var@12 == 1: i32;
- var@10 := ¬ move var@11;
- assert(¬move var@10);
- var@15 := copy x;
- var@14 := move var@15 == 1: i32;
- var@13 := ¬ move var@14;
- assert(¬move var@13);
- var@18 := copy y;
- var@17 := move var@18 == 0: i32;
- var@16 := ¬ move var@17;
- assert(¬move var@16);
- return
-]
-
-**Context**:
+- new context:
# Ended regions: {}
# 1 frame(s)
@@ -32703,7 +64729,7 @@ s@1 : i32
var@5 -> &mut@0 (⌊mut@1⌋) ;
var@6 -> ⊥ : &'_ mut (i32) ;
var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> s@1 : i32 ;
+ var@8 -> ⊥ : i32 ;
var@9 -> ⊥ : (i32, bool) ;
var@10 -> ⊥ : bool ;
var@11 -> ⊥ : bool ;
@@ -32723,10 +64749,22 @@ s@1 : i32
}
-
[Debug]
**About to evaluate statement**: [
- *(z) := copy var@8 + 1: i32
+ *(z) := copy var@8 + 1: i32;
+ var@12 := copy *(z);
+ var@11 := move var@12 == 1: i32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ var@15 := copy x;
+ var@14 := move var@15 == 1: i32;
+ var@13 := ¬ move var@14;
+ assert(¬move var@13);
+ var@18 := copy y;
+ var@17 := move var@18 == 0: i32;
+ var@16 := ¬ move var@17;
+ assert(¬move var@16);
+ return
]
**Context**:
@@ -32764,48 +64802,12 @@ s@1 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (s@1 : i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
- abs@0{parents={}}{regions={0}} {
- true,
- &mut@1 (0: i32),
- &mut@3 (0: i32),
- ⌊mut@4, proj_loans (s@1 : i32)⌋
- }
-}
-
-
-- op:
-copy var@8
+[Debug]
+**About to evaluate statement**: [
+ *(z) := copy var@8 + 1: i32
+]
-[Debug] Value to copy:
-s@1 : i32
-[Debug] eval_operand:
-- ctx:
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -32839,8 +64841,6 @@ s@1 : i32
}
-- op:
-1: i32
[Debug]
**About to evaluate statement**: [
@@ -32934,46 +64934,6 @@ s@1 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (s@2 : i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
- abs@0{parents={}}{regions={0}} {
- true,
- &mut@1 (0: i32),
- &mut@3 (0: i32),
- ⌊mut@4, proj_loans (s@1 : i32)⌋
- }
-}
-
-
-- op:
-copy *(z)
-
-[Debug] Value to copy:
-s@2 : i32
[Debug]
**About to evaluate statement**: [
var@11 := move var@12 == 1: i32;
@@ -33065,8 +65025,22 @@ s@2 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ var@15 := copy x;
+ var@14 := move var@15 == 1: i32;
+ var@13 := ¬ move var@14;
+ assert(¬move var@13);
+ var@18 := copy y;
+ var@17 := move var@18 == 0: i32;
+ var@16 := ¬ move var@17;
+ assert(¬move var@16);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -33083,8 +65057,8 @@ s@2 : i32
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> s@2 : i32 ;
+ var@11 -> s@3 : bool ;
+ var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
var@15 -> ⊥ : i32 ;
@@ -33100,13 +65074,13 @@ s@2 : i32
}
-- op:
-move var@12
-[Debug] Value to move:
-s@2 : i32
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ var@10 := ¬ move var@11
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -33123,7 +65097,7 @@ s@2 : i32
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
+ var@11 -> s@3 : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
@@ -33140,12 +65114,9 @@ s@2 : i32
}
-- op:
-1: i32
[Debug]
**About to evaluate statement**: [
- var@10 := ¬ move var@11;
assert(¬move var@10);
var@15 := copy x;
var@14 := move var@15 == 1: i32;
@@ -33174,8 +65145,8 @@ s@2 : i32
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> s@3 : bool ;
+ var@10 -> s@4 : bool ;
+ var@11 -> ⊥ : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
@@ -33195,7 +65166,7 @@ s@2 : i32
[Debug]
**About to evaluate statement**: [
- var@10 := ¬ move var@11
+ assert(¬move var@10)
]
**Context**:
@@ -33214,44 +65185,8 @@ s@2 : i32
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> s@3 : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
- abs@0{parents={}}{regions={0}} {
- true,
- &mut@1 (0: i32),
- &mut@3 (0: i32),
- ⌊mut@4, proj_loans (s@1 : i32)⌋
- }
-}
-
-
-
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- y -> ⌊mut@2⌋ ;
- z -> &mut@4 (s@2 : i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (⌊mut@3⌋) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> s@3 : bool ;
+ var@10 -> s@4 : bool ;
+ var@11 -> ⊥ : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
@@ -33268,14 +65203,9 @@ s@2 : i32
}
-- op:
-move var@11
-[Debug] Value to move:
-s@3 : bool
[Debug]
**About to evaluate statement**: [
- assert(¬move var@10);
var@15 := copy x;
var@14 := move var@15 == 1: i32;
var@13 := ¬ move var@14;
@@ -33303,7 +65233,7 @@ s@3 : bool
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
- var@10 -> s@4 : bool ;
+ var@10 -> ⊥ : bool ;
var@11 -> ⊥ : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
@@ -33324,7 +65254,7 @@ s@3 : bool
[Debug]
**About to evaluate statement**: [
- assert(¬move var@10)
+ var@15 := copy x
]
**Context**:
@@ -33343,7 +65273,7 @@ s@3 : bool
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
- var@10 -> s@4 : bool ;
+ var@10 -> ⊥ : bool ;
var@11 -> ⊥ : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
@@ -33362,24 +65292,24 @@ s@3 : bool
-[Debug] eval_operand:
-- ctx:
+[Debug] end_abstraction: 0
+- original context:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
+ x -> ⌊mut@1⌋ ;
y -> ⌊mut@2⌋ ;
z -> &mut@4 (s@2 : i32) ;
var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
+ var@5 -> ⊥ : &'_ mut (i32) ;
var@6 -> ⊥ : &'_ mut (i32) ;
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
var@9 -> ⊥ : (i32, bool) ;
- var@10 -> true ;
+ var@10 -> ⊥ : bool ;
var@11 -> ⊥ : bool ;
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
@@ -33396,37 +65326,19 @@ s@3 : bool
}
}
-
-- op:
-move var@10
-
-[Debug] Value to move:
-true
-[Debug]
-**About to evaluate statement**: [
- var@15 := copy x;
- var@14 := move var@15 == 1: i32;
- var@13 := ¬ move var@14;
- assert(¬move var@13);
- var@18 := copy y;
- var@17 := move var@18 == 0: i32;
- var@16 := ¬ move var@17;
- assert(¬move var@16);
- return
-]
-
-**Context**:
+[Debug] end_abstraction: 0
+- context after parent abstractions ended:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
+ x -> ⌊mut@1⌋ ;
y -> ⌊mut@2⌋ ;
z -> &mut@4 (s@2 : i32) ;
var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
+ var@5 -> ⊥ : &'_ mut (i32) ;
var@6 -> ⊥ : &'_ mut (i32) ;
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
@@ -33448,25 +65360,19 @@ true
}
}
-
-
-[Debug]
-**About to evaluate statement**: [
- var@15 := copy x
-]
-
-**Context**:
+[Debug] end_abstraction: 0
+- context after loans ended:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
+ x -> ⌊mut@1⌋ ;
y -> ⌊mut@2⌋ ;
- z -> &mut@4 (s@2 : i32) ;
+ z -> ⊥ : &'_ mut (i32) ;
var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
+ var@5 -> ⊥ : &'_ mut (i32) ;
var@6 -> ⊥ : &'_ mut (i32) ;
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
@@ -33484,25 +65390,23 @@ true
true,
&mut@1 (0: i32),
&mut@3 (0: i32),
- ⌊mut@4, proj_loans (s@1 : i32)⌋
+ @ended_mut_loan{ given_back=proj_borrows (s@2 : i32 <: i32); child=proj_loans (s@1 : i32) }
}
}
-
-
-[Debug] eval_operand:
-- ctx:
+[Debug] end_abstraction: 0
+- original context:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
+ x -> ⌊mut@1⌋ ;
y -> ⌊mut@2⌋ ;
z -> &mut@4 (s@2 : i32) ;
var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> &mut@0 (⌊mut@1⌋) ;
+ var@5 -> ⊥ : &'_ mut (i32) ;
var@6 -> ⊥ : &'_ mut (i32) ;
var@7 -> &mut@2 (⌊mut@3⌋) ;
var@8 -> s@1 : i32 ;
@@ -33525,24 +65429,7 @@ true
}
-- op:
-copy x
-
-[Debug] Value to copy:
-s@5 : i32
-[Debug]
-**About to evaluate statement**: [
- var@14 := move var@15 == 1: i32;
- var@13 := ¬ move var@14;
- assert(¬move var@13);
- var@18 := copy y;
- var@17 := move var@18 == 0: i32;
- var@16 := ¬ move var@17;
- assert(¬move var@16);
- return
-]
-
-**Context**:
+- new context:
# Ended regions: {0}
# 1 frame(s)
@@ -33563,17 +65450,22 @@ s@5 : i32
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
- var@15 -> s@5 : i32 ;
+ var@15 -> ⊥ : i32 ;
var@16 -> ⊥ : bool ;
var@17 -> ⊥ : bool ;
var@18 -> ⊥ : i32 ;
}
-
-
[Debug]
**About to evaluate statement**: [
- var@14 := move var@15 == 1: i32
+ var@14 := move var@15 == 1: i32;
+ var@13 := ¬ move var@14;
+ assert(¬move var@13);
+ var@18 := copy y;
+ var@17 := move var@18 == 0: i32;
+ var@16 := ¬ move var@17;
+ assert(¬move var@16);
+ return
]
**Context**:
@@ -33605,42 +65497,12 @@ s@5 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (s@6 : i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> s@5 : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@15
+[Debug]
+**About to evaluate statement**: [
+ var@14 := move var@15 == 1: i32
+]
-[Debug] Value to move:
-s@5 : i32
-[Debug] eval_operand:
-- ctx:
+**Context**:
# Ended regions: {0}
# 1 frame(s)
@@ -33661,15 +65523,13 @@ s@5 : i32
var@12 -> ⊥ : i32 ;
var@13 -> ⊥ : bool ;
var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
+ var@15 -> s@5 : i32 ;
var@16 -> ⊥ : bool ;
var@17 -> ⊥ : bool ;
var@18 -> ⊥ : i32 ;
}
-- op:
-1: i32
[Debug]
**About to evaluate statement**: [
@@ -33745,40 +65605,6 @@ s@5 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (s@6 : i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> s@7 : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@14
-
-[Debug] Value to move:
-s@7 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@13);
@@ -33852,40 +65678,6 @@ s@7 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (s@6 : i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> true ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@13
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
var@18 := copy y;
@@ -33958,40 +65750,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> ⌊mut@2⌋ ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> &mut@2 (s@6 : i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-copy y
-
-[Debug] Value to copy:
-s@6 : i32
[Debug]
**About to evaluate statement**: [
var@17 := move var@18 == 0: i32;
@@ -34063,72 +65821,6 @@ s@6 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> s@6 : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> s@6 : i32 ;
-}
-
-
-- op:
-move var@18
-
-[Debug] Value to move:
-s@6 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> s@6 : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-0: i32
-
[Debug]
**About to evaluate statement**: [
var@16 := ¬ move var@17;
@@ -34199,40 +65891,6 @@ s@6 : i32
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> s@6 : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> ⊥ : bool ;
- var@17 -> s@9 : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@17
-
-[Debug] Value to move:
-s@9 : bool
[Debug]
**About to evaluate statement**: [
assert(¬move var@16);
@@ -34302,40 +65960,6 @@ s@9 : bool
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {0}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> s@5 : i32 ;
- y -> s@6 : i32 ;
- z -> ⊥ : &'_ mut (i32) ;
- var@4 -> ⊥ : &'_ mut (i32) ;
- var@5 -> ⊥ : &'_ mut (i32) ;
- var@6 -> ⊥ : &'_ mut (i32) ;
- var@7 -> ⊥ : &'_ mut (i32) ;
- var@8 -> s@1 : i32 ;
- var@9 -> ⊥ : (i32, bool) ;
- var@10 -> ⊥ : bool ;
- var@11 -> ⊥ : bool ;
- var@12 -> ⊥ : i32 ;
- var@13 -> ⊥ : bool ;
- var@14 -> ⊥ : bool ;
- var@15 -> ⊥ : i32 ;
- var@16 -> true ;
- var@17 -> ⊥ : bool ;
- var@18 -> ⊥ : i32 ;
-}
-
-
-- op:
-move var@16
-
-[Debug] Value to move:
-true
[Debug]
**About to evaluate statement**: [
return
@@ -34421,6 +66045,44 @@ true
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (T))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (T)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (T)))
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ;
+ x -> s@0 : &r@0 mut (&r@1 mut (T)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (T)) ;
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ ⌊mut@0, proj_loans (s@1 : &r@1 mut (T))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_loan(0, proj_loans (s@1 : &r@1 mut (T)))
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut (T)) ;
+ x -> &mut@0 (s@1 : &r@1 mut (T)) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (T)) ;
+}
+
+
[Debug]
**About to evaluate statement**: [
var@0 := &mut *(var@2);
@@ -34539,6 +66201,38 @@ true
+[Debug] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (T), u32))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ proj_loans (s@0 : &r@0 mut ((&r@0 mut (T), u32)))
+ }
+ var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ;
+ x -> s@0 : &r@0 mut ((&r@0 mut (T), u32)) ;
+ var@2 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ;
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ ⌊mut@0, proj_loans (s@1 : (&r@0 mut (T), u32))⌋
+ }
+ var@0 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ;
+ x -> &mut@0 (s@1 : (&r@0 mut (T), u32)) ;
+ var@2 -> ⊥ : &'_ mut ((&'_ mut (T), u32)) ;
+}
+
+
[Debug]
**About to evaluate statement**: [
var@0 := &mut *(var@2);
@@ -34669,30 +66363,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⊥ : u32 ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-0: u32
-
[Debug]
**About to evaluate statement**: [
px := &mut x;
@@ -34820,32 +66490,6 @@ true
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> &mut@0 (0: u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move px
-
-[Debug] Value to move:
-&mut@0 (0: u32)
[Debug]
**About to evaluate statement**: [
(p).0 := move var@4;
@@ -34908,32 +66552,6 @@ move px
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⊥ : (&'_ mut (u32), u32) ;
- var@4 -> &mut@0 (0: u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move var@4
-
-[Debug] Value to move:
-&mut@0 (0: u32)
[Debug] expand_bottom_value_from_projection:
pe: (Expressions.Field ((Expressions.ProjTuple 2), 0))
ty: (Types.Adt (Types.Tuple, [],
@@ -35001,30 +66619,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> (&mut@0 (0: u32), ⊥ : u32) ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-1: u32
-
[Debug]
**About to evaluate statement**: [
pp0 := &mut p;
@@ -35202,30 +66796,6 @@ ty: (Types.Adt (Types.Tuple, [],
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (@shared_loan({2}, (&mut@0 (0: u32), 1: u32))) ;
- pp1 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- var@7 -> ⌊inactivated_mut@2⌋ ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
-}
-
-
-- op:
-move var@7
-
[Debug] activate_inactivated_mut_borrow: resulting value:
{ Values.value =
(Values.Adt
@@ -35253,8 +66823,6 @@ move var@7
(Types.Integer Types.U32)]
))
}
-[Debug] Value to move:
-&mut@2 ((&mut@0 (0: u32), 1: u32))
[Debug]
**About to evaluate statement**: [
y := 2: u32;
@@ -35320,34 +66888,6 @@ move var@7
-[Debug] eval_operand:
-- ctx:
-# Ended regions: {}
-# 1 frame(s)
-
-# Frame 0:
-{
- var@0 -> ⊥ : () ;
- x -> ⌊mut@0⌋ ;
- px -> ⊥ : &'_ mut (u32) ;
- p -> ⌊mut@1⌋ ;
- var@4 -> ⊥ : &'_ mut (u32) ;
- pp0 -> &mut@1 (⌊mut@2⌋) ;
- pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ;
- var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
- y -> ⊥ : u32 ;
- var@9 -> ⊥ : &'_ mut (u32) ;
- var@10 -> ⊥ : &'_ mut (u32) ;
- abs@0{parents={}}{regions={0}} {
- &mut@2 ((&mut@0 (0: u32), 1: u32)),
- proj_loans (s@0 : &r@0 mut ((&r@0 mut (u32), u32)))
- }
-}
-
-
-- op:
-2: u32
-
[Debug]
**About to evaluate statement**: [
var@10 := &mut y;
@@ -35537,8 +67077,9 @@ move var@7
-[Debug] eval_operand:
-- ctx:
+[Debug] expand_symbolic_value: s@0 : &r@0 mut ((&r@0 mut (u32), u32))
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -35553,7 +67094,7 @@ move var@7
pp1 -> s@0 : &r@0 mut ((&r@0 mut (u32), u32)) ;
var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
y -> ⌊mut@3⌋ ;
- var@9 -> &mut@4 (2: u32) ;
+ var@9 -> ⊥ : &'_ mut (u32) ;
var@10 -> &mut@3 (⌊mut@4⌋) ;
abs@0{parents={}}{regions={0}} {
&mut@2 ((&mut@0 (0: u32), 1: u32)),
@@ -35562,18 +67103,33 @@ move var@7
}
-- op:
-move var@9
+- new context:
+# Ended regions: {}
+# 1 frame(s)
-[Debug] Value to move:
-&mut@4 (2: u32)
-[Debug]
-**About to evaluate statement**: [
- *((pp1).1) := 3: u32;
- return
-]
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⊥ : &'_ mut (u32) ;
+ p -> ⌊mut@1⌋ ;
+ var@4 -> ⊥ : &'_ mut (u32) ;
+ pp0 -> &mut@1 (⌊mut@2⌋) ;
+ pp1 -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ;
+ var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
+ y -> ⌊mut@3⌋ ;
+ var@9 -> ⊥ : &'_ mut (u32) ;
+ var@10 -> &mut@3 (⌊mut@4⌋) ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 ((&mut@0 (0: u32), 1: u32)),
+ ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋
+ }
+}
-**Context**:
+
+[Debug] expand_symbolic_value: s@1 : (&r@0 mut (u32), u32)
+
+- original context:
# Ended regions: {}
# 1 frame(s)
@@ -35585,22 +67141,46 @@ move var@9
p -> ⌊mut@1⌋ ;
var@4 -> ⊥ : &'_ mut (u32) ;
pp0 -> &mut@1 (⌊mut@2⌋) ;
- pp1 -> &mut@5 ((&mut@4 (2: u32), s@3 : u32)) ;
+ pp1 -> &mut@5 (s@1 : (&r@0 mut (u32), u32)) ;
var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
y -> ⌊mut@3⌋ ;
var@9 -> ⊥ : &'_ mut (u32) ;
var@10 -> &mut@3 (⌊mut@4⌋) ;
abs@0{parents={}}{regions={0}} {
&mut@2 ((&mut@0 (0: u32), 1: u32)),
- ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋
+ ⌊mut@5, proj_loans (s@1 : (&r@0 mut (u32), u32))⌋
}
}
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⊥ : &'_ mut (u32) ;
+ p -> ⌊mut@1⌋ ;
+ var@4 -> ⊥ : &'_ mut (u32) ;
+ pp0 -> &mut@1 (⌊mut@2⌋) ;
+ pp1 -> &mut@5 ((s@2 : &r@0 mut (u32), s@3 : u32)) ;
+ var@7 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ;
+ y -> ⌊mut@3⌋ ;
+ var@9 -> ⊥ : &'_ mut (u32) ;
+ var@10 -> &mut@3 (⌊mut@4⌋) ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 ((&mut@0 (0: u32), 1: u32)),
+ ⌊mut@5, (proj_loans (s@2 : &r@0 mut (u32)), proj_loans (s@3 : u32))⌋
+ }
+}
+
[Debug]
**About to evaluate statement**: [
- *((pp1).1) := 3: u32
+ *((pp1).1) := 3: u32;
+ return
]
**Context**:
@@ -35628,8 +67208,12 @@ move var@9
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ *((pp1).1) := 3: u32
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
@@ -35653,8 +67237,6 @@ move var@9
}
-- op:
-3: u32
[Debug]
**About to evaluate statement**: [
@@ -35731,6 +67313,38 @@ move var@9
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32)))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ proj_loans (s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))))
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ;
+ x -> s@0 : &r@0 mut (&r@0 mut ((&r@0 mut (T), u32))) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ;
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ ⌊mut@0, proj_loans (s@1 : &r@0 mut ((&r@0 mut (T), u32)))⌋
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ;
+ x -> &mut@0 (s@1 : &r@0 mut ((&r@0 mut (T), u32))) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut ((&'_ mut (T), u32))) ;
+}
+
+
[Debug]
**About to evaluate statement**: [
var@0 := &mut *(var@2);
@@ -35840,6 +67454,38 @@ move var@9
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32)))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ proj_loans (s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))))
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ;
+ x -> s@0 : &r@0 mut (&r@0 mut (&r@0 mut (u32))) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ;
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ abs@0{parents={}}{regions={0}} {
+ ⌊mut@0, proj_loans (s@1 : &r@0 mut (&r@0 mut (u32)))⌋
+ }
+ var@0 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ;
+ x -> &mut@0 (s@1 : &r@0 mut (&r@0 mut (u32))) ;
+ var@2 -> ⊥ : &'_ mut (&'_ mut (&'_ mut (u32))) ;
+}
+
+
[Debug]
**About to evaluate statement**: [
var@0 := &mut *(var@2);
@@ -35967,25 +67613,27 @@ move var@9
-[Debug] eval_operand:
-- ctx:
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : &'_ (u32) ;
+ var@0 -> s@0 : &'static (u32) ;
x -> s@0 : &'static (u32) ;
}
-- op:
-copy x
-[Debug] Value to copy:
-s@0 : &'static (u32)
+[Debug] test_function_symbolic: test_char
[Debug]
**About to evaluate statement**: [
+ var@0 := a;
return
]
@@ -35995,17 +67643,14 @@ s@0 : &'static (u32)
# Frame 0:
{
- var@0 -> s@0 : &'static (u32) ;
- x -> s@0 : &'static (u32) ;
+ var@0 -> ⊥ : char ;
}
-[Debug] test_function_symbolic: test_char
[Debug]
**About to evaluate statement**: [
- var@0 := a;
- return
+ var@0 := a
]
**Context**:
@@ -36021,7 +67666,7 @@ s@0 : &'static (u32)
[Debug]
**About to evaluate statement**: [
- var@0 := a
+ return
]
**Context**:
@@ -36030,27 +67675,153 @@ s@0 : &'static (u32)
# Frame 0:
{
- var@0 -> ⊥ : char ;
+ var@0 -> a ;
}
-[Debug] eval_operand:
-- ctx:
+[Debug] test_function_symbolic: test_loops
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop1(2: u32);
+ var@4 := copy x;
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
# Ended regions: {}
# 1 frame(s)
# Frame 0:
{
- var@0 -> ⊥ : char ;
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
}
-- op:
-a
[Debug]
**About to evaluate statement**: [
+ x := move test_loop1(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy x;
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
return
]
@@ -36060,7 +67831,6658 @@ a
# Frame 0:
{
- var@0 -> a ;
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@4 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 == 2: u32;
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> s@0 : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@3 := move var@4 == 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> s@0 : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@2 := ¬ move var@3;
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> s@1 : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@2 := ¬ move var@3
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> s@1 : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@2);
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> s@2 : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@2)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> s@2 : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop2(2: u32);
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop2(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy x;
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: u32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> s@3 : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> s@3 : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> s@4 : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> s@4 : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6);
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> s@5 : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> s@5 : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop3(2: u32);
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop3(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy x;
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := move var@12 == 3: u32;
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> s@6 : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := move var@12 == 3: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> s@6 : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := ¬ move var@11;
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@7 : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := ¬ move var@11
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@7 : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@10);
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> s@8 : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@10)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> s@8 : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop4(20: u32);
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop4(20: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := copy x;
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := move var@16 == 1: u32;
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> s@9 : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := move var@16 == 1: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> s@9 : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := ¬ move var@15;
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> s@10 : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := ¬ move var@15
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> s@10 : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@14);
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> s@11 : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@14)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> s@11 : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop5(2: u32);
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop5(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@20 := copy x;
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@20 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@19 := move var@20 == 2: u32;
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> s@12 : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@19 := move var@20 == 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> s@12 : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@18 := ¬ move var@19;
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> s@13 : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@18 := ¬ move var@19
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> s@13 : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@18);
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> s@14 : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@18)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> s@14 : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop6(2: u32);
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := move test_loop6(2: u32)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> ⊥ : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@24 := copy x;
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@24 := copy x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@23 := move var@24 == 2: u32;
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> s@15 : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@23 := move var@24 == 2: u32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> s@15 : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@22 := ¬ move var@23;
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> s@16 : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@22 := ¬ move var@23
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> s@16 : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@22);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> s@17 : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@22)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> s@17 : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@0 : u32 ;
+ var@2 -> ⊥ : bool ;
+ var@3 -> ⊥ : bool ;
+ var@4 -> ⊥ : u32 ;
+ x -> s@3 : u32 ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : u32 ;
+ x -> s@6 : u32 ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : bool ;
+ var@12 -> ⊥ : u32 ;
+ x -> s@9 : u32 ;
+ var@14 -> ⊥ : bool ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : u32 ;
+ x -> s@12 : u32 ;
+ var@18 -> ⊥ : bool ;
+ var@19 -> ⊥ : bool ;
+ var@20 -> ⊥ : u32 ;
+ x -> s@15 : u32 ;
+ var@22 -> ⊥ : bool ;
+ var@23 -> ⊥ : bool ;
+ var@24 -> ⊥ : u32 ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_mut_test1
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Borrow
+ (Values.MutBorrow (<opaque>,
+ { Values.value =
+ (Values.Concrete
+ (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+ )));
+ ty = (Types.Ref (Types.Erased, (Types.Integer Types.I32), Types.Mut)) }
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32;
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (s@1 : &r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32)))
+ }
+}
+
+
+[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32)
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (s@1 : &r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32)))
+ }
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (s@2 : i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy *(px);
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := copy *(px)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after parent abstractions ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after loans ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 1: i32); child=@ignored_mut_loan(4, proj_loans (s@2 : i32)) }
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> s@3 : &r@1 mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+[Debug] expand_symbolic_value: s@3 : &r@1 mut (i32)
+
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> s@3 : &r@1 mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: i32;
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> s@4 : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@7 := move var@8 == 1: i32
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> s@4 : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7;
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> s@5 : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@6 := ¬ move var@7
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> s@5 : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6);
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> s@6 : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@6)
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> s@6 : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy x;
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy x
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+
+[Debug] end_abstraction: 1
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+[Debug] end_abstraction: 1
+- context after parent abstractions ended:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+[Debug] end_abstraction: 1
+- context after loans ended:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=proj_borrows (s@4 : i32 <: i32); child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=⊥ : &r@1 mut (i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] end_abstraction: 1
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@5 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@5, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@4 (1: i32); child: ⌊mut@4, proj_loans (s@2 : i32)⌋}
+ }
+}
+
+
+- new context:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 1: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@7 : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 1: i32
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@7 : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> s@8 : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> s@8 : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> s@9 : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9)
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> s@9 : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@6 -> ⊥ : bool ;
+ var@7 -> ⊥ : bool ;
+ var@8 -> ⊥ : i32 ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] test_function_symbolic: id_mut_mut_test2
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32;
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ x := 0: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⊥ : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x;
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ px := &mut x
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> 0: i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px;
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppx := &mut px
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@0 (0: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx);
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@5 := &two-phase *(ppx)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (&mut@0 (0: i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5);
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ ppy := move id_mut_mut<i32>(move var@5)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (@shared_loan({2}, &mut@0 (0: i32))) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⌊inactivated_mut@2⌋ ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug] activate_inactivated_mut_borrow: resulting value:
+{ Values.value =
+ (Values.Borrow
+ (Values.MutBorrow (<opaque>,
+ { Values.value =
+ (Values.Concrete
+ (Values.Scalar { Values.value = 0; int_ty = Types.I32 }));
+ ty = (Types.Integer Types.I32) }
+ )));
+ ty = (Types.Ref (Types.Erased, (Types.Integer Types.I32), Types.Mut)) }
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32;
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(*(ppy)) := 1: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+
+[Debug] expand_symbolic_value: s@0 : &r@0 mut (&r@1 mut (i32))
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> s@0 : &r@0 mut (&r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ proj_loans (s@0 : &r@0 mut (&r@1 mut (i32)))
+ }
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (s@1 : &r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32)))
+ }
+}
+
+
+[Debug] expand_symbolic_value: s@1 : &r@1 mut (i32)
+
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (s@1 : &r@1 mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, proj_loans (s@1 : &r@1 mut (i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, proj_loans (s@1 : &r@1 mut (i32)))
+ }
+}
+
+
+- new context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (s@2 : i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+[Debug]
+**About to evaluate statement**: [
+ y := 2: i32;
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ y := 2: i32
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⊥ : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ py := &mut y;
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 2: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ py := &mut y
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> 2: i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := &mut *(py);
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (2: i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@8 := &mut *(py)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (2: i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(ppy) := move var@8;
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> &mut@6 (2: i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(ppy) := move var@8
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@4 (1: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> &mut@6 (2: i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ignored_mut_loan(4, proj_loans (s@2 : i32))⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, ⌊mut@4, proj_loans (s@2 : i32)⌋)
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy *(px);
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) })
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@11 := copy *(px)
+]
+
+**Context**:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@1⌋ ;
+ ppx -> &mut@1 (⌊mut@2⌋) ;
+ ppy -> &mut@3 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) })
+ }
+}
+
+
+
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) })
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after parent abstractions ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) })
+ }
+}
+
+[Debug] end_abstraction: 0
+- context after loans ended:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ @ended_mut_loan{ given_back=@ignored_mut_borrow(None, 2: i32); child=@ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)} }
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] end_abstraction: 0
+- original context:
+# Ended regions: {}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⌊mut@2⌋ ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> &mut@3 (&mut@6 (2: i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@0{parents={}}{regions={0}} {
+ &mut@2 (@ignored_mut_borrow(None, 0: i32)),
+ ⌊mut@3, @ended_ignored_mut_loan{ given_back=1: i32; child: proj_loans (s@2 : i32)}⌋
+ }
+ abs@1{parents={0}}{regions={1}} {
+ @ignored_mut_borrow(Some (2), &mut@0 (0: i32)),
+ @ignored_mut_loan(3, @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) })
+ }
+}
+
+
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> s@3 : &r@1 mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] expand_symbolic_value: s@3 : &r@1 mut (i32)
+
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> s@3 : &r@1 mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=proj_loans (s@3 : &r@1 mut (i32)); child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+- new context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 2: i32;
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@4 : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@10 := move var@11 == 2: i32
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> s@4 : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10;
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> s@5 : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@9 := ¬ move var@10
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> s@5 : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9);
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> s@6 : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@9)
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> s@6 : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(px) := 3: i32;
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ *(px) := 3: i32
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (s@4 : i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy x;
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@14 := copy x
+]
+
+**Context**:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+
+[Debug] end_abstraction: 1
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] end_abstraction: 1
+- context after parent abstractions ended:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] end_abstraction: 1
+- context after loans ended:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=@ended_mut_loan{ given_back=3: i32; child=proj_loans (s@4 : i32) }; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+[Debug] end_abstraction: 1
+- original context:
+# Ended regions: {0}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> ⌊mut@0⌋ ;
+ px -> &mut@7 (3: i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (⌊mut@6⌋) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+ abs@1{parents={}}{regions={1}} {
+ @ended_ignored_mut_borrow{ given_back_loans_proj=⌊mut@7, proj_loans (s@4 : i32)⌋; child=&mut@0 (0: i32)),
+ @ended_ignored_mut_loan{ given_back=&mut@6 (2: i32); child: @ended_mut_loan{ given_back=1: i32; child=proj_loans (s@2 : i32) }}
+ }
+}
+
+
+- new context:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := move var@14 == 1: i32;
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> s@7 : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@13 := move var@14 == 1: i32
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> s@7 : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := ¬ move var@13;
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> s@9 : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@12 := ¬ move var@13
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> s@9 : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@12);
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> s@10 : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@12)
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> s@10 : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy y;
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@17 := copy y
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> ⌊mut@5⌋ ;
+ py -> &mut@5 (s@8 : i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := move var@17 == 3: i32;
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> s@8 : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@16 := move var@17 == 3: i32
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> s@8 : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := ¬ move var@16;
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> s@11 : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ var@15 := ¬ move var@16
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> s@11 : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@15);
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> s@12 : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ assert(¬move var@15)
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> s@12 : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
+}
+
+
+
+[Debug]
+**About to evaluate statement**: [
+ return
+]
+
+**Context**:
+# Ended regions: {0, 1}
+# 1 frame(s)
+
+# Frame 0:
+{
+ var@0 -> ⊥ : () ;
+ x -> s@7 : i32 ;
+ px -> ⊥ : &'_ mut (i32) ;
+ ppx -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ ppy -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ var@5 -> ⊥ : &'_ mut (&'_ mut (i32)) ;
+ y -> s@8 : i32 ;
+ py -> ⊥ : &'_ mut (i32) ;
+ var@8 -> ⊥ : &'_ mut (i32) ;
+ var@9 -> ⊥ : bool ;
+ var@10 -> ⊥ : bool ;
+ var@11 -> ⊥ : i32 ;
+ var@12 -> ⊥ : bool ;
+ var@13 -> ⊥ : bool ;
+ var@14 -> ⊥ : i32 ;
+ var@15 -> ⊥ : bool ;
+ var@16 -> ⊥ : bool ;
+ var@17 -> ⊥ : i32 ;
}