diff options
-rw-r--r-- | src/Interpreter.ml | 33 | ||||
-rw-r--r-- | src/InterpreterBorrows.ml | 131 | ||||
-rw-r--r-- | src/InterpreterBorrowsCore.ml | 16 | ||||
-rw-r--r-- | src/InterpreterExpansion.ml | 35 | ||||
-rw-r--r-- | src/InterpreterExpressions.ml | 48 | ||||
-rw-r--r-- | src/InterpreterPaths.ml | 11 | ||||
-rw-r--r-- | src/InterpreterProjectors.ml | 27 | ||||
-rw-r--r-- | src/InterpreterStatements.ml | 91 | ||||
-rw-r--r-- | src/InterpreterUtils.ml | 21 | ||||
-rw-r--r-- | src/Invariants.ml | 92 | ||||
-rw-r--r-- | src/Logging.ml | 34 | ||||
-rw-r--r-- | src/Print.ml | 25 | ||||
-rw-r--r-- | src/Values.ml | 56 | ||||
-rw-r--r-- | src/main.ml | 17 | ||||
-rw-r--r-- | tests/trace_reference.txt | 56994 |
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 +} + [[32mDebug[39m] test_unit_function: test2 [[32mDebug[39m] **About to evaluate statement**: [ @@ -943,30 +1080,6 @@ fn test_char() -> char { -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 44: u32; @@ -1030,30 +1143,6 @@ fn test_char() -> char { -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ z := 67: u32; @@ -1116,30 +1205,6 @@ fn test_char() -> char { -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy x; @@ -1201,32 +1266,6 @@ fn test_char() -> char { -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -23: u32 [[32mDebug[39m] **About to evaluate statement**: [ (p).x := move var@5; @@ -1287,32 +1326,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -23: u32 [[32mDebug[39m] 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), [], -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ (s as test1::Sum::Right).0 := true; @@ -1458,30 +1447,6 @@ ty: (Types.Adt ((Types.AdtId 0), [], -[[32mDebug[39m] 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 - [[32mDebug[39m] 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])) -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@4 := copy x; @@ -1998,41 +1893,6 @@ ty: (Types.Adt ((Types.AdtId 2), [], [(Types.Integer Types.U64)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -4: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy y; @@ -2111,41 +1971,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -3: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@3 := move var@4 >= move var@5; @@ -2223,76 +2048,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -4: u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -3: u32 [[32mDebug[39m] **About to evaluate statement**: [ if (move var@3) { @@ -2374,41 +2129,6 @@ move var@5 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@0 := copy x @@ -2444,41 +2164,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -4: u32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -2576,41 +2261,6 @@ copy x var@5 -> ⊥ : u32 ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -4: u32 [[32mDebug[39m] **About to evaluate statement**: [ y := move get_max(10: u32, 11: u32); @@ -2669,52 +2319,6 @@ move var@0 -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@4 := copy x; @@ -2794,41 +2398,6 @@ move var@0 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -10: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy y; @@ -2907,41 +2476,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@3 := move var@4 >= move var@5; @@ -3019,76 +2553,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -10: u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ if (move var@3) { @@ -3170,41 +2634,6 @@ move var@5 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@0 := copy y @@ -3240,41 +2669,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -3372,41 +2766,6 @@ copy y var@5 -> ⊥ : u32 ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@4 := copy x; @@ -3464,31 +2823,6 @@ move var@0 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -4: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy y; @@ -3545,31 +2879,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ z := copy var@4 + copy var@5; @@ -3625,56 +2934,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -4: u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -11: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@9 := copy z; @@ -3729,31 +2988,6 @@ copy var@5 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -15: u32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := move var@9 == 15: u32; @@ -3807,54 +3041,6 @@ copy z -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -15: u32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := ¬ move var@8; @@ -3907,31 +3093,6 @@ move var@9 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@7); @@ -3983,31 +3144,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ return @@ -4072,22 +3208,6 @@ false -[[32mDebug[39m] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - var@0 -> ⊥ : () ; - x -> ⊥ : i32 ; - y -> ⊥ : i32 ; -} - - -- op: -3: i32 - [[32mDebug[39m] **About to evaluate statement**: [ y := -3: i32; @@ -4125,22 +3245,6 @@ false -[[32mDebug[39m] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - var@0 -> ⊥ : () ; - x -> 3: i32 ; - y -> ⊥ : i32 ; -} - - -- op: --3: i32 - [[32mDebug[39m] **About to evaluate statement**: [ return @@ -4212,26 +3316,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -4382,26 +3466,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@6 := copy x; @@ -4450,28 +3514,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move var@6 == 1: i32; @@ -4519,48 +3561,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@4 := ¬ move var@5; @@ -4607,28 +3607,6 @@ move var@6 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@4); @@ -4674,28 +3652,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ return @@ -4811,38 +3767,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 1: i32; @@ -4934,38 +3858,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -5406,40 +4298,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@3 (1: i32) [[32mDebug[39m] **About to evaluate statement**: [ *(*(ppx)) := 2: i32; @@ -5525,38 +4383,6 @@ move var@6 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@9 := copy *(px); @@ -5641,40 +4467,6 @@ move var@6 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := move var@9 == 2: i32; @@ -5758,72 +4550,6 @@ copy *(px) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := ¬ move var@8; @@ -5906,40 +4632,6 @@ move var@9 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@7); @@ -6021,40 +4713,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@12 := copy x; @@ -6135,40 +4793,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@11 := move var@12 == 0: i32; @@ -6248,72 +4872,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@10 := ¬ move var@11; @@ -6392,40 +4950,6 @@ move var@12 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@10); @@ -6503,40 +5027,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@15 := copy *(py); @@ -6613,40 +5103,6 @@ false -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@14 := move var@15 == 2: i32; @@ -6722,72 +5178,6 @@ copy *(py) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@13 := ¬ move var@14; @@ -6862,40 +5252,6 @@ move var@15 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@13); @@ -6969,40 +5325,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@18 := copy y; @@ -7075,40 +5397,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@17 := move var@18 == 2: i32; @@ -7180,72 +5468,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@16 := ¬ move var@17; @@ -7316,40 +5538,6 @@ move var@18 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@16); @@ -7419,40 +5607,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ return @@ -7580,50 +5734,6 @@ false - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -7662,31 +5772,6 @@ test1::List::Nil var@1 -> ⊥ : test1::List<i32> ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -7729,23 +5814,6 @@ move @return -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ set_discriminant(l, 0); @@ -7973,58 +6022,6 @@ move var@2 - type_params: [i32] - args: [0: i32] - dest: b -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -8073,36 +6070,6 @@ move var@1 var@1 -> ⊥ : i32 ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(0: i32) [[32mDebug[39m] **About to evaluate statement**: [ var@3 := &two-phase b; @@ -8223,28 +6190,6 @@ move @return - type_params: [i32] - args: [move var@3] - dest: x -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) } -[[32mDebug[39m] Value to move: -&mut@0 (@Box(0: i32)) [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -8308,36 +6251,6 @@ move var@3 var@1 -> ⊥ : &'_ mut (std::boxed::Box<i32>) ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@1 (0: i32) [[32mDebug[39m] **About to evaluate statement**: [ *(x) := 1: i32; @@ -8394,28 +6307,6 @@ move @return -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@5 := &b; @@ -8530,30 +6421,6 @@ move @return - type_params: [i32] - args: [move var@5] - dest: x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -⌊shared@2⌋ [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -8602,36 +6469,6 @@ move var@5 var@1 -> ⊥ : &'_ (std::boxed::Box<i32>) ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -⌊shared@3⌋ [[32mDebug[39m] **About to evaluate statement**: [ var@8 := copy *(x); @@ -8685,30 +6522,6 @@ move @return -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@7 := move var@8 == 1: i32; @@ -8761,52 +6574,6 @@ copy *(x) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@6 := ¬ move var@7; @@ -8858,30 +6625,6 @@ move var@8 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@6); @@ -8932,30 +6675,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ drop(b); @@ -9088,28 +6807,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &x; @@ -9221,30 +6918,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -@shared_loan({0}, 0: i32) [[32mDebug[39m] **About to evaluate statement**: [ y := move copy_int(move var@4); @@ -9299,30 +6972,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@0 := copy x; @@ -9384,36 +7033,6 @@ move var@4 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -9492,36 +7111,6 @@ copy x x -> ⊥ : i32 ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@7 := copy *(px); @@ -9575,30 +7164,6 @@ move var@0 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := copy y; @@ -9651,30 +7216,6 @@ copy *(px) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@6 := move var@7 == move var@8; @@ -9726,54 +7267,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := ¬ move var@6; @@ -9824,30 +7317,6 @@ move var@8 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@5); @@ -9897,30 +7366,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ return @@ -10064,58 +7509,6 @@ false - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -10162,35 +7555,6 @@ test1::List::Nil var@1 -> ⊥ : test1::List<i32> ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -10246,27 +7610,6 @@ move @return -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ set_discriminant(l, 0); @@ -10503,29 +7823,6 @@ move var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -⌊shared@0⌋ [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move is_cons<i32>(move var@6); @@ -10576,29 +7873,6 @@ copy var@7 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -⌊shared@1⌋ [[32mDebug[39m] **About to evaluate statement**: [ var@2 := discriminant(*(l)); @@ -10752,36 +8026,6 @@ move var@6 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: isize [[32mDebug[39m] **About to evaluate statement**: [ var@0 := true @@ -10812,34 +8056,6 @@ move var@2 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ return @@ -10919,36 +8135,6 @@ true var@2 -> ⊥ : isize ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@4 := ¬ move var@5; @@ -10998,29 +8184,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@4); @@ -11069,29 +8232,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ drop(l); @@ -11300,64 +8440,6 @@ false - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] ctx_pop_frame: # Ended regions: {} # 2 frame(s) @@ -11410,38 +8492,6 @@ test1::List::Nil var@1 -> ⊥ : test1::List<i32> ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -11506,30 +8556,6 @@ move @return -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ set_discriminant(l, 0); @@ -11745,32 +8745,6 @@ move var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } [[32mDebug[39m] **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); } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } [[32mDebug[39m] **About to evaluate statement**: [ var@8 := false; @@ -11960,45 +8908,6 @@ test1::List::Cons { 0 = 0: i32; 1 = @Box(test1::List::Nil); } -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := false; @@ -12101,45 +9010,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := true; @@ -12241,45 +9111,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@8 := true; @@ -12380,45 +9211,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@2 := discriminant(l); @@ -12575,47 +9367,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: isize [[32mDebug[39m] **About to evaluate statement**: [ var@8 := false; @@ -12707,45 +9458,6 @@ move var@2 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ hd := move (l as test1::List::Cons).0; @@ -12836,47 +9548,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@7 := false; @@ -12966,45 +9637,6 @@ move (l as test1::List::Cons).0 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ tl := move (l as test1::List::Cons).1; @@ -13093,47 +9725,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -@Box(test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move hd; @@ -13221,47 +9812,6 @@ move (l as test1::List::Cons).1 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@6 := move deref_box(tl); @@ -13348,47 +9898,6 @@ move hd -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **About to evaluate statement**: [ (var@0).0 := move var@5; @@ -13474,47 +9983,6 @@ test1::List::Nil -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] 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, [], -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **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 ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -(0: i32, test1::List::Nil) [[32mDebug[39m] **About to evaluate statement**: [ hd := copy (var@6).0; @@ -13955,32 +10341,6 @@ move var@0 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ tl := move (var@6).1; @@ -14039,32 +10399,6 @@ copy (var@6).0 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **About to evaluate statement**: [ var@10 := copy hd; @@ -14122,32 +10456,6 @@ test1::List::Nil -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@9 := move var@10 == 0: i32; @@ -14204,56 +10512,6 @@ copy hd -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@8 := ¬ move var@9; @@ -14309,32 +10567,6 @@ move var@10 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@8); @@ -14389,32 +10621,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ drop(tl); @@ -14585,38 +10791,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 0: i32; @@ -14705,38 +10879,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@5 := &mut x; @@ -15162,114 +11304,14 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); ty = (Types.Integer Types.I32) } -[[32mDebug[39m] Value to move: -&mut@1 (0: i32) -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); ty = (Types.Integer Types.I32) } -[[32mDebug[39m] Value to move: -&mut@3 (0: i32) [[32mDebug[39m] **About to evaluate statement**: [ var@4 := copy b; @@ -15363,49 +11405,6 @@ move var@6 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -true [[32mDebug[39m] **About to evaluate statement**: [ if (move var@4) { @@ -15503,49 +11502,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@0 := &mut *(x) @@ -15709,49 +11665,6 @@ true var@4 -> ⊥ : bool ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@4 (0: i32) [[32mDebug[39m] **About to evaluate statement**: [ var@8 := copy *(z); @@ -15834,40 +11747,6 @@ move var@0 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ *(z) := copy var@8 + 1: i32; @@ -15949,72 +11828,6 @@ copy *(z) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@12 := copy *(z); @@ -16095,40 +11908,6 @@ copy var@8 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@11 := move var@12 == 1: i32; @@ -16208,72 +11987,6 @@ copy *(z) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@10 := ¬ move var@11; @@ -16352,40 +12065,6 @@ move var@12 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@10); @@ -16463,40 +12142,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@15 := copy x; @@ -16573,40 +12218,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@14 := move var@15 == 1: i32; @@ -16682,72 +12293,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@13 := ¬ move var@14; @@ -16822,40 +12367,6 @@ move var@15 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@13); @@ -16929,40 +12440,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@18 := copy y; @@ -17035,40 +12512,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@17 := move var@18 == 0: i32; @@ -17140,72 +12583,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@16 := ¬ move var@17; @@ -17276,40 +12653,6 @@ move var@18 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@16); @@ -17379,40 +12722,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ return @@ -17513,30 +12822,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -17664,32 +12949,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@0 (0: u32) [[32mDebug[39m] **About to evaluate statement**: [ (p).0 := move var@4; @@ -17752,32 +13011,6 @@ move px -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@0 (0: u32) [[32mDebug[39m] 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, [], -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ pp0 := &mut p; @@ -18046,30 +13255,6 @@ ty: (Types.Adt (Types.Tuple, [], -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Adt @@ -18097,8 +13282,6 @@ move var@7 (Types.Integer Types.U32)] )) } -[[32mDebug[39m] Value to move: -&mut@2 ((&mut@0 (0: u32), 1: u32)) [[32mDebug[39m] **About to evaluate statement**: [ var@2 := &mut *(x); @@ -18322,39 +13505,6 @@ move var@7 var@2 -> ⊥ : &'_ mut ((&'_ mut (u32), u32)) ; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@4 ((&mut@0 (0: u32), 1: u32)) [[32mDebug[39m] **About to evaluate statement**: [ y := 2: u32; @@ -18412,30 +13562,6 @@ move var@0 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@10 := &mut y; @@ -18601,36 +13727,36 @@ move var@0 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -&mut@6 (2: u32) [[32mDebug[39m] **About to evaluate statement**: [ - *((pp1).1) := 3: u32; - return + *((pp1).1) := 3: u32 ] **Context**: @@ -18656,7 +13782,7 @@ move var@9 [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] test_unit_function: test_char +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a; + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + var@0 := a +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> ⊥ : char ; +} + + + +[[32mDebug[39m] +**About to evaluate statement**: [ + return +] + +**Context**: +# Ended regions: {} +# 1 frame(s) + +# Frame 0: +{ + var@0 -> a ; +} + + + +[[32mDebug[39m] test_unit_function: test_loops +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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 [[32mDebug[39m] **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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [9,8,7,6,5,4,3,2,1] +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: var@3 +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 ; } -[[32mDebug[39m] test_unit_function: test_char [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } -[[32mDebug[39m] test_function_symbolic: add_test [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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) ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [9,8,7,6,5,4,3,2,1] +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: var@3 +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : u32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] 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] +[[32mDebug[39m] drop_value: place: var@19 +[[32mDebug[39m] drop_value: place: var@18 +[[32mDebug[39m] drop_value: place: var@17 +[[32mDebug[39m] drop_value: place: var@16 +[[32mDebug[39m] drop_value: place: var@15 +[[32mDebug[39m] drop_value: place: var@14 +[[32mDebug[39m] drop_value: place: var@13 +[[32mDebug[39m] drop_value: place: var@12 +[[32mDebug[39m] drop_value: place: var@11 +[[32mDebug[39m] drop_value: place: var@10 +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: j +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 ; } -[[32mDebug[39m] test_function_symbolic: subs_test [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; } [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] 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] +[[32mDebug[39m] drop_value: place: var@19 +[[32mDebug[39m] drop_value: place: var@18 +[[32mDebug[39m] drop_value: place: var@17 +[[32mDebug[39m] drop_value: place: var@16 +[[32mDebug[39m] drop_value: place: var@15 +[[32mDebug[39m] drop_value: place: var@14 +[[32mDebug[39m] drop_value: place: var@13 +[[32mDebug[39m] drop_value: place: var@12 +[[32mDebug[39m] drop_value: place: var@11 +[[32mDebug[39m] drop_value: place: var@10 +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: j +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [15,14,13,12,11,10,9,8,7,6,5,4,3,2,1] +[[32mDebug[39m] drop_value: place: var@15 +[[32mDebug[39m] drop_value: place: var@14 +[[32mDebug[39m] drop_value: place: var@13 +[[32mDebug[39m] drop_value: place: var@12 +[[32mDebug[39m] drop_value: place: var@11 +[[32mDebug[39m] drop_value: place: var@10 +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: j +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] +**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) ; +} + + + +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [11,10,9,8,7,6,5,4,3,2,1] +[[32mDebug[39m] drop_value: place: var@11 +[[32mDebug[39m] drop_value: place: var@10 +[[32mDebug[39m] drop_value: place: var@9 +[[32mDebug[39m] drop_value: place: var@8 +[[32mDebug[39m] drop_value: place: var@7 +[[32mDebug[39m] drop_value: place: var@6 +[[32mDebug[39m] drop_value: place: var@5 +[[32mDebug[39m] drop_value: place: var@4 +[[32mDebug[39m] drop_value: place: var@3 +[[32mDebug[39m] drop_value: place: i +[[32mDebug[39m] drop_value: place: max +[[32mDebug[39m] 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) ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] test_unit_function: id_mut_mut_test1 +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] 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)) } +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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⌋) ; +} + + + +[[32mDebug[39m] 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⌋) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [2,1] +[[32mDebug[39m] drop_value: place: var@2 +[[32mDebug[39m] drop_value: place: x +[[32mDebug[39m] 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)) ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] test_unit_function: id_mut_mut_test2 +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] 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)) } +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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)) ; +} + + + +[[32mDebug[39m] +**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⌋) ; +} + + + +[[32mDebug[39m] 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⌋) ; +} + +[[32mDebug[39m] ctx_pop_frame: locals to drop: [2,1] +[[32mDebug[39m] drop_value: place: var@2 +[[32mDebug[39m] drop_value: place: x +[[32mDebug[39m] 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)) ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] test_function_symbolic: add_test +[[32mDebug[39m] +**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) ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **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 [[32mDebug[39m] **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) ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : u32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -19270,12 +54216,12 @@ s@1 : u32 -[[32mDebug[39m] test_function_symbolic: div_test +[[32mDebug[39m] test_function_symbolic: subs_test [[32mDebug[39m] **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 ; -} - - - -[[32mDebug[39m] 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 -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **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) ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **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) ; } [[32mDebug[39m] **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) ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] test_function_symbolic: div_test +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@0 : u32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@1 : u32 [[32mDebug[39m] **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 ; } -[[32mDebug[39m] test_function_symbolic: rem_test [[32mDebug[39m] **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 [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **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 ; } +[[32mDebug[39m] test_function_symbolic: rem_test [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **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 [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@0 : u32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -19811,30 +54743,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 44: u32; @@ -19898,30 +54806,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ z := 67: u32; @@ -19984,30 +54868,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy x; @@ -20069,32 +54929,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -23: u32 [[32mDebug[39m] **About to evaluate statement**: [ (p).x := move var@5; @@ -20155,32 +54989,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -23: u32 [[32mDebug[39m] 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), [], -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ (s as test1::Sum::Right).0 := true; @@ -20326,30 +55110,6 @@ ty: (Types.Adt ((Types.AdtId 0), [], -[[32mDebug[39m] 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 - [[32mDebug[39m] 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])) -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy y; @@ -20804,27 +55519,6 @@ s@0 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ var@3 := move var@4 >= move var@5; @@ -20874,48 +55568,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ if (move var@3) { @@ -20969,27 +55621,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@0 := copy x @@ -21011,48 +55642,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@0 := copy y @@ -21074,27 +55663,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -21197,52 +55765,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := move get_max(10: u32, 11: u32); @@ -21301,52 +55823,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@4 := copy x; @@ -21404,31 +55880,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : u32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := copy y; @@ -21485,31 +55936,6 @@ s@0 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ z := copy var@4 + copy var@5; @@ -21565,56 +55991,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@1 : u32 [[32mDebug[39m] **About to evaluate statement**: [ var@9 := copy z; @@ -21669,31 +56045,6 @@ s@1 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@2 : u32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := move var@9 == 15: u32; @@ -21747,54 +56098,6 @@ s@2 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@2 : u32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := ¬ move var@8; @@ -21847,31 +56150,6 @@ s@2 : u32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@3 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@7); @@ -21923,31 +56201,6 @@ s@3 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ return @@ -22016,25 +56269,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@3 := copy var@2 == -2147483648: i32; @@ -22076,42 +56310,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@3); @@ -22152,25 +56350,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@0 := - move var@2; @@ -22210,25 +56389,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : i32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -22287,22 +56447,6 @@ s@0 : i32 -[[32mDebug[39m] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - var@0 -> ⊥ : () ; - x -> ⊥ : i32 ; - y -> ⊥ : i32 ; -} - - -- op: -3: i32 - [[32mDebug[39m] **About to evaluate statement**: [ y := -3: i32; @@ -22340,22 +56484,6 @@ s@0 : i32 -[[32mDebug[39m] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - var@0 -> ⊥ : () ; - x -> 3: i32 ; - y -> ⊥ : i32 ; -} - - -- op: --3: i32 - [[32mDebug[39m] **About to evaluate statement**: [ return @@ -22427,26 +56555,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -22597,26 +56705,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@6 := copy x; @@ -22665,28 +56753,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move var@6 == 1: i32; @@ -22734,48 +56800,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@4 := ¬ move var@5; @@ -22822,28 +56846,6 @@ move var@6 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@4); @@ -22889,28 +56891,6 @@ s@0 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ return @@ -23026,38 +57006,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 1: i32; @@ -23149,38 +57097,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -23621,40 +57537,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@3 (1: i32) [[32mDebug[39m] **About to evaluate statement**: [ *(*(ppx)) := 2: i32; @@ -23740,38 +57622,6 @@ move var@6 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@9 := copy *(px); @@ -23856,40 +57706,6 @@ move var@6 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := move var@9 == 2: i32; @@ -23973,72 +57789,6 @@ copy *(px) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := ¬ move var@8; @@ -24121,40 +57871,6 @@ move var@9 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@7); @@ -24236,40 +57952,6 @@ s@0 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@12 := copy x; @@ -24350,40 +58032,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@11 := move var@12 == 0: i32; @@ -24463,72 +58111,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@10 := ¬ move var@11; @@ -24607,40 +58189,6 @@ move var@12 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@2 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@10); @@ -24718,40 +58266,6 @@ s@2 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@15 := copy *(py); @@ -24828,40 +58342,6 @@ true -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@14 := move var@15 == 2: i32; @@ -24937,72 +58417,6 @@ copy *(py) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@13 := ¬ move var@14; @@ -25077,40 +58491,6 @@ move var@15 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@4 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@13); @@ -25184,40 +58564,6 @@ s@4 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@18 := copy y; @@ -25290,40 +58636,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -2: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@17 := move var@18 == 2: i32; @@ -25395,72 +58707,6 @@ copy y -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -2: i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@16 := ¬ move var@17; @@ -25531,40 +58777,6 @@ move var@18 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@6 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@16); @@ -25634,40 +58846,6 @@ s@6 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ return @@ -25795,25 +58973,6 @@ true - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -25856,23 +59015,6 @@ test1::List::Nil -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : std::boxed::Box<test1::List<i32>> [[32mDebug[39m] **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 -[[32mDebug[39m] 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 - [[32mDebug[39m] **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 -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) } -[[32mDebug[39m] Value to move: -&mut@0 (s@0 : std::boxed::Box<i32>) [[32mDebug[39m] **About to evaluate statement**: [ *(x) := 1: i32; @@ -26340,8 +59417,9 @@ move var@3 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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)⌋ + } +} + [[32mDebug[39m] **About to evaluate statement**: [ @@ -26429,6 +59526,112 @@ move var@3 +[[32mDebug[39m] 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)⌋ + } +} + +[[32mDebug[39m] 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)⌋ + } +} + +[[32mDebug[39m] 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) } + } +} + +[[32mDebug[39m] 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 ; +} + [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -⌊shared@2⌋ [[32mDebug[39m] **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 -[[32mDebug[39m] -**About to evaluate statement**: [ - var@8 := copy *(x) -] +[[32mDebug[39m] expand_symbolic_value: s@4 : &r@1 (i32) -**Context**: +- original context: # Ended regions: {0} # 1 frame(s) @@ -26572,9 +59776,7 @@ move var@5 } - -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -s@5 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@7 := move var@8 == 1: i32; @@ -26661,8 +59858,15 @@ s@5 : i32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@5 : i32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 [[32mDebug[39m] **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 [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@6 : bool [[32mDebug[39m] **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 -[[32mDebug[39m] -**About to evaluate statement**: [ - assert(¬move var@6) -] - -**Context**: +[[32mDebug[39m] drop_value: place: b +[[32mDebug[39m] 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 } } - - -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true -[[32mDebug[39m] -**About to evaluate statement**: [ - drop(b); - return -] - -**Context**: +[[32mDebug[39m] 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)) } } - - -[[32mDebug[39m] -**About to evaluate statement**: [ - drop(b) -] - -**Context**: +[[32mDebug[39m] 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 ; +} -[[32mDebug[39m] drop_value: place: b [[32mDebug[39m] **About to evaluate statement**: [ return @@ -27006,23 +60199,6 @@ true -[[32mDebug[39m] eval_operand: -- ctx: -# Ended regions: {} -# 1 frame(s) - -# Frame 0: -{ - var@0 -> ⊥ : i32 ; - x -> s@0 : i32 ; -} - - -- op: -copy x - -[[32mDebug[39m] Value to copy: -s@0 : i32 [[32mDebug[39m] **About to evaluate statement**: [ return @@ -27098,28 +60274,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &x; @@ -27231,30 +60385,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -@shared_loan({0}, 0: i32) [[32mDebug[39m] **About to evaluate statement**: [ y := move copy_int(move var@4); @@ -27309,30 +60439,6 @@ copy x -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@7 := copy *(px); @@ -27386,30 +60492,6 @@ move var@4 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -0: i32 [[32mDebug[39m] **About to evaluate statement**: [ var@8 := copy y; @@ -27462,30 +60544,6 @@ copy *(px) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@6 := move var@7 == move var@8; @@ -27537,54 +60595,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@5 := ¬ move var@6; @@ -27635,30 +60645,6 @@ s@0 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@1 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@5); @@ -27708,30 +60694,6 @@ s@1 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ return @@ -27811,6 +60773,38 @@ true +[[32mDebug[39m] 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 ; +} + + [[32mDebug[39m] **About to evaluate statement**: [ switch (move var@2) { @@ -27874,27 +60868,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: isize [[32mDebug[39m] **About to evaluate statement**: [ var@0 := true @@ -27916,25 +60889,6 @@ move var@2 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ return @@ -28019,27 +60973,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: isize [[32mDebug[39m] **About to evaluate statement**: [ var@0 := false @@ -28061,25 +60994,6 @@ move var@2 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ return @@ -28220,29 +61134,6 @@ false - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -28298,27 +61189,6 @@ test1::List::Nil -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : std::boxed::Box<test1::List<i32>> [[32mDebug[39m] **About to evaluate statement**: [ set_discriminant(l, 0); @@ -28555,29 +61402,6 @@ s@0 : std::boxed::Box<test1::List<i32>> -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -⌊shared@0⌋ [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move is_cons<i32>(move var@6); @@ -28628,8 +61452,15 @@ copy var@7 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -⌊shared@1⌋ [[32mDebug[39m] **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 [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@1 : bool [[32mDebug[39m] **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 [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] drop_value: place: l +[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true -[[32mDebug[39m] -**About to evaluate statement**: [ - drop(l); - return -] - -**Context**: +[[32mDebug[39m] 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) } } +[[32mDebug[39m] 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) + } +} -[[32mDebug[39m] -**About to evaluate statement**: [ - drop(l) -] - -**Context**: +[[32mDebug[39m] 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>) ; +} -[[32mDebug[39m] drop_value: place: l [[32mDebug[39m] **About to evaluate statement**: [ return @@ -28971,30 +61819,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := false; @@ -29067,30 +61891,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@7 := true; @@ -29162,30 +61962,6 @@ false -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@8 := true; @@ -29256,30 +62032,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@2 := discriminant(l); @@ -29391,32 +62143,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -0: isize [[32mDebug[39m] **About to evaluate statement**: [ var@8 := false; @@ -29478,30 +62204,6 @@ move var@2 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ hd := move (l as test1::List::Cons).0; @@ -29562,32 +62264,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@1 : T [[32mDebug[39m] **About to evaluate statement**: [ var@7 := false; @@ -29647,30 +62323,6 @@ s@1 : T -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ tl := move (l as test1::List::Cons).1; @@ -29729,32 +62381,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@2 : std::boxed::Box<test1::List<T>> [[32mDebug[39m] **About to evaluate statement**: [ var@5 := move hd; @@ -29812,32 +62438,6 @@ s@2 : std::boxed::Box<test1::List<T>> -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@1 : T [[32mDebug[39m] **About to evaluate statement**: [ var@6 := move deref_box(tl); @@ -29894,8 +62494,9 @@ s@1 : T -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to move: -s@3 : test1::List<T> -[[32mDebug[39m] -**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> } - [[32mDebug[39m] **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> -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@1 : T [[32mDebug[39m] 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, [], -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@3 : test1::List<T> [[32mDebug[39m] **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> -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -1: isize [[32mDebug[39m] **About to evaluate statement**: [ panic @@ -30403,32 +62941,6 @@ move var@2 - type_params: [test1::List<i32>] - args: [move var@3] - dest: var@2 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Nil [[32mDebug[39m] **About to evaluate statement**: [ (l as test1::List::Cons).0 := 0: i32; @@ -30493,30 +63005,6 @@ test1::List::Nil -[[32mDebug[39m] 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 - [[32mDebug[39m] 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)])) -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@0 : std::boxed::Box<test1::List<i32>> [[32mDebug[39m] **About to evaluate statement**: [ set_discriminant(l, 0); @@ -30732,32 +63194,6 @@ s@0 : std::boxed::Box<test1::List<i32>> -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } [[32mDebug[39m] **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>>; } -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -test1::List::Cons { 0 = 0: i32; 1 = s@0 : std::boxed::Box<test1::List<i32>>; } [[32mDebug[39m] **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>>; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@2 : i32 -[[32mDebug[39m] -**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 } - [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@3 : test1::List<i32> [[32mDebug[39m] **About to evaluate statement**: [ var@10 := copy hd; @@ -31070,32 +63470,6 @@ s@3 : test1::List<i32> -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@2 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@9 := move var@10 == 0: i32; @@ -31152,56 +63526,6 @@ s@2 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@2 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@8 := ¬ move var@9; @@ -31257,32 +63581,6 @@ s@2 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@4 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@8); @@ -31337,32 +63635,6 @@ s@4 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ drop(tl); @@ -31501,31 +63773,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@0 : bool [[32mDebug[39m] **About to evaluate statement**: [ if (move var@4) { @@ -31587,8 +63834,12 @@ s@0 : bool -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -true -[[32mDebug[39m] -**About to evaluate statement**: [ - var@0 := &mut *(x) -] +[[32mDebug[39m] expand_symbolic_value: s@1 : &r@0 mut (T) -**Context**: +- original context: # Ended regions: {} # 1 frame(s) @@ -31636,32 +63880,25 @@ true } - -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -false [[32mDebug[39m] **About to evaluate statement**: [ var@0 := move y @@ -31687,31 +63924,6 @@ false -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@2 : &r@0 mut (T) [[32mDebug[39m] **About to evaluate statement**: [ return @@ -31852,38 +64064,6 @@ s@2 : &r@0 mut (T) -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ y := 0: i32; @@ -31972,38 +64152,6 @@ s@2 : &r@0 mut (T) -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@5 := &mut x; @@ -32429,114 +64577,14 @@ s@2 : &r@0 mut (T) -[[32mDebug[39m] 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 - -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); ty = (Types.Integer Types.I32) } -[[32mDebug[39m] Value to move: -&mut@1 (0: i32) -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Concrete (Values.Scalar { Values.value = 0; int_ty = Types.I32 })); ty = (Types.Integer Types.I32) } -[[32mDebug[39m] Value to move: -&mut@3 (0: i32) [[32mDebug[39m] **About to evaluate statement**: [ var@8 := copy *(z); @@ -32631,8 +64679,9 @@ move var@6 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -s@1 : i32 -[[32mDebug[39m] -**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 } - [[32mDebug[39m] **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 -[[32mDebug[39m] 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 +[[32mDebug[39m] +**About to evaluate statement**: [ + *(z) := copy var@8 + 1: i32 +] -[[32mDebug[39m] Value to copy: -s@1 : i32 -[[32mDebug[39m] eval_operand: -- ctx: +**Context**: # Ended regions: {} # 1 frame(s) @@ -32839,8 +64841,6 @@ s@1 : i32 } -- op: -1: i32 [[32mDebug[39m] **About to evaluate statement**: [ @@ -32934,46 +64934,6 @@ s@1 : i32 -[[32mDebug[39m] 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) - -[[32mDebug[39m] Value to copy: -s@2 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@11 := move var@12 == 1: i32; @@ -33065,8 +65025,22 @@ s@2 : i32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to move: -s@2 : i32 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 [[32mDebug[39m] **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 [[32mDebug[39m] **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)⌋ - } -} - - - -[[32mDebug[39m] 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 -[[32mDebug[39m] Value to move: -s@3 : bool [[32mDebug[39m] **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 [[32mDebug[39m] **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 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true -[[32mDebug[39m] -**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**: +[[32mDebug[39m] 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 } } - - -[[32mDebug[39m] -**About to evaluate statement**: [ - var@15 := copy x -] - -**Context**: +[[32mDebug[39m] 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) } } } - - -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@5 : i32 -[[32mDebug[39m] -**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 ; } - - [[32mDebug[39m] **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 -[[32mDebug[39m] 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 +[[32mDebug[39m] +**About to evaluate statement**: [ + var@14 := move var@15 == 1: i32 +] -[[32mDebug[39m] Value to move: -s@5 : i32 -[[32mDebug[39m] 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 [[32mDebug[39m] **About to evaluate statement**: [ @@ -33745,40 +65605,6 @@ s@5 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@7 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@13); @@ -33852,40 +65678,6 @@ s@7 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ var@18 := copy y; @@ -33958,40 +65750,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to copy: -s@6 : i32 [[32mDebug[39m] **About to evaluate statement**: [ var@17 := move var@18 == 0: i32; @@ -34063,72 +65821,6 @@ s@6 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@6 : i32 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@16 := ¬ move var@17; @@ -34199,40 +65891,6 @@ s@6 : i32 -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -s@9 : bool [[32mDebug[39m] **About to evaluate statement**: [ assert(¬move var@16); @@ -34302,40 +65960,6 @@ s@9 : bool -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -true [[32mDebug[39m] **About to evaluate statement**: [ return @@ -34421,6 +66045,44 @@ true +[[32mDebug[39m] 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)) ; +} + + [[32mDebug[39m] **About to evaluate statement**: [ var@0 := &mut *(var@2); @@ -34539,6 +66201,38 @@ true +[[32mDebug[39m] 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)) ; +} + + [[32mDebug[39m] **About to evaluate statement**: [ var@0 := &mut *(var@2); @@ -34669,30 +66363,6 @@ true -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ px := &mut x; @@ -34820,32 +66490,6 @@ true -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@0 (0: u32) [[32mDebug[39m] **About to evaluate statement**: [ (p).0 := move var@4; @@ -34908,32 +66552,6 @@ move px -[[32mDebug[39m] 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 - -[[32mDebug[39m] Value to move: -&mut@0 (0: u32) [[32mDebug[39m] 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, [], -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ pp0 := &mut p; @@ -35202,30 +66796,6 @@ ty: (Types.Adt (Types.Tuple, [], -[[32mDebug[39m] 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 - [[32mDebug[39m] activate_inactivated_mut_borrow: resulting value: { Values.value = (Values.Adt @@ -35253,8 +66823,6 @@ move var@7 (Types.Integer Types.U32)] )) } -[[32mDebug[39m] Value to move: -&mut@2 ((&mut@0 (0: u32), 1: u32)) [[32mDebug[39m] **About to evaluate statement**: [ y := 2: u32; @@ -35320,34 +66888,6 @@ move var@7 -[[32mDebug[39m] 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 - [[32mDebug[39m] **About to evaluate statement**: [ var@10 := &mut y; @@ -35537,8 +67077,9 @@ move var@7 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] 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) -[[32mDebug[39m] Value to move: -&mut@4 (2: u32) -[[32mDebug[39m] -**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**: + +[[32mDebug[39m] 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))⌋ + } +} + [[32mDebug[39m] **About to evaluate statement**: [ - *((pp1).1) := 3: u32 + *((pp1).1) := 3: u32; + return ] **Context**: @@ -35628,8 +67208,12 @@ move var@9 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**About to evaluate statement**: [ + *((pp1).1) := 3: u32 +] + +**Context**: # Ended regions: {} # 1 frame(s) @@ -35653,8 +67237,6 @@ move var@9 } -- op: -3: u32 [[32mDebug[39m] **About to evaluate statement**: [ @@ -35731,6 +67313,38 @@ move var@9 +[[32mDebug[39m] 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))) ; +} + + [[32mDebug[39m] **About to evaluate statement**: [ var@0 := &mut *(var@2); @@ -35840,6 +67454,38 @@ move var@9 +[[32mDebug[39m] 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))) ; +} + + [[32mDebug[39m] **About to evaluate statement**: [ var@0 := &mut *(var@2); @@ -35967,25 +67613,27 @@ move var@9 -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] +**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 -[[32mDebug[39m] Value to copy: -s@0 : &'static (u32) +[[32mDebug[39m] test_function_symbolic: test_char [[32mDebug[39m] **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 ; } -[[32mDebug[39m] test_function_symbolic: test_char [[32mDebug[39m] **About to evaluate statement**: [ - var@0 := a; - return + var@0 := a ] **Context**: @@ -36021,7 +67666,7 @@ s@0 : &'static (u32) [[32mDebug[39m] **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 ; } -[[32mDebug[39m] eval_operand: -- ctx: +[[32mDebug[39m] test_function_symbolic: test_loops +[[32mDebug[39m] +**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 [[32mDebug[39m] **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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_mut_test1 +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] 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)) } +[[32mDebug[39m] +**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))) + } +} + + + +[[32mDebug[39m] +**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))) + } +} + + + +[[32mDebug[39m] 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))) + } +} + + +[[32mDebug[39m] 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)⌋) + } +} + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] 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)⌋) + } +} + +[[32mDebug[39m] 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)⌋) + } +} + +[[32mDebug[39m] 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)⌋} + } +} + +[[32mDebug[39m] 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)⌋} + } +} + +[[32mDebug[39m] 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)⌋} + } +} + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] +**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)⌋} + } +} + + + +[[32mDebug[39m] 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)⌋} + } +} + +[[32mDebug[39m] 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)⌋} + } +} + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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 ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] test_function_symbolic: id_mut_mut_test2 +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] 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)) } +[[32mDebug[39m] +**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))) + } +} + + + +[[32mDebug[39m] +**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))) + } +} + + + +[[32mDebug[39m] 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))) + } +} + + +[[32mDebug[39m] 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)⌋) + } +} + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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)⌋) + } +} + + + +[[32mDebug[39m] +**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) }) + } +} + + + +[[32mDebug[39m] +**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) }) + } +} + + + +[[32mDebug[39m] 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) }) + } +} + +[[32mDebug[39m] 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) }) + } +} + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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) }} + } +} + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] +**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) }} + } +} + + + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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) }} + } +} + +[[32mDebug[39m] 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 ; +} + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; +} + + + +[[32mDebug[39m] +**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 ; } |