From b82652273a78603baa7926acde411f484e55890b Mon Sep 17 00:00:00 2001 From: orizi <104711814+orizi@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:33:00 +0200 Subject: [PATCH] Added const-folding 0 index access. (#6818) --- crates/cairo-lang-lowering/src/ids.rs | 14 +- .../src/optimizations/const_folding.rs | 36 +- .../src/optimizations/test_data/const_folding | 79 + .../cairo-lang-lowering/src/test_data/match | 4 +- .../src/casm_contract_class_test.rs | 2 +- ...ount__account.compiled_contract_class.json | 297 ++- .../account__account.contract_class.json | 714 +++---- .../test_data/account__account.sierra | 1845 ++++++++--------- 8 files changed, 1528 insertions(+), 1463 deletions(-) diff --git a/crates/cairo-lang-lowering/src/ids.rs b/crates/cairo-lang-lowering/src/ids.rs index 792b64720cc..4e656fd3d52 100644 --- a/crates/cairo-lang-lowering/src/ids.rs +++ b/crates/cairo-lang-lowering/src/ids.rs @@ -340,10 +340,18 @@ impl FunctionId { pub fn semantic_full_path(&self, db: &dyn LoweringGroup) -> String { self.lookup_intern(db).semantic_full_path(db) } - pub fn get_extern(&self, db: &dyn LoweringGroup) -> Option { + /// Returns the function as an `ExternFunctionId` and its generic arguments, if it is an + /// `extern` functions. + pub fn get_extern( + &self, + db: &dyn LoweringGroup, + ) -> Option<(ExternFunctionId, Vec)> { let semantic = try_extract_matches!(self.lookup_intern(db), FunctionLongId::Semantic)?; - let generic = semantic.get_concrete(db.upcast()).generic_function; - try_extract_matches!(generic, GenericFunctionId::Extern) + let concrete = semantic.get_concrete(db.upcast()); + Some(( + try_extract_matches!(concrete.generic_function, GenericFunctionId::Extern)?, + concrete.generic_args, + )) } } pub trait SemanticFunctionIdEx { diff --git a/crates/cairo-lang-lowering/src/optimizations/const_folding.rs b/crates/cairo-lang-lowering/src/optimizations/const_folding.rs index 8c935179b6b..6461424bde7 100644 --- a/crates/cairo-lang-lowering/src/optimizations/const_folding.rs +++ b/crates/cairo-lang-lowering/src/optimizations/const_folding.rs @@ -232,7 +232,7 @@ impl ConstFoldingContext<'_> { stmt: &mut StatementCall, additional_consts: &mut Vec, ) -> Option { - let id = stmt.function.get_extern(self.db)?; + let (id, _generic_args) = stmt.function.get_extern(self.db)?; if id == self.felt_sub { // (a - 0) can be replaced by a. let val = self.as_int(stmt.inputs[1].var_id)?; @@ -331,7 +331,7 @@ impl ConstFoldingContext<'_> { &mut self, info: &mut MatchExternInfo, ) -> Option<(Option, FlatBlockEnd)> { - let id = info.function.get_extern(self.db)?; + let (id, generic_args) = info.function.get_extern(self.db)?; if self.nz_fns.contains(&id) { let val = self.as_const(info.inputs[0].var_id)?; let is_zero = match val { @@ -461,9 +461,7 @@ impl ConstFoldingContext<'_> { } else if id == self.bounded_int_constrain { let input_var = info.inputs[0].var_id; let (value, nz_ty) = self.as_int_ex(input_var)?; - let semantic_id = - extract_matches!(info.function.lookup_intern(self.db), FunctionLongId::Semantic); - let generic_arg = semantic_id.get_concrete(self.db.upcast()).generic_args[1]; + let generic_arg = generic_args[1]; let constrain_value = extract_matches!(generic_arg, GenericArgumentId::Constant) .lookup_intern(self.db) .into_int() @@ -474,6 +472,20 @@ impl ConstFoldingContext<'_> { Some(self.propagate_const_and_get_statement(value.clone(), output, nz_ty)), FlatBlockEnd::Goto(info.arms[arm_idx].block_id, Default::default()), )) + } else if id == self.array_get { + if self.as_int(info.inputs[1].var_id)?.is_zero() { + if let [success, failure] = info.arms.as_mut_slice() { + let arr = info.inputs[0].var_id; + let unused_arr_output0 = self.variables.alloc(self.variables[arr].clone()); + let unused_arr_output1 = self.variables.alloc(self.variables[arr].clone()); + info.inputs.truncate(1); + info.function = ModuleHelper { db: self.db, id: self.array_module } + .function_id("array_snapshot_pop_front", generic_args); + success.var_ids.insert(0, unused_arr_output0); + failure.var_ids.insert(0, unused_arr_output1); + } + } + None } else { None } @@ -584,8 +596,6 @@ pub struct ConstFoldingLibfuncInfo { upcast: ExternFunctionId, /// The `downcast` libfunc. downcast: ExternFunctionId, - /// The `storage_base_address_from_felt252` libfunc. - storage_base_address_from_felt252: ExternFunctionId, /// The set of functions that check if a number is zero. nz_fns: OrderedHashSet, /// The set of functions that check if numbers are equal. @@ -610,8 +620,14 @@ pub struct ConstFoldingLibfuncInfo { bounded_int_sub: ExternFunctionId, /// The `bounded_int_constrain` libfunc. bounded_int_constrain: ExternFunctionId, + /// The array module. + array_module: ModuleId, + /// The `array_get` libfunc. + array_get: ExternFunctionId, /// The storage access module. storage_access_module: ModuleId, + /// The `storage_base_address_from_felt252` libfunc. + storage_base_address_from_felt252: ExternFunctionId, /// Type ranges. type_value_ranges: OrderedHashMap, } @@ -625,6 +641,8 @@ impl ConstFoldingLibfuncInfo { let bounded_int_module = core.submodule("internal").submodule("bounded_int"); let upcast = integer_module.extern_function_id("upcast"); let downcast = integer_module.extern_function_id("downcast"); + let array_module = core.submodule("array"); + let array_get = array_module.extern_function_id("array_get"); let starknet_module = core.submodule("starknet"); let storage_access_module = starknet_module.submodule("storage_access"); let storage_base_address_from_felt252 = @@ -699,7 +717,6 @@ impl ConstFoldingLibfuncInfo { into_box, upcast, downcast, - storage_base_address_from_felt252, nz_fns, eq_fns, uadd_fns, @@ -712,7 +729,10 @@ impl ConstFoldingLibfuncInfo { bounded_int_add, bounded_int_sub, bounded_int_constrain, + array_module: array_module.id, + array_get, storage_access_module: storage_access_module.id, + storage_base_address_from_felt252, type_value_ranges, } } diff --git a/crates/cairo-lang-lowering/src/optimizations/test_data/const_folding b/crates/cairo-lang-lowering/src/optimizations/test_data/const_folding index 15e03971689..2050e36054b 100644 --- a/crates/cairo-lang-lowering/src/optimizations/test_data/const_folding +++ b/crates/cairo-lang-lowering/src/optimizations/test_data/const_folding @@ -4449,3 +4449,82 @@ End: Return(v10) //! > lowering_diagnostics + +//! > ========================================================================== + +//! > Array get at known index 0. + +//! > test_runner_name +test_match_optimizer + +//! > function +fn foo(x: @Array) -> Option> { + x.get(0) +} + +//! > function_name +foo + +//! > module_code + +//! > semantic_diagnostics + +//! > before +Parameters: v0: @core::array::Array:: +blk0 (root): +Statements: + (v1: core::integer::u32) <- 0 +End: + Match(match core::array::array_get::(v0, v1) { + Option::Some(v2) => blk1, + Option::None => blk2, + }) + +blk1: +Statements: + (v3: core::option::Option::>) <- Option::Some(v2) +End: + Goto(blk3, {v3 -> v4}) + +blk2: +Statements: + (v5: ()) <- struct_construct() + (v6: core::option::Option::>) <- Option::None(v5) +End: + Goto(blk3, {v6 -> v4}) + +blk3: +Statements: +End: + Return(v4) + +//! > after +Parameters: v0: @core::array::Array:: +blk0 (root): +Statements: + (v1: core::integer::u32) <- 0 +End: + Match(match core::array::array_snapshot_pop_front::(v0) { + Option::Some(v7, v2) => blk1, + Option::None(v8) => blk2, + }) + +blk1: +Statements: + (v3: core::option::Option::>) <- Option::Some(v2) +End: + Goto(blk3, {v3 -> v4}) + +blk2: +Statements: + (v5: ()) <- struct_construct() + (v6: core::option::Option::>) <- Option::None(v5) +End: + Goto(blk3, {v6 -> v4}) + +blk3: +Statements: +End: + Return(v4) + +//! > lowering_diagnostics diff --git a/crates/cairo-lang-lowering/src/test_data/match b/crates/cairo-lang-lowering/src/test_data/match index 05077282837..4286e675b6e 100644 --- a/crates/cairo-lang-lowering/src/test_data/match +++ b/crates/cairo-lang-lowering/src/test_data/match @@ -164,7 +164,7 @@ test_function_lowering(expect_diagnostics: false) //! > function fn foo(a: @Array::) -> Option> { - core::array::array_get(a, 0_u32) + core::array::array_get(a, 1_u32) } //! > function_name @@ -180,7 +180,7 @@ foo Parameters: v0: core::RangeCheck, v1: @core::array::Array:: blk0 (root): Statements: - (v2: core::integer::u32) <- 0 + (v2: core::integer::u32) <- 1 End: Match(match core::array::array_get::(v0, v1, v2) { Option::Some(v3, v4) => blk1, diff --git a/crates/cairo-lang-starknet-classes/src/casm_contract_class_test.rs b/crates/cairo-lang-starknet-classes/src/casm_contract_class_test.rs index a56b403ac76..24669e278a4 100644 --- a/crates/cairo-lang-starknet-classes/src/casm_contract_class_test.rs +++ b/crates/cairo-lang-starknet-classes/src/casm_contract_class_test.rs @@ -100,7 +100,7 @@ fn test_contract_libfuncs_coverage(name: &str) { /// Tests that compiled_class_hash() returns the correct hash, by comparing it to hard-coded /// constant that was computed by other implementations. -#[test_case("account__account", "1663b22c467591b6288c2e063fbad4cda6285ebe4861df9aa3d5bab3f479eb6")] +#[test_case("account__account", "5191417f7d4b2560c387dd09a4a5aa2dfae8204c4f8a324d684a42fd32e46bc")] fn test_compiled_class_hash(name: &str, expected_hash: &str) { let compiled_json_path = get_example_file_path(format!("{name}.compiled_contract_class.json").as_str()); diff --git a/crates/cairo-lang-starknet/test_data/account__account.compiled_contract_class.json b/crates/cairo-lang-starknet/test_data/account__account.compiled_contract_class.json index 84c8b43f3a9..6860320c3a4 100644 --- a/crates/cairo-lang-starknet/test_data/account__account.compiled_contract_class.json +++ b/crates/cairo-lang-starknet/test_data/account__account.compiled_contract_class.json @@ -59,15 +59,15 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x836", + "0x82c", "0x482480017fff8000", - "0x835", + "0x82b", "0x480080007fff8000", "0x480080027fff8000", "0x484480017fff8000", "0x3", "0x482480017fff8000", - "0x9664", + "0x942a", "0xa0680017fff8000", "0x8", "0x48307ffe80007fec", @@ -227,15 +227,15 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x78e", + "0x784", "0x482480017fff8000", - "0x78d", + "0x783", "0x480080007fff8000", "0x480080027fff8000", "0x484480017fff8000", "0x3", "0x482480017fff8000", - "0x9344", + "0x910a", "0xa0680017fff8000", "0x8", "0x48307ffe80007ff2", @@ -367,7 +367,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x29d", + "0x293", "0x20680017fff7ffa", "0x5f", "0x20680017fff7ffd", @@ -393,15 +393,15 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x6e8", + "0x6de", "0x482480017fff8000", - "0x6e7", + "0x6dd", "0x480080007fff8000", "0x480080027fff8000", "0x484480017fff8000", "0x3", "0x482480017fff8000", - "0x9fa6", + "0x9d6c", "0xa0680017fff8000", "0x8", "0x48307ffe80007ff0", @@ -550,7 +550,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1e6", + "0x1dc", "0x20680017fff7ffa", "0x6f", "0x20680017fff7ffd", @@ -575,9 +575,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x632", + "0x628", "0x482480017fff8000", - "0x631", + "0x627", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -598,7 +598,7 @@ "0x48127ff47fff8000", "0x48127ff47fff8000", "0x1104800180018000", - "0x216", + "0x20c", "0x40137ffc7fff8000", "0x20680017fff7ffd", "0x23", @@ -616,7 +616,7 @@ "0x482480017ff88000", "0x1", "0x1104800180018000", - "0x26c", + "0x262", "0x20680017fff7ffd", "0xa", "0x48127ffb7fff8000", @@ -742,9 +742,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x58b", + "0x581", "0x482480017fff8000", - "0x58a", + "0x580", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -844,7 +844,7 @@ "0x400380017ffd7ffc", "0x480280037ffd8000", "0x20680017fff7fff", - "0xb4", + "0xaa", "0x480280047ffd8000", "0x480080017fff8000", "0x480080037fff8000", @@ -861,7 +861,7 @@ "0x10780017fff7fff", "0x13", "0x40780017fff7fff", - "0xa2", + "0x9d", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -869,8 +869,8 @@ "0x400080007ffe7fff", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", - "0x48127f567fff8000", - "0x48127f567fff8000", + "0x48127f5b7fff8000", + "0x48127f5b7fff8000", "0x480680017fff8000", "0x1", "0x48127ff97fff8000", @@ -889,49 +889,40 @@ "0x400080037ffa7ffe", "0x480080057ffa8000", "0x20680017fff7fff", - "0x7b", - "0x480680017fff8000", - "0x0", - "0x480080047ff88000", - "0x482480017ff78000", + "0x71", + "0x480080047ff98000", + "0x482480017ff88000", "0x7", - "0x480080067ff68000", - "0x48307ff180007ff2", - "0xa0680017fff8000", - "0x6", - "0x48307ffe80007ffa", - "0x400280007ffa7fff", + "0x480080067ff78000", + "0x48307ff280007ff3", + "0x20680017fff7fff", + "0x4", "0x10780017fff7fff", - "0x5c", - "0x482480017ffa8000", - "0x1", - "0x48307fff80007ffd", - "0x400280007ffa7fff", - "0x48307ff87fed8000", + "0x57", "0x480680017fff8000", "0x1", - "0x480080007ffe8000", - "0x48307fea80007feb", + "0x480080007ff08000", + "0x48307fef80007ff0", "0xa0680017fff8000", "0x6", "0x48307ffe80007ffc", - "0x400280017ffa7fff", + "0x400280007ffa7fff", "0x10780017fff7fff", "0x3b", "0x482480017ffc8000", "0x1", "0x48307fff80007ffd", - "0x400280017ffa7fff", - "0x48307ffa7fe68000", + "0x400280007ffa7fff", + "0x48307ffa7feb8000", "0x482680017ffa8000", - "0x2", + "0x1", "0x480a7ffb7fff8000", - "0x48127fe87fff8000", - "0x48127ff07fff8000", + "0x48127fed7fff8000", + "0x48127ff47fff8000", "0x48127ff67fff8000", "0x480080007ffa8000", "0x1104800180018000", - "0x17b", + "0x17a", "0x20680017fff7ffd", "0x20", "0x20680017fff7fff", @@ -943,8 +934,8 @@ "0x400080007ffe7fff", "0x48127ff97fff8000", "0x48127ff97fff8000", - "0x48127f5f7fff8000", - "0x48127f5f7fff8000", + "0x48127f637fff8000", + "0x48127f637fff8000", "0x480680017fff8000", "0x1", "0x48127ff97fff8000", @@ -955,8 +946,8 @@ "0x2", "0x48127ff97fff8000", "0x48127ff97fff8000", - "0x48127f5f7fff8000", - "0x48127f5f7fff8000", + "0x48127f637fff8000", + "0x48127f637fff8000", "0x480680017fff8000", "0x0", "0x480680017fff8000", @@ -968,8 +959,8 @@ "0x2", "0x48127ff97fff8000", "0x48127ff97fff8000", - "0x48127f5f7fff8000", - "0x48127f5f7fff8000", + "0x48127f637fff8000", + "0x48127f637fff8000", "0x480680017fff8000", "0x1", "0x48127ff77fff8000", @@ -983,10 +974,10 @@ "0x496e646578206f7574206f6620626f756e6473", "0x400080007ffe7fff", "0x482680017ffa8000", - "0x2", + "0x1", "0x480a7ffb7fff8000", - "0x48127f5f7fff8000", - "0x48127f5f7fff8000", + "0x48127f637fff8000", + "0x48127f637fff8000", "0x480680017fff8000", "0x1", "0x48127ff97fff8000", @@ -994,17 +985,16 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x97", + "0x95", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x496e646578206f7574206f6620626f756e6473", "0x400080007ffe7fff", - "0x482680017ffa8000", - "0x1", + "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", - "0x48127f5f7fff8000", - "0x48127f5f7fff8000", + "0x48127f637fff8000", + "0x48127f637fff8000", "0x480680017fff8000", "0x1", "0x48127ff97fff8000", @@ -1012,19 +1002,19 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xa0", + "0x9b", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", - "0x480080047f578000", - "0x482480017f568000", + "0x480080047f5c8000", + "0x482480017f5b8000", "0x8", "0x480680017fff8000", "0x1", - "0x480080067f548000", - "0x480080077f538000", + "0x480080067f598000", + "0x480080077f588000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0xad", + "0xa8", "0x480a7ffa7fff8000", "0x480a7ffb7fff8000", "0x480280027ffd8000", @@ -2167,7 +2157,7 @@ 181, 196, 137, - 197, + 187, 96, 104, 74, @@ -2843,32 +2833,7 @@ ] ], [ - 895, - [ - { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": -5 - } - }, - "rhs": { - "Deref": { - "register": "AP", - "offset": -1 - } - }, - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 910, + 901, [ { "TestLessThan": { @@ -2893,7 +2858,7 @@ ] ], [ - 934, + 925, [ { "AllocSegment": { @@ -2906,7 +2871,7 @@ ] ], [ - 975, + 966, [ { "AllocSegment": { @@ -2919,7 +2884,7 @@ ] ], [ - 993, + 984, [ { "AllocSegment": { @@ -2932,7 +2897,7 @@ ] ], [ - 1033, + 1023, [ { "TestLessThanOrEqual": { @@ -2954,7 +2919,7 @@ ] ], [ - 1109, + 1099, [ { "AllocSegment": { @@ -2967,7 +2932,7 @@ ] ], [ - 1133, + 1123, [ { "SystemCall": { @@ -2982,7 +2947,7 @@ ] ], [ - 1147, + 1137, [ { "SystemCall": { @@ -2997,7 +2962,7 @@ ] ], [ - 1158, + 1148, [ { "AllocSegment": { @@ -3010,7 +2975,7 @@ ] ], [ - 1172, + 1162, [ { "AllocSegment": { @@ -3023,7 +2988,7 @@ ] ], [ - 1210, + 1200, [ { "AllocSegment": { @@ -3036,7 +3001,7 @@ ] ], [ - 1235, + 1225, [ { "TestLessThanOrEqual": { @@ -3058,7 +3023,7 @@ ] ], [ - 1293, + 1283, [ { "AllocSegment": { @@ -3071,7 +3036,7 @@ ] ], [ - 1355, + 1345, [ { "FieldSqrt": { @@ -3090,7 +3055,7 @@ ] ], [ - 1365, + 1355, [ { "LinearSplit": { @@ -3119,7 +3084,7 @@ ] ], [ - 1380, + 1370, [ { "FieldSqrt": { @@ -3138,7 +3103,7 @@ ] ], [ - 1390, + 1380, [ { "LinearSplit": { @@ -3167,7 +3132,7 @@ ] ], [ - 1415, + 1405, [ { "RandomEcPoint": { @@ -3195,7 +3160,7 @@ ] ], [ - 1542, + 1532, [ { "AllocSegment": { @@ -3208,7 +3173,7 @@ ] ], [ - 1689, + 1679, [ { "TestLessThan": { @@ -3230,7 +3195,7 @@ ] ], [ - 1693, + 1683, [ { "LinearSplit": { @@ -3259,7 +3224,7 @@ ] ], [ - 1703, + 1693, [ { "LinearSplit": { @@ -3288,7 +3253,7 @@ ] ], [ - 1829, + 1819, [ { "TestLessThanOrEqual": { @@ -3310,7 +3275,7 @@ ] ], [ - 1861, + 1851, [ { "SystemCall": { @@ -3325,7 +3290,7 @@ ] ], [ - 1903, + 1893, [ { "AllocSegment": { @@ -3338,7 +3303,7 @@ ] ], [ - 1922, + 1912, [ { "TestLessThanOrEqual": { @@ -3360,7 +3325,7 @@ ] ], [ - 1959, + 1949, [ { "AllocSegment": { @@ -3373,7 +3338,7 @@ ] ], [ - 1995, + 1985, [ { "TestLessThan": { @@ -3401,7 +3366,7 @@ ] ], [ - 1999, + 1989, [ { "LinearSplit": { @@ -3430,7 +3395,7 @@ ] ], [ - 2021, + 2011, [ { "TestLessThanOrEqual": { @@ -3455,7 +3420,7 @@ ] ], [ - 2035, + 2025, [ { "TestLessThan": { @@ -3477,7 +3442,7 @@ ] ], [ - 2045, + 2035, [ { "TestLessThanOrEqual": { @@ -3502,7 +3467,7 @@ ] ], [ - 2068, + 2058, [ { "AllocSegment": { @@ -3515,7 +3480,7 @@ ] ], [ - 2089, + 2079, [ { "AllocSegment": { @@ -3528,7 +3493,7 @@ ] ], [ - 2110, + 2100, [ { "AllocSegment": { @@ -3801,218 +3766,212 @@ ] ], [ - 895, - [ - "memory[ap + 0] = memory[ap + -5] < memory[ap + -1]" - ] - ], - [ - 910, + 901, [ "memory[ap + 0] = memory[ap + -3] < memory[ap + -1]" ] ], [ - 934, + 925, [ "memory[ap + 0] = segments.add()" ] ], [ - 975, + 966, [ "memory[ap + 0] = segments.add()" ] ], [ - 993, + 984, [ "memory[ap + 0] = segments.add()" ] ], [ - 1033, + 1023, [ "memory[ap + 0] = 11330 <= memory[fp + -8]" ] ], [ - 1109, + 1099, [ "memory[ap + 0] = segments.add()" ] ], [ - 1133, + 1123, [ "syscall_handler.syscall(syscall_ptr=memory[fp + -5])" ] ], [ - 1147, + 1137, [ "syscall_handler.syscall(syscall_ptr=memory[ap + -2])" ] ], [ - 1158, + 1148, [ "memory[ap + 0] = segments.add()" ] ], [ - 1172, + 1162, [ "memory[ap + 0] = segments.add()" ] ], [ - 1210, + 1200, [ "memory[ap + 0] = segments.add()" ] ], [ - 1235, + 1225, [ "memory[ap + 0] = 4340 <= memory[fp + -7]" ] ], [ - 1293, + 1283, [ "memory[ap + 0] = segments.add()" ] ], [ - 1355, + 1345, [ "\nfrom starkware.crypto.signature.signature import FIELD_PRIME\nfrom starkware.python.math_utils import is_quad_residue, sqrt\n\nval = memory[ap + -4]\nif is_quad_residue(val, FIELD_PRIME):\n memory[ap + 0] = sqrt(val, FIELD_PRIME)\nelse:\n memory[ap + 0] = sqrt(val * 3, FIELD_PRIME)\n" ] ], [ - 1365, + 1355, [ "\n(value, scalar) = (memory[ap + -3], 5316911983139663648412552867652567040)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] ], [ - 1380, + 1370, [ "\nfrom starkware.crypto.signature.signature import FIELD_PRIME\nfrom starkware.python.math_utils import is_quad_residue, sqrt\n\nval = memory[ap + -4]\nif is_quad_residue(val, FIELD_PRIME):\n memory[ap + 0] = sqrt(val, FIELD_PRIME)\nelse:\n memory[ap + 0] = sqrt(val * 3, FIELD_PRIME)\n" ] ], [ - 1390, + 1380, [ "\n(value, scalar) = (memory[ap + -3], 5316911983139663648412552867652567040)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] ], [ - 1415, + 1405, [ "\nfrom starkware.crypto.signature.signature import ALPHA, BETA, FIELD_PRIME\nfrom starkware.python.math_utils import random_ec_point\n(memory[ap + 4], memory[ap + 5]) = random_ec_point(FIELD_PRIME, ALPHA, BETA)\n", "\nif '__boxed_segment' not in globals():\n __boxed_segment = segments.add()\nmemory[ap + 6] = __boxed_segment\n__boxed_segment += 2\n" ] ], [ - 1542, + 1532, [ "memory[ap + 0] = segments.add()" ] ], [ - 1689, + 1679, [ "memory[ap + 4] = memory[ap + -1] < 3618502788666131106986593281521497120414687020801267626233049500247285301248" ] ], [ - 1693, + 1683, [ "\n(value, scalar) = (memory[ap + 3], 313594649253062377472)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -2] = x\nmemory[ap + -1] = y\n" ] ], [ - 1703, + 1693, [ "\n(value, scalar) = (memory[ap + -2], 10633823966279326983230456482242756608)\nx = min(value // scalar, 340282366920938463463374607431768211455)\ny = value - x * scalar\nmemory[ap + -1] = x\nmemory[ap + 0] = y\n" ] ], [ - 1829, + 1819, [ "memory[ap + 0] = 13470 <= memory[fp + -8]" ] ], [ - 1861, + 1851, [ "syscall_handler.syscall(syscall_ptr=memory[fp + -7])" ] ], [ - 1903, + 1893, [ "memory[ap + 0] = segments.add()" ] ], [ - 1922, + 1912, [ "memory[ap + 0] = 1670 <= memory[fp + -7]" ] ], [ - 1959, + 1949, [ "memory[ap + 0] = segments.add()" ] ], [ - 1995, + 1985, [ "memory[ap + 0] = (memory[ap + -1] + 0) % PRIME < 4294967296" ] ], [ - 1999, + 1989, [ "\n(value, scalar) = (memory[ap + -1], 10633823966279327296825105735305134080)\nx = min(value // scalar, 340282366920938463463374607431768211454)\ny = value - x * scalar\nmemory[ap + 0] = x\nmemory[ap + 1] = y\n" ] ], [ - 2021, + 2011, [ "memory[ap + 0] = memory[ap + -1] <= memory[ap + -2]" ] ], [ - 2035, + 2025, [ "memory[ap + -1] = memory[ap + 0] < 4294967296" ] ], [ - 2045, + 2035, [ "memory[ap + 0] = memory[ap + -1] <= memory[ap + -2]" ] ], [ - 2068, + 2058, [ "memory[ap + 0] = segments.add()" ] ], [ - 2089, + 2079, [ "memory[ap + 0] = segments.add()" ] ], [ - 2110, + 2100, [ "memory[ap + 0] = segments.add()" ] diff --git a/crates/cairo-lang-starknet/test_data/account__account.contract_class.json b/crates/cairo-lang-starknet/test_data/account__account.contract_class.json index f1c678feca9..d7d4c0df147 100644 --- a/crates/cairo-lang-starknet/test_data/account__account.contract_class.json +++ b/crates/cairo-lang-starknet/test_data/account__account.contract_class.json @@ -191,8 +191,8 @@ "0x2e", "0x2d", "0x73746f726167655f726561645f73797363616c6c", - "0x61727261795f676574", "0x2b", + "0x61727261795f676574", "0x2a", "0x27", "0x26", @@ -231,7 +231,7 @@ "0x7533325f7472795f66726f6d5f66656c74323532", "0x61727261795f736c696365", "0x7533325f6f766572666c6f77696e675f737562", - "0x687", + "0x686", "0xffffffffffffffff", "0x86", "0x77", @@ -279,7 +279,7 @@ "0x26a", "0x28d", "0x284", - "0x36a", + "0x369", "0x2e9", "0x64", "0x65", @@ -288,28 +288,28 @@ "0x69", "0x6a", "0x6b", - "0x35e", + "0x35d", "0x6c", "0x6d", + "0x34b", "0x6e", - "0x34d", "0x6f", + "0x33a", "0x70", - "0x33c", "0x71", "0x72", - "0x334", + "0x332", "0x73", "0x74", - "0x329", + "0x327", "0x75", "0x76", "0x78", "0x79", - "0x3a9", + "0x3a8", "0x7a", "0x7b", - "0x383", + "0x382", "0x7c", "0x7d", "0x7e", @@ -317,20 +317,20 @@ "0x80", "0x81", "0x82", - "0x3a1", + "0x3a0", "0x83", "0x84", - "0x397", + "0x396", "0x85", "0x87", "0x88", "0x89", - "0x42b", + "0x42a", "0x8a", "0x8b", - "0x41b", - "0x410", - "0x3f3", + "0x41a", + "0x40f", + "0x3f2", "0x8c", "0x8d", "0x8e", @@ -338,21 +338,21 @@ "0x90", "0x91", "0x92", - "0x408", + "0x407", "0x93", "0x94", "0x95", "0x96", "0x97", - "0x46b", + "0x46a", "0x98", "0x99", - "0x461", + "0x460", "0x9a", "0x9b", "0x9c", "0x9d", - "0x45a", + "0x459", "0x9e", "0x9f", "0xa0", @@ -360,98 +360,98 @@ "0xa2", "0xa3", "0xa4", - "0x489", + "0x488", "0xa5", "0xa6", "0xa7", "0xa8", "0xa9", - "0x49d", - "0x4b1", + "0x49c", + "0x4b0", "0xaa", - "0x555", + "0x554", "0xab", - "0x548", + "0x547", "0xac", "0xad", "0xae", - "0x53a", + "0x539", "0xaf", "0xb1", "0xb2", "0xb3", - "0x52c", + "0x52b", "0xb4", - "0x521", + "0x520", "0xb5", "0xb6", - "0x4ee", - "0x4eb", + "0x4ed", + "0x4ea", "0xb7", "0xb8", "0xb9", - "0x4ef", + "0x4ee", "0xba", "0xbb", "0xbc", "0xbd", - "0x501", + "0x500", "0xbe", "0xbf", - "0x517", - "0x514", - "0x519", - "0x56a", + "0x516", + "0x513", + "0x518", + "0x569", "0xc0", "0xc1", - "0x56f", + "0x56e", "0xc2", "0xc3", "0xc4", - "0x5b2", + "0x5b1", "0xc5", - "0x5ae", - "0x57f", - "0x584", - "0x5a6", + "0x5ad", + "0x57e", + "0x583", + "0x5a5", "0xc6", "0xc7", - "0x59f", + "0x59e", "0xc8", "0xc9", - "0x596", + "0x595", "0xca", "0xcb", "0xcc", "0xcd", "0xcf", "0xd0", - "0x5b6", - "0x5e7", + "0x5b5", + "0x5e6", "0xd1", - "0x5de", + "0x5dd", "0xd2", "0xd3", "0xd4", "0xd5", - "0x5d3", + "0x5d2", "0xd7", "0xd8", "0xd9", "0xda", - "0x611", - "0x608", - "0x626", - "0x62b", - "0x67d", + "0x610", + "0x607", + "0x625", + "0x62a", + "0x67c", "0xdb", - "0x674", + "0x673", "0xdc", "0xdd", - "0x667", + "0x666", "0xde", - "0x658", - "0x64c", + "0x657", + "0x64b", "0xdf", "0xe0", "0xe1", @@ -462,15 +462,15 @@ "0x19c", "0x24f", "0x2b7", - "0x374", - "0x3b8", - "0x436", - "0x47a", - "0x561", - "0x5bc", - "0x5f6", - "0x61f", - "0x3987", + "0x373", + "0x3b7", + "0x435", + "0x479", + "0x560", + "0x5bb", + "0x5f5", + "0x61e", + "0x397c", "0x500a1309044200f028281c0602834180b028281208038180a04018080200", "0x483c100e8482a100e01434050b04830100d81434050c84830170b0482a10", "0x180a040186c0a060289424180b8904622028840a20090782e0f0287c0a16", @@ -505,8 +505,8 @@ "0x15043b028150a5e028150a600281502600281508b1028150412580495eae", "0x298340502a948e0502a14b00502a14a80502a14b20502a04b20502a10be05", "0x2d40a05452540a05410140e950281d16b4028150e1259ac80a05438180a05", - "0x2dc280502a78340502a4824b6250140a9e5a8140a815a8140a855a8140a92", - "0x1100a054a1180a0540ae40a054a07c1e0549ae00a05439c00a05410180a05", + "0x21c280502a78340502a4824b6250140a9e5a8140a815a8140a855a8140a92", + "0x1100a054a1180a0540ae40a054a07c1e05499c00a05410180a055c2dc0a05", "0x2f40c0502a95780502a1c24074a8140e8b3b0140a8a5d8140a875d0140a87", "0x1526be028150a9f02815041203a7c0a07459b80a05450480e6c0281d1612", "0x140e8b09305800502a1c160502a247a0502a507e0502a057e0502a50440f", @@ -539,8 +539,8 @@ "0x26c7a0b03b800e3b0d8681ec7090ec0ae0028ec0a31090ec0ae0028485c12", "0xd824bb5e01dc0055f01468125f015c005093182412700142407092fc7e07", "0x3800a3d02b28240502b800a0502b2c240b02b800a0b028502412700157805", - "0x4970b923111741a70015760f1e814161a628481e05700141e05640487a05", - "0x1280ac0092d00ae0028498812093800a12038496a05341280ae003ae00ac3", + "0x496eb923111741a70015760f1e814161a628481e05700141e05640487a05", + "0x1280ac0092d00ae0028498812093800a12038496a05341280ae003adc0ac3", "0x149e0505848b04f03b800a4d028ec244d02b800ab25a01dae1259015c005", "0x48980570014a6055f848a60570014a8051f848a80570014b0051e84824e0", "0x2e40ac8091180ae0029180aca091100ae0029100acb092e80ae002ae80a14", @@ -582,8 +582,8 @@ "0x698a1207815c00507815901263015c00563015941202815c005028159612", "0x480e125e015d4be02b800ebf02b0c24bf1f8f4163b0d3800ac007b180ac7", "0x1100ae002ae976076b8497405700157c056004976057001424c409049c005", - "0x147e125c015c0055c8147a12093800a460282c24b92301dc005220147612", - "0x3800a0b02b2c243b02b800a3b0285024b502b800a4a02afc244a02b800ab8", + "0x147e125b815c0055c8147a12093800a460282c24b92301dc005220147612", + "0x3800a0b02b2c243b02b800a3b0285024b502b800a4a02afc244a02b800ab7", "0x156a05700156a05728487e05700147e05640487a05700147a05650481605", "0x15c0051d81428125a015c0055e0159812093800a12038496a3f1e82c761a", "0x394243f02b800a3f02b20243d02b800a3d02b28240b02b800a0b02b2c243b", @@ -603,8 +603,8 @@ "0x4824e0028480e12108700eeb0d8680ee00381c24070284824e0028482412", "0x3800e1f02868241a02b800a1a0285024127001424460907c0ae0028500a0f", "0x15c0051101442126c015c005620157212093800a12038480c05763104407", - "0x15c005092d4241270014240709049da0509128242c02b800ad802ae024d7", - "0x2c8242c02b800acc02ae024d702b800a060288424cc02b800acf02ad024cf", + "0x15c005092d4241270014240709049da0509128242c02b800ad802adc24d7", + "0x2c8242c02b800acc02adc24d702b800a060288424cc02b800acf02ad024cf", "0x3800acb0286c241270014244d09049c0050901c24ca02bb996057001c5805", "0x50243102b800ac802960242e02b800ad7028f424e502b800a12278499005", "0x15ca05298485c05700145c052a0483605700143605650483405700143405", @@ -616,8 +616,8 @@ "0x1180ae002ae8880767848880570014242c092e80ae002aed78076b8497605", "0x15941202815c00502815961263815c0056381428125c815c005230159812", "0x3d8c05638680ab902b800ab902b94240f02b800a0f02b2024c602b800ac6", - "0x3800ab8028c424b802b800a121704824e002af80a1f09049c0050901c24b9", - "0x1424c609049c0050901c24b25a01de4b52501dc0075c3198e0f638497005", + "0x3800ab7028c424b702b800a121704824e002af80a1f09049c0050901c24b9", + "0x1424c609049c0050901c24b25a01de4b52501dc0075bb198e0f638496e05", "0x1280ae0029280a1409049c005278146c122c13c0ee0029340a34091340ae0", "0x698a1207815c0050781590125a815c0055a815941202815c005028159612", "0x480e122f015e65f02b800e5902b0c245923930a6540d3800a5807ad40a4a", @@ -648,9 +648,9 @@ "0x3d4381b03b800e050901c0a12093800a120904824e00284962120d015c005", "0x6c0a1409049c00509118242202b800a0f0283c24127001424070907c4207", "0x140c055c84824e0028480e126c015ec066201dc0071101434120d815c005", - "0x1c24127b814244a0933c0ae002b5c0ab8090b00ae002b100a210935c0ae0", + "0x1c24127b814244a0933c0ae002b5c0ab7090b00ae002b100a210935c0ae0", "0xb00ae002b600a210932c0ae002b300ab4093300ae0028496a12093800a12", - "0x1342412700142407093200af865015c00767815641267815c005658157012", + "0x1342412700142407093200af865015c00767815641267815c005658156e12", "0xc40ae0028b00a3d090b80ae0028489e1272815c005650143612093800a12", "0x14a8120e015c0050e01594120d815c0050d814281263815c00572814b012", "0xc4381b0d13024c702b800ac702b60242e02b800a2e0294c243102b800a31", @@ -659,9 +659,9 @@ "0x2fc0a1f09049c0050901c24bc02bed7cbf03b800e3f02868243f02b800ac0", "0x498812093800a0b0297824127001434055684824e002af80a2209049c005", "0x15c0055d2ec0ed7092e80ae002ae80ad8092e80ae0028480c125d815c005", - "0x5024b802b800ab902b3024b902b800a442301d9e1223015c005090b02444", - "0x157005728480e05700140e05640486805700146805650498c05700158c05", - "0x3800a121704824e002af00a1f09049c0050901c24b8038d18c1402ae00ae0", + "0x5024b702b800ab902b3024b902b800a442301d9e1223015c005090b02444", + "0x156e05728480e05700140e05640486805700146805650498c05700158c05", + "0x3800a121704824e002af00a1f09049c0050901c24b7038d18c1402adc0ae0", "0x1c244d5901df8b45a81dc007250d18c0f638489405700149405188489405", "0x2d00ae002ad00aca092d40ae002ad40a140913c0ae0028498c12093800a12", "0x51c0050593c0eb45a8695c1205815c00505814a61203815c005038159012", @@ -713,7 +713,7 @@ "0x1488055f84888057001574051f84974057001576051e84824e002af00a0b", "0x2c0ae00282c0ac8090ec0ae0028ec0aca090c40ae0028c40a14091180ae0", "0x2e40ae0028485812093800a12038488c0b1d8c4280523015c00523015ca12", - "0x328243102b800a3102850244a02b800ab802b3024b802b800abf5c81d9e12", + "0x328243102b800a3102850244a02b800ab702b3024b702b800abf5c81d9e12", "0xfc7a310a0149405700149405728487e05700147e05640487a05700147a05", "0x15c005092f824b502b800a126204824e0028180a1c09049c0050901c244a", "0x33c244d02b800a121604964057001568b503b5c24b402b800ab402b6024b4", @@ -742,281 +742,281 @@ "0x4888057001574058884974057001578bb03b3c24bb02b800a12160497805", "0x6c0ac8090680ae0028680aca090140ae0028140acb090480ae0028480a14", "0x260241270014240709110361a02848340522015c0052201624120d815c005", - "0x1570057184894b803b800ab902c5024b902b800a4602c4c244602b800a12", + "0x156e057184894b703b800ab902c5024b902b800a4602c4c244602b800a12", "0x4964057001568054b8496805700156a058b0496a057001494058a84824e0", "0x6c34148b84964057001564053b0489a05700149a053d0489a05700142496", "0x1640ee002b940b1909049c0050901c24472614c1f182a1609e0f7001d644d", - "0x14f41230015c0052d01634122d015c0052f8141e122f015c00509258245f", - "0x3800a5402b60245802b800a5802b20244f02b800a4f02b28245e02b800a5e", - "0x155a058e84824e0028480e125701638ad5881dc0072f180240f8d848a805", - "0x49c005548148812542a40ee0029640b190918c0ae002ab40a1b092b40ae0", - "0x1980a7a092900ae0029a00b1a091a00ae002aa00a0f091980ae00284a3c12", - "0x48d8058fa88d4077001ccca45883e361231815c00531815b01233015c005", - "0x3800a6302960246e02b800aa20286c24a202b800aa202c742412700142407", - "0x480a05700140a0565848d40570014d4050a048e00570014dc052c0493e05", - "0x1c00ad80927c0ae002a7c0ad8091500ae0029500ad8090b80ae0028b80ad8", - "0x25c0ae003a600b2109261329b07b800a704f9505c053506e401238015c005", - "0x164a7602b800e7a02c90247a02b800a9702c8c2412700142407092580b22", - "0x15c00509498249002b800a126204824e0029d80a5a09049c0050901c2495", - "0x33c248802b800a12160491805700151a9003b5c248d02b800a8d02b60248d", - "0x2640acb0926c0ae002a6c0a14090000ae002a380b11092380ae002a311007", - "0x15c0050001624122c015c0052c015901227815c0052781594124c815c005", - "0x15c0050949c2412700152a052d04824e0028480e12001609e994d8680a00", - "0x32c249b02b800a9b02850250102b800b0002ca0250002b800ae402b8824e4", - "0x16020589048b00570014b005640489e05700149e05650493205700153205", - "0x14281281015c0054b0162212093800a120384a025827a65361a02c040ae0", - "0x3800a5802b20244f02b800a4f02b28249902b800a9902b2c249b02b800a9b", - "0x18c0a1c09049c0050901c25022c13d329b0d016040570016040589048b005", - "0x4a521281815c005093102412700145c050e04824e0029500a1c09049c005", - "0x15c005090b0250502b800b048181dae1282015c00582015b01282015c005", - "0x48d80570014d8050a04a1005700160e058884a0e05700160b0603b3c2506", - "0x4200b12091600ae0029600ac80913c0ae00293c0aca090140ae0028140acb", - "0x143812093800a5902910241270014240709420b04f029b0340584015c005", - "0x360251102b800a129484a12057001424c409049c005170143812093800a54", - "0x44a26076784a260570014242c094480ae002c4612076b84a2205700162205", - "0x15c00502815961257015c00557014281271815c0058a01622128a015c005", - "0x680ae302b800ae302c48245802b800a5802b20244f02b800a4f02b282405", - "0xb02412700145c050e04824e002b940a4409049c0050901c24e32c13c0aae", - "0x1424050a04a2e05700162c058884a2c05700148f1503b3c251502b800a12", - "0x1300ae0029300ac80914c0ae00294c0aca090140ae0028140acb090480ae0", - "0x15c005090b024127001424070945c98530284834058b815c0058b8162412", - "0x4824057001424050a04a36057001634058884a340570014451903b3c2519", - "0x46c0b120907c0ae00287c0ac8090840ae0028840aca090140ae0028140acb", - "0x6c34077001c0a1203814241270014244d0946c3e210284834058d815c005", - "0x680ae0028680a140907c28077001428059584824e0028480e12108700f2a", - "0x3c0b2e09049c0050a0143812093800a1203848440596849c0070f8165812", - "0x3800a1a0285024d802b800a0602cc0240602b800ac40381e5e1262015c005", - "0x14240709360361a07815b00570015b005988483605700143605650483405", - "0x4cc240702b800a0702950241a02b800a1a0285024127001444059904824e0", - "0x4d82412700142407093300b3567815c0071601668121635c0ee00281c3407", - "0x1e7212093800a1203849ca059c3200ae003b280b37093299607700159e05", - "0x15ae050a0498e0570014621403ce8243102b800a12708485c0570015900f", - "0xb80ae0028b80a530932c0ae002b2c0a540906c0ae00286c0aca0935c0ae0", - "0xd868c6078146c346303dc005638b9961b6b868981263815c00563815b012", - "0x15c005728167612093800a0f0297824127001428050e04824e0028480e12", - "0x49ae0570015ae050a0498005700158605980498605700158acb03cbc24c5", - "0x4824e0028480e126006dae0f02b000ae002b000b310906c0ae00286c0aca", - "0x3800ad702850243b02b800acc02cf02412700141e052f04824e0028500a1c", - "0x142407090ec36d707814760570014760598848360570014360565049ae05", - "0x1424c409049c005038148812093800a0f0297824127001428050e04824e0", - "0xfc0ae0028f416076b8487a05700147a056c0487a057001424be0902c0ae0", - "0x1428125e015c0055f01678125f015c0051fafc0ecf092fc0ae0028485812", - "0x4978210e03c0abc02b800abc02cc4242102b800a2102b28241c02b800a1c", - "0x49c0050901c24220f8841f3d0e06c340f7001c0e0503a40241270014244d", - "0xb1aed803069c00562015101262015c0050e01518120e015c0050e0151a12", - "0x159e050e04824e0028b00a0009049c0056c0167c12093800a0602a3824cf", - "0x4834057001434056504998057001598056c049980570015ae059f84824e0", - "0x680e9009049c0050901c24cb02d0024e003b300b2c0906c0ae00286c0ac8", - "0x49ca0570015ca054684824e0028480e12638c45c0fa0b9590ca07b800e1b", - "0x4824e0028d00a8e0930186c51b0d034e002b180a88093180ae002b940a8c", - "0x15c0051b015c812093800ac00287024127001586050004824e002b140a00", - "0x2e48c445d2ed78be5f8fc7a0b6c3800a3b02c04243b02b800a3602c002436", - "0x2f80a1c09049c0055f8148812093800a3f02c082412700147a050004894b8", - "0x160412093800aba02c0c24127001576050e04824e002af00a1c09049c005", - "0x11024127001570058204824e002ae40b0409049c005230148812093800a44", - "0x3800ac802b2024ca02b800aca02b28240b02b800a0b02b602412700149405", - "0x1782412700141e051b04824e0028480e125a81684127001c1605960499005", - "0x2c80ae002ac80ad8092c80ae00284a86125a015c005093102412700142805", - "0x510245802b800a4d2781d9e1227815c005090b0244d02b800ab25a01dae12", - "0x1590056404994057001594056504824057001424050a048a80570014b005", - "0x2d40b3209049c0050901c2454643282414029500ae0029500b45093200ae0", - "0x4994057001594056504824057001424050a048a60570014254609049c005", - "0x4835480914c0ae00294c0b47090500ae0028500a53093200ae002b200ac8", - "0x3800a1203848b405a51780ae00397c0b490917cb24726051c0052985190ca", - "0x5302412700155a052d04824e0029800a5e092b5626007b800a5e02d2c2412", - "0x11c0aca091300ae0029300a140918c0ae002ab80b4d092b80ae002ac41e07", - "0x48c65923930280531815c005318168a122c815c0052c815901223815c005", - "0x15c00526014281254815c0052d0168812093800a0f028d82412700142407", - "0x500aa902b800aa902d14245902b800a5902b20244702b800a4702b28244c", - "0x485812093800a0f028d824127001428052f04824e0028480e12549648e4c", - "0x3800a1202850246802b800a6602d10246602b800ac75401d9e1254015c005", - "0x14d00570014d005a28486205700146205640485c05700145c05650482405", - "0xd824127001428052f04824e002b2c0b3209049c0050901c2468188b82414", - "0x1a80ae0029a80ad8091a80ae00284a9c1252015c005093102412700141e05", - "0x510246e02b800aa23601d9e1236015c005090b024a202b800a6a5201dae12", - "0x1436056404834057001434056504824057001424050a0493e0570014dc05", - "0x500a5e09049c0050901c249f0d868241402a7c0ae002a7c0b450906c0ae0", - "0x49360570014447003b3c247002b800a121604824e00283c0a3609049c005", - "0x7c0ac8090840ae0028840aca090480ae0028480a14092640ae002a6c0b44", - "0x2c4241a02b800a12a7849321f1084828054c815c0054c8168a120f815c005", - "0x480e120f8840f500e06c0ee00381424070284824e0028489a12093800a12", - "0x500ee0038880b520906c0ae00286c0a14090880ae00281c0b5109049c005", - "0x49b00570015b0052a049b005700158805aa04824e0028480e1203016a6c4", - "0x160c1267815c005160141e1216015c0056b816aa126bb600ee002b600b05", - "0x15960f03b5c24cb02b800acb02b6024cb02b800acc02a8824cc02b800acf", - "0x700ae0028700aca0906c0ae00286c0a14093200ae002b600b55093280ae0", - "0x55c241402b800a140d01eac1265015c005650153e1264015c00564014a812", - "0x3800a12038498c05ac31c0ae0038c40a9b090c45ce507b800aca640703614", - "0x502412700158a052d0498a3603b800ac702a64243402b800a14029b02412", - "0x146c054f8486805700146805370485c05700145c0565049ca0570015ca05", - "0x49c0050901c243b6030c1e051db01860f700146c34173942870090d80ae0", - "0xb80aca093940ae002b940a140902c0ae002b180b5a09049c0050a016b212", - "0x180b5909049c0050901c240b173941e0505815c00505816b61217015c005", - "0x487e05700147a0f03d74243d02b800a125a84824e0028680b5c09049c005", - "0x2fc0b5b090700ae0028700aca0906c0ae00286c0a14092fc0ae0028fc0b5e", - "0x141e050584824e0028680b5c09049c0050901c24bf0e06c1e055f815c005", - "0x2f00ad8092f00ae0028497c125f015c005093102412700140e05af84824e0", - "0x3800abb5d01d9e125d015c005090b024bb02b800abc5f01dae125e015c005", - "0x483e05700143e056504842057001442050a0488c05700148805ad0488805", - "0x3800e1b02cb0241b0d01dc0050d01656122307c420f029180ae0029180b5b", - "0x143812093800a070287024127001434050e04824e0028480e120e016c012", - "0x483e05700144205b084842057001424b509049c005078143812093800a14", - "0x140acb090480ae0028480a14093100ae0028880b63090880ae00287c0b62", - "0x700b3209049c0050901c24c4028481e0562015c00562016c81202815c005", - "0x15c005033600f3a093603407700143405958480c0570014256509049c005", - "0x702412700142407090b00b66093800ed702cb024d702b800ad702b6024d7", - "0x4824e00283c0a1c09049c0050a0143812093800a07028702412700143405", - "0x159605b18499605700159805b10499805700159e05b08499e057001424b5", - "0x3280ae002b280b64090140ae0028140acb090480ae0028480a14093280ae0", - "0x4ac24c802b800a12b284824e0028b00b3209049c0050901c24ca028481e05", - "0x16581217015c00517015b01217015c005643940f3a093942807700142805", - "0x49c005038143812093800a1a028702412700142407090c40b67093800e2e", - "0x3800ac702d8424c702b800a125a84824e00283c0a1c09049c0050a0143812", - "0x4824057001424050a0486c05700146805b18486805700158c05b10498c05", - "0x4824e0028480e121b014240f028d80ae0028d80b64090140ae0028140acb", - "0x4ac2412700142407093000b6961b140ee00383c2407b404824e0028c40b32", - "0x16d63d0581dc0071db140f680930c0ae002b0c0b6a090ec2807700142805", - "0x3800abf02b6024be02b800a12b68497e0570014256c09049c0050901c243f", - "0x487a05700147a05b504816057001416050a0497c05700157c056c0497e05", - "0x2ec0ae8092ec0ae00284ae012093800a1203848256f5e015c0075f2fc0f6e", - "0x5a8244602b800a4602dc824462201dc0051e86974050a5c424ba5d81dc005", - "0x480e12095d172057001c8c05b98488805700148805658497805700157805", - "0x2ec0ee002aec0ae809049c005250143812252e00ee002ae40b7509049c005", - "0x5c8244f2681dc0056185176b40a5c424b25a01dc0055e01d6a440a5c424b5", - "0x1c9e05b98489a05700149a05658496405700156405b90489e05700149e05", - "0x1dc0052c016ee122a2c80ee002ac80ae809049c0050901c2412bb1600ae0", - "0x11c0ae0039300b73091300ae0029300b72091300ae00294ca807bc048a658", - "0x165612093800a5f02870245f2c81dc00523816ea12093800a12038482579", - "0x1680b2c091680ae0029680ad8091680ae002978b2079d048bcb803b800ab8", - "0x4824e002ac80b7b09049c0055c0143812093800a1203848c005bd049c007", - "0x3800aad02d8824ad02b800ab102df424b102b800a125a84824e0029600b7c", - "0x489a05700149a056584816057001416050a048c605700155c05b18495c05", - "0x128241270014c0059904824e0028480e1231934160f0298c0ae00298c0b64", - "0x495005700155205c0049520570014b005bf84824e0028480e12095f80a12", - "0x2e00a1c09049c0050901c246602e0c24e003aa00b82092a00ae002aa00b81", - "0x15b01252015c00509610246802b800a126204824e002ac80b7b09049c005", - "0x14d4a203b3c24a202b800a1216048d40570015486803b5c24a402b800aa4", - "0x1340ae0029340acb0902c0ae00282c0a14091b80ae0029b00b85091b00ae0", - "0x15c005332c80f7809049c0050901c246e2682c1e0537015c00537016c812", - "0x5d424127001424070904b0c7002b800e9f02dcc249f02b800a9f02dc8249f", - "0x2600ad8092600ae002ae136079d04824e002a640a1c09265360770014e005", - "0x2580ae0028496a12093800a12038492e05c3849c0074c01658124c015c005", - "0x1428124a815c0053b016c6123b015c0053d016c4123d015c0054b016fa12", - "0x492a4d0583c0a9502b800a9502d90244d02b800a4d02b2c240b02b800a0b", - "0x143812093800a12038482588028489412093800a9702cc82412700142407", - "0x2300ae002a340b62092340ae002a400b61092400ae0028496a12093800ab8", - "0x16c81226815c00526815961205815c00505814281244015c00546016c612", - "0x2c80b7b09049c0055c0143812093800a1203849104d0583c0a8802b800a88", - "0x49c805700140005b10480005700151c05b08491c057001424b509049c005", - "0x4000b64091340ae0029340acb0902c0ae00282c0a14094000ae002b900b63", - "0x158605be04824e002aec0b7b09049c0050901c25002682c1e0580015c005", - "0x1424b509049c005038143812093800abc02df024127001428050e04824e0", - "0x4100ae002c0c0b630940c0ae002c080b62094080ae002c040b61094040ae0", - "0x2c1e0582015c00582016c81222015c00522015961205815c005058142812", - "0x1428050e04824e002b0c0b7c09049c005038143812093800a120384a0844", - "0x4140b61094140ae0028496a12093800a3d02df024127001434050e04824e0", - "0x15c00505814281284015c00583816c61283815c00583016c41283015c005", - "0x3800a120384a10050583c0b0802b800b0802d90240502b800a0502b2c240b", - "0x1428050e04824e002b0c0b7c09049c005038143812093800a1a028702412", - "0x58c251202b800b1102d88251102b800b0902d84250902b800a125a84824e0", - "0x162605b20480a05700140a05658487e05700147e050a04a2605700162405", - "0x3800a070287024127001434050e04824e0028480e12898147e0f02c4c0ae0", - "0x38c0b620938c0ae002c500b61094500ae0028496a12093800a14028702412", - "0x15c00502815961260015c0056001428128b015c0058a816c6128a815c005", - "0x1c0e050d0480e05700140a050784a2c056003c0b1602b800b1602d902405", - "0x3800a1b02960241b02b800a140286c2412700142407090680b890a03c0ee0", - "0x484405700144205c58483e05700141e05108484205700143805c50483805", - "0x480c05700158805c684988057001424b509049c0050901c2412c6014244a", - "0x147a126c07c0ee00287c0b8e090880ae0028180b8b0907c0ae0028680a21", - "0xb02407c884824e0028480e1267817202c02b800e2202e3c24d702b800ad8", - "0x3800acc02850241270015ae052204824e0028480e126501724cb6601dc007", - "0x15c005728143612093800a12038485c05c9b9590077001c3e050d0499805", - "0x62c243402b800ac80288424c602b800ac702e2824c702b800a31029602431", - "0x63424c502b800a125a84824e0028480e12096500a12250486c05700158c05", - "0x1468051e8486c05700158605c58486805700145c05108498605700158a05", - "0x15c005660142812093800a12038481605ca8ec0ae0038d80b8f093000ae0", - "0x2fc0ae0038fc0b97090fc7a077001580cc03e5824c002b800ac00295024cc", - "0x66d74057001d7605cd04976bc03b800abf02e642412700142407092f80b98", - "0x497205700148c05ce8488c0570015743b6583f3812093800a12038488805", - "0x15d4121e815c0051e814281225015c0055c0173e125c015c0055caf00f9e", - "0x1476050e04824e002b2c0a0009049c0050901c244a1e81c0a4a02b800a4a", - "0x2c80ae002ad00b9f092d00ae002ad57807cf0496a05700148805d004824e0", - "0x4824e0028480e12590f40e0559015c00559015d4121e815c0051e8142812", - "0x3800a3d02850244d02b800abe02e8424127001596050004824e0028ec0a1c", - "0x49c005658140012093800a12038489a3d038149a05700149a05750487a05", - "0x50245402b800a5802e7c245802b800a4f6001f3c1227815c005058174012", - "0x143e12093800a1203848a8cc03814a80570014a805750499805700159805", - "0x14b412093800a120384825a202848941229815c005650142812093800a1f", - "0x4898057001424b50914c0ae0028480a1409049c0050f8143e12093800acf", - "0x15d4122f815c0052c8173e122c815c00523b5c0f9e0911c0ae0029300ba0", - "0x1f461b0d01dc007028480e0509049c00509134245f2981c0a5f02b800a5f", - "0x174a220f81dc0070781748120d015c0050d0142812093800a1203848421c", - "0x6a0242c6bb601ee0028180ba7090180ae0028880ba609049c0050901c24c4", - "0x143e052984858057001458052a049ae0570015ae056c049b00570015b005", - "0x3800a1203849cac86503f54cb6633c1ee0038b1aed80386c35a90907c0ae0", - "0x4834057001434050a0485c0570015961403ba424cb02b800acb029502412", - "0xb80b470907c0ae00287c0a53093300ae002b300ac80933c0ae002b3c0aca", - "0x1c24346331c6214028d18cc718851c0051707d98cf0d06a901217015c005", - "0x33c243602b800a121604824e0028500a6809049c0050f814bc12093800a12", - "0x3280aca090680ae0028680a140930c0ae002b140bab093140ae002b946c07", - "0x4986c865068280561815c00561817581264015c00564015901265015c005", - "0x147605d704876057001580146203f5a1260015c005092d42412700142407", - "0x1c0ae00281c0ac80906c0ae00286c0aca090680ae0028680a140902c0ae0", - "0x49c00507814bc12093800a120384816070d868280505815c005058175812", - "0x3800a3f02b60243f02b800a125f0487a057001424c409049c0050a014d012", - "0x2f00ae002afd7c07678497c0570014242c092fc0ae0028fc7a076b8487e05", - "0x15901210815c0051081594120e015c0050e01428125d815c0055e0175612", - "0x14241270014244d092ec0e210e0500abb02b800abb02eb0240702b800a07", - "0x484205700140e050784824e0028480e120e06c0faf0d0500ee0038142407", - "0x6c2412700142407093100bb01107c0ee0038840a1a090500ae0028500a14", - "0x3601e076b849b00570015b0056c049b005700140c052c0480c05700144405", - "0x15c0050d01594120a015c0050a014281216015c0050f8147a126b815c005", - "0x3dc0056b8b034140a55c24d702b800ad702a7c242c02b800a2c02950241a", - "0x15c005092d424127001588050f84824e0028480e1265b319e0f02b2d98cf", - "0x4828057001428050a049ca05700159005af049900570015940f03d7424ca", - "0x4824e0028480e1272868280f02b940ae002b940b5b090680ae0028680aca", - "0xc40ae0028497c1217015c005093102412700140e052204824e00283c0a0b", - "0x1d9e1263015c005090b024c702b800a311701dae1218815c00518815b012", - "0x1438056504836057001436050a0486c05700146805ad0486805700158ec6", - "0x14341203815c005028141e121b070360f028d80ae0028d80b5b090700ae0", - "0x3c0a210906c0ae0028500ab909049c0050901c241a02ec4280f03b800e07", - "0x496a12093800a120384825b202848941210815c0050d81570120e015c005", - "0x15c0051101570120e015c0050d014421211015c0050f81568120f815c005", - "0x6cdb0057001c4205590480c057001588051e849881c03b800a1c02e382421", - "0x15b01267815c00516014b01216015c0056c0143612093800a1203849ae05", - "0x148812093800a12038499405dab2d98077001d9e1203ed024cf02b800acf", - "0x1dc005658176c12728700ee0028700b8e093200ae0028492c12093800a06", - "0x1c24c602ee18e3103b800e2e643959814db84990057001590053d0485ccb", - "0x3800acb02ed8243602b800a3402c1824340e01dc0050e0171c12093800a12", - "0x3800ec51b0c41fb90931c0ae002b1c0a21090d80ae0028d80a7a093159607", - "0x17763f1e81dc0076032c38c30a6dc24127001424070902c7607dd3018607", - "0xfc0a3d092f00ae002af80bbc092f80ae002b1c0a3d09049c0050901c24bf", - "0x3800a3d02850244402b800aba02ef824ba02b800abc5d81f7a125d815c005", - "0x49c005638143e12093800a1203848883d038148805700148805df8487a05", - "0x2e48c076b84972057001572056c0497205700142529091180ae0028498812", - "0x15c0055a81780125a815c0055c1280ecf091280ae00284858125c015c005", - "0x49c0050901c24b45f81c0ab402b800ab402efc24bf02b800abf0285024b4", - "0x3800acb02c1024127001438050f84824e002b1c0a1f09049c005058160812", - "0x2c80ed7091340ae0029340ad8091340ae002849ce1259015c005093102412", - "0x3800a5402f00245402b800a4f2c01d9e122c015c005090b0244f02b800a4d", - "0x3800a1203848a63b03814a60570014a605df84876057001476050a048a605", - "0x3800a129484898057001424c409049c0050e0143e12093800acb02c102412", - "0x48be0570014242c091640ae00291c98076b8488e05700148e056c0488e05", - "0x177e1263015c0056301428122d015c0052f01780122f015c0052c97c0ecf", - "0x3800a125a84824e0028700a1f09049c0050901c245a6301c0a5a02b800a5a", - "0x2b80ae002ab40bbe092b40ae002ac40c07de849620570014c005e0848c005", - "0x4824e0028480e12573280e0557015c005570177e1265015c005650142812", - "0x15c00531817821231815c005092d424127001438050f84824e002b5c0a5a", - "0x4824057001424050a048cc05700155005df049500570015520603ef424a9", - "0x1c0a12461a91c8d09068346a47234241a6b9982407029980ae0029980bbf", - "0x68d48e46848354d0a03c0e0509230d48e46848341a352391a120d048280f", - "0x70c1e0702849186a47048281a352382414e10501e0702849186a47234241a", - "0x254d48e468483466352391a120d7101e0702849186a47048281a352382414", - "0x198d48e0906b8c140781c0a124fa38240f030d0348e0906b8a140781c0a12", - "0x6f900f0381424a9470481e0f542382414e38501e0702849486a470482834", - "0x6b9405092fc24070d0480fc90d0501e0702849728d0903c0c06030191a12", - "0x1424a9470481e0f0d2382414e58501e07028498a6a47048282e1a1a91c12", - "0xe681424c40901c341203f301e07" + "0x320244f02b800a4f02b28245a02b800a5e02c68245e02b800a5f0283c245f", + "0x495a058dac4c0077001cb4050d048a80570014a8056c048b00570014b005", + "0x1dc0052c816321257015c005588143612093800a600287c2412700142407", + "0x16341233015c005548141e1254015c00509470241270014c605220495263", + "0x2a0d01207c7424ae02b800aae02b6024a802b800aa8029e8246802b800a66", + "0x14d4050d848d40570014d4058f84824e0028480e12510163c6a5201dc007", + "0x2900ae002a900a140927c0ae0029b00a58091b80ae002ab80a58091b00ae0", + "0x15b0122a015c0052a015b01217015c00517015b01202815c005028159612", + "0x26ce00f700153e6e2a0b80aa40dc80249f02b800a9f02b60246e02b800a6e", + "0x492c057001530059184824e0028480e124b816449802b800e9902c842499", + "0x1424c409049c0053d014b412093800a1203848ec05929e80ae003a580b24", + "0x2340ae002a412a076b84920057001520056c0492005700142526092540ae0", + "0x14281247015c00544016221244015c00546a300ecf092300ae0028485812", + "0x3800a5802b20244f02b800a4f02b28249b02b800a9b02b2c247002b800a70", + "0x1d80a5a09049c0050901c248e2c13d36700d0151c05700151c0589048b005", + "0x4a000570015c80594049c80570014000571048000570014252709049c005", + "0x1600ac80913c0ae00293c0aca0926c0ae002a6c0acb091c00ae0029c00a14", + "0x444241270014240709400b04f4d9c0340580015c0058001624122c015c005", + "0x149e0565049360570015360565848e00570014e0050a04a0205700152e05", + "0x4a025827a6ce01a02c040ae002c040b12091600ae0029600ac80913c0ae0", + "0x4824e0028b80a1c09049c0052a0143812093800aae028702412700142407", + "0x16070203b5c250302b800b0302b60250302b800a129484a04057001424c4", + "0x41c0ae002c180b11094180ae002c120a076784a0a0570014242c094100ae0", + "0x15901227815c00527815941202815c00502815961251015c005510142812", + "0x4824e0028480e12839609e05510680b0702b800b0702c48245802b800a58", + "0x49c005170143812093800a5402870241270014b2052204824e002ab40a1f", + "0x42610076b84a12057001612056c04a1205700142529094200ae0028498812", + "0x15c00589816221289815c00588c480ecf094480ae002848581288815c005", + "0x320244f02b800a4f02b28240502b800a0502b2c241202b800a12028502514", + "0x49c0050901c25142c13c0a120d016280570016280589048b00570014b005", + "0x148ee303b3c24e302b800a121604824e0028b80a1c09049c005728148812", + "0x140ae0028140acb090480ae0028480a14094580ae002c540b11094540ae0", + "0x4834058b015c0058b016241226015c00526015901229815c005298159412", + "0x4a320570014451703b3c251702b800a121604824e0028480e128b130a605", + "0x840aca090140ae0028140acb090480ae0028480a14094680ae002c640b11", + "0x4683e210284834058d015c0058d01624120f815c0050f815901210815c005", + "0x4824e0028480e12108700f2a0d8680ee00381424070284824e0028489a12", + "0x48440596849c0070f81658120d015c0050d01428120f8500ee0028500b2b", + "0x3800ac40381e5e1262015c005078165c12093800a14028702412700142407", + "0x4836057001436056504834057001434050a049b005700140c05980480c05", + "0x5024127001444059904824e0028480e126c06c340f02b600ae002b600b31", + "0x1668121635c0ee00281c3407998480e05700140e052a0483405700143405", + "0x3280b37093299607700159e059b04824e0028480e12660166acf02b800e2c", + "0x3800a12708485c0570015900f03ce42412700142407093940b3864015c007", + "0x6c0ae00286c0aca0935c0ae002b5c0a140931c0ae0028c428079d0486205", + "0x68981263815c00563815b01217015c00517014a61265815c00565814a812", + "0x1428050e04824e0028480e121b0d18c0f028d868c607b800ac71732c36d7", + "0x498605700158acb03cbc24c502b800ae502cec2412700141e052f04824e0", + "0x3000b310906c0ae00286c0aca0935c0ae002b5c0a14093000ae002b0c0b30", + "0x141e052f04824e0028500a1c09049c0050901c24c00db5c1e0560015c005", + "0x48360570014360565049ae0570015ae050a04876057001598059e04824e0", + "0x17824127001428050e04824e0028480e121d86dae0f028ec0ae0028ec0b31", + "0x487a057001424be0902c0ae0028498812093800a07029102412700141e05", + "0x2fc0ecf092fc0ae00284858121f815c0051e82c0ed7090f40ae0028f40ad8", + "0x3800a2102b28241c02b800a1c0285024bc02b800abe02cf024be02b800a3f", + "0x1c0e0503a40241270014244d092f0421c078157805700157805988484205", + "0x1518120e015c0050e0151a12093800a1203848441f1083e7a1c0d8681ee0", + "0x167c12093800a0602a3824cf1635db0060d3800ac402a2024c402b800a1c", + "0x49980570015ae059f84824e002b3c0a1c09049c005160140012093800ad8", + "0x3300b2c0906c0ae00286c0ac8090680ae0028680aca093300ae002b300ad8", + "0xc45c0fa0b9590ca07b800e1b0d01d2012093800a12038499605a0049c007", + "0x3180a88093180ae002b940a8c093940ae002b940a8d09049c0050901c24c7", + "0x1586050004824e002b140a0009049c0051a0151c126030d8a361a069c005", + "0x404243b02b800a3602c00243602b800a3602b9024127001580050e04824e0", + "0x4082412700147a050004894b75c91888ba5daf17cbf1f8f416d8700147605", + "0x4824e002af00a1c09049c0055f0143812093800abf029102412700147e05", + "0x49c005230148812093800a4402c0824127001574058184824e002aec0a1c", + "0x3800a0b02b6024127001494052204824e002adc0b0409049c0055c8160812", + "0x1684127001c1605960499005700159005640499405700159405650481605", + "0x15c0050931024127001428052f04824e00283c0a3609049c0050901c24b5", + "0xb0244d02b800ab25a01dae1259015c00559015b01259015c0050950c24b4", + "0x1424050a048a80570014b005a2048b005700149a4f03b3c244f02b800a12", + "0x1500ae0029500b45093200ae002b200ac8093280ae002b280aca090480ae0", + "0x48a60570014254609049c0055a8166412093800a1203848a8c8650482805", + "0x500a53093200ae002b200ac8093280ae002b280aca090480ae0028480a14", + "0x17cb24726051c0052985190ca0906a901229815c005298168e120a015c005", + "0x2b5626007b800a5e02d2c2412700142407091680b4a2f015c0072f8169212", + "0x2b80b4d092b80ae002ac41e07a604824e002ab40a5a09049c00530014bc12", + "0x15c0052c815901223815c00523815941226015c00526014281231815c005", + "0x3800a0f028d824127001424070918cb247260500a6302b800a6302d142459", + "0x320244702b800a4702b28244c02b800a4c0285024a902b800a5a02d102412", + "0x4824e0028480e12549648e4c0a0155205700155205a2848b20570014b205", + "0x3800ac75401d9e1254015c005090b02412700141e051b04824e0028500a5e", + "0x485c05700145c056504824057001424050a048d00570014cc05a2048cc05", + "0x49c0050901c2468188b82414029a00ae0029a00b45090c40ae0028c40ac8", + "0x15c005093102412700141e051b04824e0028500a5e09049c005658166412", + "0xb024a202b800a6a5201dae1235015c00535015b01235015c0050953824a4", + "0x1424050a0493e0570014dc05a2048dc0570015446c03b3c246c02b800a12", + "0x27c0ae002a7c0b450906c0ae00286c0ac8090680ae0028680aca090480ae0", + "0x4824e00283c0a3609049c0050a014bc12093800a12038493e1b0d0482805", + "0x480a14092640ae002a6c0b440926c0ae002888e00767848e00570014242c", + "0x15c0054c8168a120f815c0050f815901210815c00510815941209015c005", + "0x4824e0028489a12093800a1258848340570014254f092643e21090500a99", + "0x880ae00281c0b5109049c0050901c241f1081ea01c0d81dc007028480e05", + "0x4824e0028480e1203016a6c40a01dc00711016a4120d815c0050d8142812", + "0x16aa126bb600ee002b600b05093600ae002b600a54093600ae002b100b54", + "0x3800acc02a8824cc02b800acf02c1824cf02b800a2c0283c242c02b800ad7", + "0x3200ae002b600b55093280ae002b2c1e076b84996057001596056c0499605", + "0x153e1264015c00564014a8120e015c0050e01594120d815c0050d8142812", + "0xc45ce507b800aca640703614ab848280570014281a03d5824ca02b800aca", + "0x264243402b800a14029b02412700142407093180b5863815c007188153612", + "0x145c0565049ca0570015ca050a04824e002b140a5a093146c07700158e05", + "0x146c34173942870090d80ae0028d80a9f090d00ae0028d00a6e090b80ae0", + "0x3180b5a09049c0050a016b212093800a120384876c06183c0a3b6030c1ee0", + "0x15c00505816b61217015c00517015941272815c00572814281205815c005", + "0x4824e0028680b5c09049c00503016b212093800a1203848162e7283c0a0b", + "0x6c0a14092fc0ae0028fc0b5e090fc0ae0028f41e07ae8487a057001424b5", + "0x1c24bf0e06c1e055f815c0055f816b6120e015c0050e01594120d815c005", + "0x3102412700140e05af84824e00283c0a0b09049c0050d016b812093800a12", + "0x3800abc5f01dae125e015c0055e015b0125e015c005092f824be02b800a12", + "0x488c05700148805ad04888057001576ba03b3c24ba02b800a12160497605", + "0x7c420f029180ae0029180b5b0907c0ae00287c0aca090840ae0028840a14", + "0x4824e0028480e120e016c0127001c360596048361a03b800a1a02cac2446", + "0x49c005078143812093800a14028702412700140e050e04824e0028680a1c", + "0x880b63090880ae00287c0b620907c0ae0028840b61090840ae0028496a12", + "0x15c00562016c81202815c00502815961209015c00509014281262015c005", + "0x480c0570014256509049c0050e0166412093800a120384988050903c0ac4", + "0x4b024d702b800ad702b6024d702b800a066c01e74126c0680ee0028680b2b", + "0x3800a070287024127001434050e04824e0028480e1216016cc127001dae05", + "0x159e05b08499e057001424b509049c005078143812093800a14028702412", + "0x480ae0028480a14093280ae002b2c0b630932c0ae002b300b62093300ae0", + "0x49c0050901c24ca028481e0565015c00565016c81202815c005028159612", + "0x3940f3a09394280770014280595849900570014256509049c005160166412", + "0x142407090c40b67093800e2e02cb0242e02b800a2e02b60242e02b800ac8", + "0x3c0a1c09049c0050a0143812093800a070287024127001434050e04824e0", + "0x486805700158c05b10498c05700158e05b08498e057001424b509049c005", + "0xd80b64090140ae0028140acb090480ae0028480a14090d80ae0028d00b63", + "0x3c2407b404824e0028c40b3209049c0050901c2436028481e051b015c005", + "0x30c0b6a090ec28077001428059584824e0028480e1260016d2c36281dc007", + "0x14256c09049c0050901c243f02dac7a0b03b800e3b6281ed01261815c005", + "0x497c05700157c056c0497e05700157e056c0497c0570014256d092fc0ae0", + "0x48256f5e015c0075f2fc0f6e090f40ae0028f40b6a0902c0ae00282c0a14", + "0x6974050a5c424ba5d81dc0055d815d0125d815c005095c02412700142407", + "0x148805658497805700157805b50488c05700148c05b90488c4403b800a3d", + "0x2dc0ee002ae40b7509049c0050901c2412ba2e40ae0039180b73091100ae0", + "0x1dc0055e01d6a440a5c424b55d81dc0055d815d012093800a4a02870244a", + "0x156405b90489e05700149e05b90489e4d03b800ac30a2ed6814b884964b4", + "0x49c0050901c2412bb1600ae00393c0b73091340ae0029340acb092c80ae0", + "0x1300ae00294ca807bc048a65803b800a5802ddc24545901dc00559015d012", + "0x16ea12093800a1203848257923815c00726016e61226015c00526016e412", + "0x178b2079d048bcb703b800ab702cac241270014be050e048be5903b800a47", + "0x3800a1203848c005bd049c0072d01658122d015c0052d015b0122d015c005", + "0x3800a125a84824e0029600b7c09049c00559016f612093800ab7028702412", + "0x48c605700155c05b18495c05700155a05b10495a05700156205be8496205", + "0x134160f0298c0ae00298c0b64091340ae0029340acb0902c0ae00282c0a14", + "0x4824e0028480e12095f80a122504824e0029800b3209049c0050901c2463", + "0x2a00b82092a00ae002aa00b81092a00ae002aa40b80092a40ae0029600b7f", + "0x4824e002ac80b7b09049c0055b8143812093800a1203848cc05c1849c007", + "0x15486803b5c24a402b800aa402b6024a402b800a12c2048d0057001424c4", + "0x1b80ae0029b00b85091b00ae0029a9440767849440570014242c091a80ae0", + "0x2c1e0537015c00537016c81226815c00526815961205815c005058142812", + "0x5cc249f02b800a9f02dc8249f02b800a665901ef012093800a1203848dc4d", + "0x2640a1c09265360770014e005ba84824e0028480e1209618e0057001d3e05", + "0x49c0074c01658124c015c0054c015b0124c015c0055ba6c0f3a09049c005", + "0x16c4123d015c0054b016fa124b015c005092d424127001424070925c0b87", + "0x3800a4d02b2c240b02b800a0b02850249502b800a7602d8c247602b800a7a", + "0x3800a9702cc82412700142407092549a0b078152a05700152a05b20489a05", + "0x2400ae0028496a12093800ab70287024127001424070904b1005091282412", + "0x14281244015c00546016c61246015c00546816c41246815c00548016c212", + "0x49104d0583c0a8802b800a8802d90244d02b800a4d02b2c240b02b800a0b", + "0x491c057001424b509049c00559016f612093800ab7028702412700142407", + "0x2c0a14094000ae002b900b63093900ae0028000b62090000ae002a380b61", + "0x1c25002682c1e0580015c00580016c81226815c00526815961205815c005", + "0x5f024127001428050e04824e002b0c0b7c09049c0055d816f612093800a12", + "0x4080ae002c040b61094040ae0028496a12093800a07028702412700157805", + "0x15961205815c00505814281282015c00581816c61281815c00581016c412", + "0x143812093800a120384a08440583c0b0402b800b0402d90244402b800a44", + "0x5f024127001434050e04824e0028500a1c09049c00561816f812093800a07", + "0x15c00583016c41283015c00582816c21282815c005092d42412700147a05", + "0x590240502b800a0502b2c240b02b800a0b02850250802b800b0702d8c2507", + "0x143812093800a1a028702412700142407094200a0b078161005700161005", + "0x584250902b800a125a84824e0028500a1c09049c00561816f812093800a07", + "0x147e050a04a2605700162405b184a2405700162205b104a2205700161205", + "0x480e12898147e0f02c4c0ae002c4c0b64090140ae0028140acb090fc0ae0", + "0x496a12093800a14028702412700140e050e04824e0028680a1c09049c005", + "0x15c0058a816c6128a815c00571816c41271815c0058a016c2128a015c005", + "0x3c0b1602b800b1602d90240502b800a0502b2c24c002b800ac0028502516", + "0x142407090680b890a03c0ee00381c0a1a0901c0ae0028140a0f094580ac0", + "0x484205700143805c504838057001436052c04836057001428050d84824e0", + "0x49c0050901c2412c6014244a090880ae0028840b8b0907c0ae00283c0a21", + "0x180b8b0907c0ae0028680a21090180ae002b100b8d093100ae0028496a12", + "0x3800e2202e3c24d702b800ad8028f424d80f81dc0050f8171c1211015c005", + "0x480e126501724cb6601dc007160480f9109049c0050901c24cf02e405805", + "0x39590077001c3e050d04998057001598050a04824e002b5c0a4409049c005", + "0x62824c702b800a3102960243102b800ae50286c2412700142407090b80b93", + "0x6500a12250486c05700158c05c58486805700159005108498c05700158e05", + "0x145c05108498605700158a05c68498a057001424b509049c0050901c2412", + "0xec0ae0038d80b8f093000ae0028d00a3d090d80ae002b0c0b8b090d00ae0", + "0x65824c002b800ac00295024cc02b800acc0285024127001424070902c0b95", + "0x6642412700142407092f80b985f815c0071f8172e121f8f40ee002b019807", + "0x3f3812093800a12038488805cdae80ae003aec0b9a092ed7807700157e05", + "0x173e125b815c0055caf00f9e092e40ae0029180b9d091180ae002ae876cb", + "0x1c244a1e81c0a4a02b800a4a02ba8243d02b800a3d02850244a02b800ab7", + "0x496a05700148805d004824e0028ec0a1c09049c005658140012093800a12", + "0x15d4121e815c0051e814281259015c0055a0173e125a015c0055aaf00f9e", + "0x1596050004824e0028ec0a1c09049c0050901c24b21e81c0ab202b800ab2", + "0x149a05700149a05750487a05700147a050a0489a05700157c05d084824e0", + "0x1f3c1227815c005058174012093800acb028002412700142407091347a07", + "0x14a8057504998057001598050a048a80570014b005cf848b005700149ec0", + "0x15c005650142812093800a1f0287c2412700142407091519807029500ae0", + "0x49c0050f8143e12093800acf0296824127001424070904b4405091282453", + "0x35c0f9e0911c0ae0029300ba0091300ae0028496a1229815c005090142812", + "0x134245f2981c0a5f02b800a5f02ba8245f02b800a5902e7c245902b800a47", + "0x142812093800a1203848421c03e8c361a03b800e050901c0a12093800a12", + "0x880ba609049c0050901c24c402e94441f03b800e0f02e90241a02b800a1a", + "0x15ae056c049b00570015b005d404858d76c03dc005030174e1203015c005", + "0xb1aed80386c35a90907c0ae00287c0a53090b00ae0028b00a540935c0ae0", + "0x3a424cb02b800acb0295024127001424070939590ca07ea996cc6783dc007", + "0x3300ac80933c0ae002b3c0aca090680ae0028680a14090b80ae002b2c2807", + "0x7d98cf0d06a901217015c005170168e120f815c0050f814a61266015c005", + "0x49c0050f814bc12093800a120384868c6638c428051a3198e310a3800a2e", + "0x3140bab093140ae002b946c07678486c0570014242c09049c0050a014d012", + "0x15c00564015901265015c0056501594120d015c0050d014281261815c005", + "0x15c005092d424127001424070930d90ca0d0500ac302b800ac302eb024c8", + "0x680ae0028680a140902c0ae0028ec0bae090ec0ae002b0028c407eb424c0", + "0x68280505815c00505817581203815c0050381590120d815c0050d8159412", + "0x1424c409049c0050a014d012093800a0f0297824127001424070902c0e1b", + "0x2fc0ae0028fc7a076b8487e05700147e056c0487e057001424be090f40ae0", + "0x1428125d815c0055e01756125e015c0055faf80ecf092f80ae0028485812", + "0x3800abb02eb0240702b800a0702b20242102b800a2102b28241c02b800a1c", + "0x6c0faf0d0500ee00381424070284824e0028489a125d81c421c0a0157605", + "0x840a1a090500ae0028500a14090840ae00281c0a0f09049c0050901c241c", + "0x140c052c0480c057001444050d84824e0028480e126201760220f81dc007", + "0x15c0050f8147a126b815c0056c03c0ed7093600ae002b600ad8093600ae0", + "0x27c242c02b800a2c02950241a02b800a1a02b28241402b800a1402850242c", + "0x480e1265b319e0f02b2d98cf07b800ad7160682814ab849ae0570015ae05", + "0x49900570015940f03d7424ca02b800a125a84824e002b100a1f09049c005", + "0x3940b5b090680ae0028680aca090500ae0028500a14093940ae002b200b5e", + "0x140e052204824e00283c0a0b09049c0050901c24e50d0501e0572815c005", + "0x1dae1218815c00518815b01218815c005092f8242e02b800a126204824e0", + "0x146805ad0486805700158ec603b3c24c602b800a12160498e0570014622e", + "0xd80ae0028d80b5b090700ae0028700aca0906c0ae00286c0a14090d80ae0", + "0x1c241a02ec4280f03b800e0702868240702b800a050283c24360e06c1e05", + "0x15c0050d8156e120e015c0050781442120d815c0050a0157212093800a12", + "0x15c0050f81568120f815c005092d424127001424070904b6405091282421", + "0x49881c03b800a1c02e38242102b800a2202adc241c02b800a1a028842422", + "0x143612093800a1203849ae05d9b600ae0038840ab2090180ae002b100a3d", + "0x1d9e1203ed024cf02b800acf02b6024cf02b800a2c02960242c02b800ad8", + "0x3200ae0028492c12093800a06029102412700142407093280bb565b300ee0", + "0x4990057001590053d0485ccb03b800acb02ed824e50e01dc0050e0171c12", + "0x1dc0050e0171c12093800a12038498c05dc31c62077001c5cc872b3029b7", + "0xd80ae0028d80a7a093159607700159605db0486c0570014680583048681c", + "0x1424070902c7607dd30186077001d8a361883f721263815c005638144212", + "0x31c0a3d09049c0050901c24bf02eec7e3d03b800ec0658718614db84824e0", + "0x3800abc5d81f7a125d815c0051f8147a125e015c0055f01778125f015c005", + "0x148805700148805df8487a05700147a050a0488805700157405df0497405", + "0x142529091180ae0028498812093800ac70287c2412700142407091107a07", + "0x1280ae00284858125b815c0055c9180ed7092e40ae002ae40ad8092e40ae0", + "0x6fc24bf02b800abf0285024b402b800ab502f0024b502b800ab72501d9e12", + "0x31c0a1f09049c005058160812093800a120384968bf038156805700156805", + "0x49ce1259015c0050931024127001596058204824e0028700a1f09049c005", + "0x15c005090b0244f02b800a4d5901dae1226815c00526815b01226815c005", + "0x4876057001476050a048a60570014a805e0048a805700149e5803b3c2458", + "0x143e12093800acb02c1024127001424070914c76070294c0ae00294c0bbf", + "0x488e05700148e056c0488e05700142529091300ae0028498812093800a1c", + "0x1780122f015c0052c97c0ecf0917c0ae00284858122c815c005239300ed7", + "0x1c245a6301c0a5a02b800a5a02efc24c602b800ac602850245a02b800a5e", + "0x49620570014c005e0848c0057001424b509049c0050e0143e12093800a12", + "0x177e1265015c00565014281257015c005568177c1256815c005588180fbd", + "0x1438050f84824e002b5c0a5a09049c0050901c24ae6501c0aae02b800aae", + "0x49500570015520603ef424a902b800a6302f04246302b800a125a84824e0", + "0x1982407029980ae0029980bbf090480ae0028480a14091980ae002aa00bbe", + "0x48341a352391a120d048280f03814248c352391a120d068d48e4684834d7", + "0x501e0702849186a47234241a0d1a91c8d0906a9a140781c0a12461a91c8d", + "0x49186a47048281a352382414e183c0e0509230d48e09050346a4704829c2", + "0xd0348e0906b8a140781c0a124a9a91c8d09068cc6a47234241ae203c0e05", + "0x501e0702849486a470482834331a91c120d718280f03814249f470481e06", + "0x49728d0903c0c06030191a120df201e0702849528e0903c1ea84704829c7", + "0x498a6a47048282e1a1a91c120d7280a125f8480e1a0901f921a0a03c0e05", + "0x1424c40901c341203f301e0702849528e0903c1e1a4704829cb0a03c0e05", + "0x1cd" ], "sierra_program_debug_info": { "type_names": [ @@ -1816,15 +1816,15 @@ ], [ 110, - "array_get" + "const_as_immediate>" ], [ 111, - "store_temp>" + "array_get" ], [ 112, - "const_as_immediate>" + "store_temp>" ], [ 113, diff --git a/crates/cairo-lang-starknet/test_data/account__account.sierra b/crates/cairo-lang-starknet/test_data/account__account.sierra index 1ceff3f7c32..47befe0ba15 100644 --- a/crates/cairo-lang-starknet/test_data/account__account.sierra +++ b/crates/cairo-lang-starknet/test_data/account__account.sierra @@ -197,9 +197,9 @@ libfunc rename = rename; libfunc storage_read_syscall = storage_read_syscall; libfunc snapshot_take> = snapshot_take>; libfunc rename>> = rename>>; +libfunc const_as_immediate> = const_as_immediate>; libfunc array_get = array_get; libfunc store_temp> = store_temp>; -libfunc const_as_immediate> = const_as_immediate>; libfunc function_call = function_call; libfunc enum_match> = enum_match>; libfunc struct_deconstruct> = struct_deconstruct>; @@ -1014,7 +1014,7 @@ store_temp([2]) -> ([2]); // 692 store_temp,)>>([62]) -> ([62]); // 693 return([6], [7], [2], [62]); // 694 drop([4]) -> (); // 695 -get_execution_info_v2_syscall([2], [3]) { fallthrough([5], [6], [7]) 874([8], [9], [10]) }; // 696 +get_execution_info_v2_syscall([2], [3]) { fallthrough([5], [6], [7]) 873([8], [9], [10]) }; // 696 branch_align() -> (); // 697 store_temp>([7]) -> ([7]); // 698 unbox([7]) -> ([11]); // 699 @@ -1074,921 +1074,920 @@ storage_address_from_base([46]) -> ([47]); // 752 const_as_immediate>() -> ([48]); // 753 store_temp([48]) -> ([48]); // 754 store_temp([47]) -> ([47]); // 755 -storage_read_syscall([5], [6], [48], [47]) { fallthrough([49], [50], [51]) 862([52], [53], [54]) }; // 756 +storage_read_syscall([5], [6], [48], [47]) { fallthrough([49], [50], [51]) 861([52], [53], [54]) }; // 756 branch_align() -> (); // 757 snapshot_take>([21]) -> ([55], [56]); // 758 -const_as_immediate>() -> ([57]); // 759 -struct_deconstruct>([56]) -> ([58]); // 760 -rename>>([58]) -> ([59]); // 761 -store_temp([57]) -> ([57]); // 762 -store_temp([49]) -> ([49]); // 763 -store_temp([50]) -> ([50]); // 764 -store_temp([51]) -> ([51]); // 765 -array_get([0], [59], [57]) { fallthrough([60], [61]) 845([62]) }; // 766 -branch_align() -> (); // 767 -store_temp>([61]) -> ([61]); // 768 -unbox([61]) -> ([63]); // 769 -snapshot_take>([55]) -> ([64], [65]); // 770 -drop>([64]) -> (); // 771 -const_as_immediate>() -> ([66]); // 772 -struct_deconstruct>([65]) -> ([67]); // 773 -rename>>([67]) -> ([68]); // 774 -store_temp([66]) -> ([66]); // 775 -store_temp([63]) -> ([63]); // 776 -array_get([60], [68], [66]) { fallthrough([69], [70]) 828([71]) }; // 777 -branch_align() -> (); // 778 -store_temp>([70]) -> ([70]); // 779 -unbox([70]) -> ([72]); // 780 -rename([63]) -> ([73]); // 781 -rename([72]) -> ([74]); // 782 -store_temp([69]) -> ([69]); // 783 -store_temp([1]) -> ([1]); // 784 -store_temp([22]) -> ([22]); // 785 -store_temp([51]) -> ([51]); // 786 -store_temp([73]) -> ([73]); // 787 -store_temp([74]) -> ([74]); // 788 -function_call([69], [1], [22], [51], [73], [74]) -> ([75], [76], [77]); // 789 -enum_match>([77]) { fallthrough([78]) 820([79]) }; // 790 -branch_align() -> (); // 791 -struct_deconstruct>([78]) -> ([80]); // 792 -enum_match([80]) { fallthrough([81]) 809([82]) }; // 793 -branch_align() -> (); // 794 -drop([81]) -> (); // 795 -array_new() -> ([83]); // 796 -const_as_immediate>() -> ([84]); // 797 -store_temp([84]) -> ([84]); // 798 -array_append([83], [84]) -> ([85]); // 799 -struct_construct() -> ([86]); // 800 -struct_construct>>([86], [85]) -> ([87]); // 801 -enum_init, 1>([87]) -> ([88]); // 802 -store_temp([75]) -> ([75]); // 803 -store_temp([76]) -> ([76]); // 804 -store_temp([49]) -> ([49]); // 805 -store_temp([50]) -> ([50]); // 806 -store_temp>([88]) -> ([88]); // 807 -return([75], [76], [49], [50], [88]); // 808 -branch_align() -> (); // 809 -drop([82]) -> (); // 810 -const_as_immediate>() -> ([89]); // 811 -struct_construct>([89]) -> ([90]); // 812 -enum_init, 0>([90]) -> ([91]); // 813 -store_temp([75]) -> ([75]); // 814 -store_temp([76]) -> ([76]); // 815 -store_temp([49]) -> ([49]); // 816 -store_temp([50]) -> ([50]); // 817 -store_temp>([91]) -> ([91]); // 818 -return([75], [76], [49], [50], [91]); // 819 -branch_align() -> (); // 820 -enum_init, 1>([79]) -> ([92]); // 821 -store_temp([75]) -> ([75]); // 822 -store_temp([76]) -> ([76]); // 823 -store_temp([49]) -> ([49]); // 824 -store_temp([50]) -> ([50]); // 825 -store_temp>([92]) -> ([92]); // 826 -return([75], [76], [49], [50], [92]); // 827 -branch_align() -> (); // 828 -drop([63]) -> (); // 829 -drop([51]) -> (); // 830 -drop([22]) -> (); // 831 -array_new() -> ([93]); // 832 -const_as_immediate>() -> ([94]); // 833 -store_temp([94]) -> ([94]); // 834 -array_append([93], [94]) -> ([95]); // 835 -struct_construct() -> ([96]); // 836 -struct_construct>>([96], [95]) -> ([97]); // 837 -enum_init, 1>([97]) -> ([98]); // 838 -store_temp([71]) -> ([71]); // 839 -store_temp([1]) -> ([1]); // 840 -store_temp([49]) -> ([49]); // 841 -store_temp([50]) -> ([50]); // 842 -store_temp>([98]) -> ([98]); // 843 -return([71], [1], [49], [50], [98]); // 844 -branch_align() -> (); // 845 -drop>([55]) -> (); // 846 -drop([51]) -> (); // 847 -drop([22]) -> (); // 848 -array_new() -> ([99]); // 849 -const_as_immediate>() -> ([100]); // 850 -store_temp([100]) -> ([100]); // 851 -array_append([99], [100]) -> ([101]); // 852 -struct_construct() -> ([102]); // 853 -struct_construct>>([102], [101]) -> ([103]); // 854 -enum_init, 1>([103]) -> ([104]); // 855 -store_temp([62]) -> ([62]); // 856 -store_temp([1]) -> ([1]); // 857 -store_temp([49]) -> ([49]); // 858 -store_temp([50]) -> ([50]); // 859 -store_temp>([104]) -> ([104]); // 860 -return([62], [1], [49], [50], [104]); // 861 -branch_align() -> (); // 862 -drop>([21]) -> (); // 863 -drop([22]) -> (); // 864 -struct_construct() -> ([105]); // 865 -struct_construct>>([105], [54]) -> ([106]); // 866 -enum_init, 1>([106]) -> ([107]); // 867 -store_temp([0]) -> ([0]); // 868 -store_temp([1]) -> ([1]); // 869 -store_temp([52]) -> ([52]); // 870 -store_temp([53]) -> ([53]); // 871 -store_temp>([107]) -> ([107]); // 872 -return([0], [1], [52], [53], [107]); // 873 -branch_align() -> (); // 874 -struct_construct() -> ([108]); // 875 -struct_construct>>([108], [10]) -> ([109]); // 876 -enum_init, 1>([109]) -> ([110]); // 877 -store_temp([0]) -> ([0]); // 878 -store_temp([1]) -> ([1]); // 879 -store_temp([8]) -> ([8]); // 880 -store_temp([9]) -> ([9]); // 881 -store_temp>([110]) -> ([110]); // 882 -return([0], [1], [8], [9], [110]); // 883 -disable_ap_tracking() -> (); // 884 -withdraw_gas([0], [1]) { fallthrough([5], [6]) 937([7], [8]) }; // 885 -branch_align() -> (); // 886 -dup([4]) -> ([4], [9]); // 887 -store_temp([5]) -> ([5]); // 888 -felt252_is_zero([9]) { fallthrough() 899([10]) }; // 889 -branch_align() -> (); // 890 -drop([4]) -> (); // 891 -enum_init>, 0>([3]) -> ([11]); // 892 -struct_construct, core::option::Option::>>>([2], [11]) -> ([12]); // 893 -enum_init, core::option::Option::>)>, 0>([12]) -> ([13]); // 894 -store_temp([5]) -> ([5]); // 895 -store_temp([6]) -> ([6]); // 896 -store_temp, core::option::Option::>)>>([13]) -> ([13]); // 897 -return([5], [6], [13]); // 898 -branch_align() -> (); // 899 -drop>([10]) -> (); // 900 -store_temp([5]) -> ([5]); // 901 -store_temp>([2]) -> ([2]); // 902 -function_call([5], [2]) -> ([14], [15]); // 903 -enum_match, core::option::Option::)>>([15]) { fallthrough([16]) 929([17]) }; // 904 -branch_align() -> (); // 905 -struct_deconstruct, core::option::Option::>>([16]) -> ([18], [19]); // 906 -enum_match>([19]) { fallthrough([20]) 919([21]) }; // 907 -branch_align() -> (); // 908 -array_append([3], [20]) -> ([22]); // 909 -const_as_immediate>() -> ([23]); // 910 -felt252_sub([4], [23]) -> ([24]); // 911 -store_temp([14]) -> ([14]); // 912 -store_temp([6]) -> ([6]); // 913 -store_temp>([18]) -> ([18]); // 914 -store_temp>([22]) -> ([22]); // 915 -store_temp([24]) -> ([24]); // 916 -function_call>([14], [6], [18], [22], [24]) -> ([25], [26], [27]); // 917 -return([25], [26], [27]); // 918 -branch_align() -> (); // 919 -drop([4]) -> (); // 920 -drop>([3]) -> (); // 921 -enum_init>, 1>([21]) -> ([28]); // 922 -struct_construct, core::option::Option::>>>([18], [28]) -> ([29]); // 923 -enum_init, core::option::Option::>)>, 0>([29]) -> ([30]); // 924 -store_temp([14]) -> ([14]); // 925 -store_temp([6]) -> ([6]); // 926 -store_temp, core::option::Option::>)>>([30]) -> ([30]); // 927 -return([14], [6], [30]); // 928 -branch_align() -> (); // 929 -drop([4]) -> (); // 930 -drop>([3]) -> (); // 931 -enum_init, core::option::Option::>)>, 1>([17]) -> ([31]); // 932 -store_temp([14]) -> ([14]); // 933 -store_temp([6]) -> ([6]); // 934 -store_temp, core::option::Option::>)>>([31]) -> ([31]); // 935 -return([14], [6], [31]); // 936 -branch_align() -> (); // 937 -drop([4]) -> (); // 938 -drop>([3]) -> (); // 939 -drop>([2]) -> (); // 940 -array_new() -> ([32]); // 941 -const_as_immediate>() -> ([33]); // 942 -store_temp([33]) -> ([33]); // 943 -array_append([32], [33]) -> ([34]); // 944 -struct_construct() -> ([35]); // 945 -struct_construct>>([35], [34]) -> ([36]); // 946 -enum_init, core::option::Option::>)>, 1>([36]) -> ([37]); // 947 -store_temp([7]) -> ([7]); // 948 -store_temp([8]) -> ([8]); // 949 -store_temp, core::option::Option::>)>>([37]) -> ([37]); // 950 -return([7], [8], [37]); // 951 -disable_ap_tracking() -> (); // 952 -get_execution_info_v2_syscall([1], [2]) { fallthrough([5], [6], [7]) 1067([8], [9], [10]) }; // 953 -branch_align() -> (); // 954 -store_temp>([7]) -> ([7]); // 955 -unbox([7]) -> ([11]); // 956 -struct_deconstruct([11]) -> ([12], [13], [14], [15], [16]); // 957 -drop>([12]) -> (); // 958 -drop>([13]) -> (); // 959 -drop([15]) -> (); // 960 -drop([16]) -> (); // 961 -contract_address_to_felt252([14]) -> ([17]); // 962 -store_temp([17]) -> ([17]); // 963 -store_temp([5]) -> ([5]); // 964 -store_temp([6]) -> ([6]); // 965 -felt252_is_zero([17]) { fallthrough() 1051([18]) }; // 966 -branch_align() -> (); // 967 -get_execution_info_v2_syscall([5], [6]) { fallthrough([19], [20], [21]) 1040([22], [23], [24]) }; // 968 -branch_align() -> (); // 969 -store_temp>([21]) -> ([21]); // 970 -unbox([21]) -> ([25]); // 971 -struct_deconstruct([25]) -> ([26], [27], [28], [29], [30]); // 972 -drop>([26]) -> (); // 973 -drop([28]) -> (); // 974 -drop([29]) -> (); // 975 -drop([30]) -> (); // 976 -store_temp>([27]) -> ([27]); // 977 -unbox([27]) -> ([31]); // 978 -struct_deconstruct([31]) -> ([32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44]); // 979 -drop([33]) -> (); // 980 -drop([34]) -> (); // 981 -drop>([35]) -> (); // 982 -drop([36]) -> (); // 983 -drop([37]) -> (); // 984 -drop([38]) -> (); // 985 -drop>([39]) -> (); // 986 -drop([40]) -> (); // 987 -drop>([41]) -> (); // 988 -drop([42]) -> (); // 989 -drop([43]) -> (); // 990 -drop>([44]) -> (); // 991 -store_temp([32]) -> ([32]); // 992 -store_temp([19]) -> ([19]); // 993 -store_temp([20]) -> ([20]); // 994 -felt252_is_zero([32]) { fallthrough() 1011([45]) }; // 995 -branch_align() -> (); // 996 -drop([3]) -> (); // 997 -drop>([4]) -> (); // 998 -array_new() -> ([46]); // 999 -const_as_immediate>() -> ([47]); // 1000 -store_temp([47]) -> ([47]); // 1001 -array_append([46], [47]) -> ([48]); // 1002 -struct_construct() -> ([49]); // 1003 -struct_construct>>([49], [48]) -> ([50]); // 1004 -enum_init>)>, 1>([50]) -> ([51]); // 1005 -store_temp([0]) -> ([0]); // 1006 -store_temp([19]) -> ([19]); // 1007 -store_temp([20]) -> ([20]); // 1008 -store_temp>)>>([51]) -> ([51]); // 1009 -return([0], [19], [20], [51]); // 1010 -branch_align() -> (); // 1011 -drop>([45]) -> (); // 1012 -array_new>() -> ([52]); // 1013 -store_temp([0]) -> ([0]); // 1014 -store_temp([19]) -> ([19]); // 1015 -store_temp([20]) -> ([20]); // 1016 -store_temp>([4]) -> ([4]); // 1017 -store_temp>>([52]) -> ([52]); // 1018 -function_call([0], [19], [20], [4], [52]) -> ([53], [54], [55], [56]); // 1019 -enum_match, core::array::Array::>, ())>>([56]) { fallthrough([57]) 1032([58]) }; // 1020 -branch_align() -> (); // 1021 -struct_deconstruct, Array>, Unit>>([57]) -> ([59], [60], [61]); // 1022 -drop>([59]) -> (); // 1023 -drop([61]) -> (); // 1024 -struct_construct>>>([3], [60]) -> ([62]); // 1025 -enum_init>)>, 0>([62]) -> ([63]); // 1026 -store_temp([53]) -> ([53]); // 1027 -store_temp([54]) -> ([54]); // 1028 -store_temp([55]) -> ([55]); // 1029 -store_temp>)>>([63]) -> ([63]); // 1030 -return([53], [54], [55], [63]); // 1031 -branch_align() -> (); // 1032 -drop([3]) -> (); // 1033 -enum_init>)>, 1>([58]) -> ([64]); // 1034 -store_temp([53]) -> ([53]); // 1035 -store_temp([54]) -> ([54]); // 1036 -store_temp([55]) -> ([55]); // 1037 -store_temp>)>>([64]) -> ([64]); // 1038 -return([53], [54], [55], [64]); // 1039 -branch_align() -> (); // 1040 -drop>([4]) -> (); // 1041 -drop([3]) -> (); // 1042 -struct_construct() -> ([65]); // 1043 -struct_construct>>([65], [24]) -> ([66]); // 1044 -enum_init>)>, 1>([66]) -> ([67]); // 1045 -store_temp([0]) -> ([0]); // 1046 -store_temp([22]) -> ([22]); // 1047 -store_temp([23]) -> ([23]); // 1048 -store_temp>)>>([67]) -> ([67]); // 1049 -return([0], [22], [23], [67]); // 1050 -branch_align() -> (); // 1051 -drop>([18]) -> (); // 1052 -drop>([4]) -> (); // 1053 -drop([3]) -> (); // 1054 -array_new() -> ([68]); // 1055 -const_as_immediate>() -> ([69]); // 1056 -store_temp([69]) -> ([69]); // 1057 -array_append([68], [69]) -> ([70]); // 1058 -struct_construct() -> ([71]); // 1059 -struct_construct>>([71], [70]) -> ([72]); // 1060 -enum_init>)>, 1>([72]) -> ([73]); // 1061 -store_temp([0]) -> ([0]); // 1062 -store_temp([5]) -> ([5]); // 1063 -store_temp([6]) -> ([6]); // 1064 -store_temp>)>>([73]) -> ([73]); // 1065 -return([0], [5], [6], [73]); // 1066 -branch_align() -> (); // 1067 -drop>([4]) -> (); // 1068 -drop([3]) -> (); // 1069 -struct_construct() -> ([74]); // 1070 -struct_construct>>([74], [10]) -> ([75]); // 1071 -enum_init>)>, 1>([75]) -> ([76]); // 1072 -store_temp([0]) -> ([0]); // 1073 -store_temp([8]) -> ([8]); // 1074 -store_temp([9]) -> ([9]); // 1075 -store_temp>)>>([76]) -> ([76]); // 1076 -return([0], [8], [9], [76]); // 1077 -alloc_local>>>() -> ([5]); // 1078 -finalize_locals() -> (); // 1079 -disable_ap_tracking() -> (); // 1080 -withdraw_gas([0], [1]) { fallthrough([6], [7]) 1131([8], [9]) }; // 1081 -branch_align() -> (); // 1082 -struct_deconstruct>>([2]) -> ([10]); // 1083 -store_temp([6]) -> ([6]); // 1084 -array_snapshot_pop_front>([10]) { fallthrough([4], [11]) 1121([12]) }; // 1085 -branch_align() -> (); // 1086 -unbox>([11]) -> ([13]); // 1087 -store_temp>([13]) -> ([13]); // 1088 -dup>([13]) -> ([13], [14]); // 1089 -rename>([14]) -> ([15]); // 1090 -struct_deconstruct>([15]) -> ([16]); // 1091 -array_len([16]) -> ([17]); // 1092 -u32_to_felt252([17]) -> ([18]); // 1093 -store_temp([18]) -> ([18]); // 1094 -array_append([3], [18]) -> ([19]); // 1095 -rename>([13]) -> ([20]); // 1096 -store_temp([6]) -> ([6]); // 1097 -store_temp([7]) -> ([7]); // 1098 -store_temp>([20]) -> ([20]); // 1099 -store_temp>([19]) -> ([19]); // 1100 -store_local>>>([5], [4]) -> ([4]); // 1101 -function_call>([6], [7], [20], [19]) -> ([21], [22], [23]); // 1102 -enum_match, ())>>([23]) { fallthrough([24]) 1114([25]) }; // 1103 -branch_align() -> (); // 1104 -struct_construct>>([4]) -> ([26]); // 1105 -struct_deconstruct, Unit>>([24]) -> ([27], [28]); // 1106 -drop([28]) -> (); // 1107 -store_temp([21]) -> ([21]); // 1108 -store_temp([22]) -> ([22]); // 1109 -store_temp>>([26]) -> ([26]); // 1110 -store_temp>([27]) -> ([27]); // 1111 -function_call, core::array::SpanFelt252Serde, core::array::SpanDrop::>>([21], [22], [26], [27]) -> ([29], [30], [31]); // 1112 -return([29], [30], [31]); // 1113 -branch_align() -> (); // 1114 -drop>>>([4]) -> (); // 1115 -enum_init, ())>, 1>([25]) -> ([32]); // 1116 -store_temp([21]) -> ([21]); // 1117 -store_temp([22]) -> ([22]); // 1118 -store_temp, ())>>([32]) -> ([32]); // 1119 -return([21], [22], [32]); // 1120 -branch_align() -> (); // 1121 -drop>>>([12]) -> (); // 1122 -drop>>>>([5]) -> (); // 1123 -struct_construct() -> ([33]); // 1124 -struct_construct, Unit>>([3], [33]) -> ([34]); // 1125 -enum_init, ())>, 0>([34]) -> ([35]); // 1126 -store_temp([6]) -> ([6]); // 1127 -store_temp([7]) -> ([7]); // 1128 -store_temp, ())>>([35]) -> ([35]); // 1129 -return([6], [7], [35]); // 1130 -branch_align() -> (); // 1131 -drop>>>>([5]) -> (); // 1132 -drop>([3]) -> (); // 1133 -drop>>([2]) -> (); // 1134 -array_new() -> ([36]); // 1135 -const_as_immediate>() -> ([37]); // 1136 -store_temp([37]) -> ([37]); // 1137 -array_append([36], [37]) -> ([38]); // 1138 -struct_construct() -> ([39]); // 1139 -struct_construct>>([39], [38]) -> ([40]); // 1140 -enum_init, ())>, 1>([40]) -> ([41]); // 1141 -store_temp([8]) -> ([8]); // 1142 -store_temp([9]) -> ([9]); // 1143 -store_temp, ())>>([41]) -> ([41]); // 1144 -return([8], [9], [41]); // 1145 -dup([5]) -> ([5], [6]); // 1146 -felt252_is_zero([6]) { fallthrough() 1161([7]) }; // 1147 -branch_align() -> (); // 1148 -drop([5]) -> (); // 1149 -drop([2]) -> (); // 1150 -drop([4]) -> (); // 1151 -drop([3]) -> (); // 1152 -struct_construct() -> ([8]); // 1153 -enum_init([8]) -> ([9]); // 1154 -struct_construct>([9]) -> ([10]); // 1155 -enum_init, 0>([10]) -> ([11]); // 1156 -store_temp([0]) -> ([0]); // 1157 -store_temp([1]) -> ([1]); // 1158 -store_temp>([11]) -> ([11]); // 1159 -return([0], [1], [11]); // 1160 -branch_align() -> (); // 1161 -drop>([7]) -> (); // 1162 -const_as_immediate>() -> ([12]); // 1163 -dup([5]) -> ([5], [13]); // 1164 -felt252_sub([13], [12]) -> ([14]); // 1165 -store_temp([14]) -> ([14]); // 1166 -felt252_is_zero([14]) { fallthrough() 1181([15]) }; // 1167 -branch_align() -> (); // 1168 -drop([5]) -> (); // 1169 -drop([2]) -> (); // 1170 -drop([4]) -> (); // 1171 -drop([3]) -> (); // 1172 -struct_construct() -> ([16]); // 1173 -enum_init([16]) -> ([17]); // 1174 -struct_construct>([17]) -> ([18]); // 1175 -enum_init, 0>([18]) -> ([19]); // 1176 -store_temp([0]) -> ([0]); // 1177 -store_temp([1]) -> ([1]); // 1178 -store_temp>([19]) -> ([19]); // 1179 -return([0], [1], [19]); // 1180 -branch_align() -> (); // 1181 -drop>([15]) -> (); // 1182 -const_as_immediate>() -> ([20]); // 1183 -dup([4]) -> ([4], [21]); // 1184 -felt252_sub([21], [20]) -> ([22]); // 1185 -store_temp([22]) -> ([22]); // 1186 -felt252_is_zero([22]) { fallthrough() 1201([23]) }; // 1187 -branch_align() -> (); // 1188 -drop([5]) -> (); // 1189 -drop([2]) -> (); // 1190 -drop([4]) -> (); // 1191 -drop([3]) -> (); // 1192 -struct_construct() -> ([24]); // 1193 -enum_init([24]) -> ([25]); // 1194 -struct_construct>([25]) -> ([26]); // 1195 -enum_init, 0>([26]) -> ([27]); // 1196 -store_temp([0]) -> ([0]); // 1197 -store_temp([1]) -> ([1]); // 1198 -store_temp>([27]) -> ([27]); // 1199 -return([0], [1], [27]); // 1200 -branch_align() -> (); // 1201 -drop>([23]) -> (); // 1202 -ec_point_from_x_nz([0], [3]) { fallthrough([28], [29]) 1365([30]) }; // 1203 -branch_align() -> (); // 1204 -dup([4]) -> ([4], [31]); // 1205 -store_temp>([29]) -> ([29]); // 1206 -ec_point_from_x_nz([28], [31]) { fallthrough([32], [33]) 1352([34]) }; // 1207 -branch_align() -> (); // 1208 -const_as_immediate>() -> ([35]); // 1209 -const_as_immediate>() -> ([36]); // 1210 -store_temp([35]) -> ([35]); // 1211 -store_temp([36]) -> ([36]); // 1212 -store_temp([32]) -> ([32]); // 1213 -store_temp>([33]) -> ([33]); // 1214 -ec_point_try_new_nz([35], [36]) { fallthrough([37]) 1338() }; // 1215 -branch_align() -> (); // 1216 -ec_state_init() -> ([38]); // 1217 -dup([38]) -> ([38], [39]); // 1218 -ec_state_add_mul([1], [39], [5], [33]) -> ([40], [41]); // 1219 -store_temp([41]) -> ([41]); // 1220 -store_temp>([37]) -> ([37]); // 1221 -store_temp([40]) -> ([40]); // 1222 -ec_state_try_finalize_nz([41]) { fallthrough([42]) 1324() }; // 1223 -branch_align() -> (); // 1224 -ec_point_unwrap([42]) -> ([43], [44]); // 1225 -drop([44]) -> (); // 1226 -dup([38]) -> ([38], [45]); // 1227 -ec_state_add_mul([40], [45], [2], [37]) -> ([46], [47]); // 1228 -ec_state_add_mul([46], [38], [4], [29]) -> ([48], [49]); // 1229 -store_temp([49]) -> ([49]); // 1230 -store_temp([47]) -> ([47]); // 1231 -store_temp([48]) -> ([48]); // 1232 -ec_state_try_finalize_nz([49]) { fallthrough([50]) 1313() }; // 1233 -branch_align() -> (); // 1234 -dup([47]) -> ([47], [51]); // 1235 -dup>([50]) -> ([50], [52]); // 1236 -ec_state_add([51], [52]) -> ([53]); // 1237 -store_temp([53]) -> ([53]); // 1238 -ec_state_try_finalize_nz([53]) { fallthrough([54]) 1262() }; // 1239 -branch_align() -> (); // 1240 -ec_point_unwrap([54]) -> ([55], [56]); // 1241 -drop([56]) -> (); // 1242 -dup([43]) -> ([43], [57]); // 1243 -felt252_sub([55], [57]) -> ([58]); // 1244 -store_temp([58]) -> ([58]); // 1245 -felt252_is_zero([58]) { fallthrough() 1259([59]) }; // 1246 -branch_align() -> (); // 1247 -drop([43]) -> (); // 1248 -drop([47]) -> (); // 1249 -drop>([50]) -> (); // 1250 -struct_construct() -> ([60]); // 1251 -enum_init([60]) -> ([61]); // 1252 -struct_construct>([61]) -> ([62]); // 1253 -enum_init, 0>([62]) -> ([63]); // 1254 -store_temp([32]) -> ([32]); // 1255 -store_temp([48]) -> ([48]); // 1256 -store_temp>([63]) -> ([63]); // 1257 -return([32], [48], [63]); // 1258 -branch_align() -> (); // 1259 -drop>([59]) -> (); // 1260 -jump() { 1263() }; // 1261 -branch_align() -> (); // 1262 -unwrap_non_zero([50]) -> ([64]); // 1263 -ec_neg([64]) -> ([65]); // 1264 -store_temp([65]) -> ([65]); // 1265 -ec_point_is_zero([65]) { fallthrough() 1281([66]) }; // 1266 -branch_align() -> (); // 1267 -drop([43]) -> (); // 1268 -drop([47]) -> (); // 1269 -array_new() -> ([67]); // 1270 -const_as_immediate>() -> ([68]); // 1271 -store_temp([68]) -> ([68]); // 1272 -array_append([67], [68]) -> ([69]); // 1273 -struct_construct() -> ([70]); // 1274 -struct_construct>>([70], [69]) -> ([71]); // 1275 -enum_init, 1>([71]) -> ([72]); // 1276 -store_temp([32]) -> ([32]); // 1277 -store_temp([48]) -> ([48]); // 1278 -store_temp>([72]) -> ([72]); // 1279 -return([32], [48], [72]); // 1280 -branch_align() -> (); // 1281 -ec_state_add([47], [66]) -> ([73]); // 1282 -store_temp([73]) -> ([73]); // 1283 -ec_state_try_finalize_nz([73]) { fallthrough([74]) 1303() }; // 1284 -branch_align() -> (); // 1285 -ec_point_unwrap([74]) -> ([75], [76]); // 1286 -drop([76]) -> (); // 1287 -felt252_sub([75], [43]) -> ([77]); // 1288 -store_temp([77]) -> ([77]); // 1289 -felt252_is_zero([77]) { fallthrough() 1300([78]) }; // 1290 -branch_align() -> (); // 1291 -struct_construct() -> ([79]); // 1292 -enum_init([79]) -> ([80]); // 1293 -struct_construct>([80]) -> ([81]); // 1294 -enum_init, 0>([81]) -> ([82]); // 1295 -store_temp([32]) -> ([32]); // 1296 -store_temp([48]) -> ([48]); // 1297 -store_temp>([82]) -> ([82]); // 1298 -return([32], [48], [82]); // 1299 -branch_align() -> (); // 1300 -drop>([78]) -> (); // 1301 -jump() { 1305() }; // 1302 -branch_align() -> (); // 1303 -drop([43]) -> (); // 1304 -struct_construct() -> ([83]); // 1305 -enum_init([83]) -> ([84]); // 1306 -struct_construct>([84]) -> ([85]); // 1307 -enum_init, 0>([85]) -> ([86]); // 1308 -store_temp([32]) -> ([32]); // 1309 -store_temp([48]) -> ([48]); // 1310 -store_temp>([86]) -> ([86]); // 1311 -return([32], [48], [86]); // 1312 -branch_align() -> (); // 1313 -drop([43]) -> (); // 1314 -drop([47]) -> (); // 1315 -struct_construct() -> ([87]); // 1316 -enum_init([87]) -> ([88]); // 1317 -struct_construct>([88]) -> ([89]); // 1318 -enum_init, 0>([89]) -> ([90]); // 1319 -store_temp([32]) -> ([32]); // 1320 -store_temp([48]) -> ([48]); // 1321 -store_temp>([90]) -> ([90]); // 1322 -return([32], [48], [90]); // 1323 -branch_align() -> (); // 1324 -drop([38]) -> (); // 1325 -drop>([29]) -> (); // 1326 -drop([4]) -> (); // 1327 -drop>([37]) -> (); // 1328 -drop([2]) -> (); // 1329 -struct_construct() -> ([91]); // 1330 -enum_init([91]) -> ([92]); // 1331 -struct_construct>([92]) -> ([93]); // 1332 -enum_init, 0>([93]) -> ([94]); // 1333 -store_temp([32]) -> ([32]); // 1334 -store_temp([40]) -> ([40]); // 1335 -store_temp>([94]) -> ([94]); // 1336 -return([32], [40], [94]); // 1337 -branch_align() -> (); // 1338 -drop([2]) -> (); // 1339 -drop>([29]) -> (); // 1340 -drop([4]) -> (); // 1341 -drop([5]) -> (); // 1342 -drop>([33]) -> (); // 1343 -struct_construct() -> ([95]); // 1344 -enum_init([95]) -> ([96]); // 1345 -struct_construct>([96]) -> ([97]); // 1346 -enum_init, 0>([97]) -> ([98]); // 1347 -store_temp([32]) -> ([32]); // 1348 -store_temp([1]) -> ([1]); // 1349 -store_temp>([98]) -> ([98]); // 1350 -return([32], [1], [98]); // 1351 -branch_align() -> (); // 1352 -drop([5]) -> (); // 1353 -drop([2]) -> (); // 1354 -drop>([29]) -> (); // 1355 -drop([4]) -> (); // 1356 -struct_construct() -> ([99]); // 1357 -enum_init([99]) -> ([100]); // 1358 -struct_construct>([100]) -> ([101]); // 1359 -enum_init, 0>([101]) -> ([102]); // 1360 -store_temp([34]) -> ([34]); // 1361 -store_temp([1]) -> ([1]); // 1362 -store_temp>([102]) -> ([102]); // 1363 -return([34], [1], [102]); // 1364 -branch_align() -> (); // 1365 -drop([5]) -> (); // 1366 -drop([2]) -> (); // 1367 -drop([4]) -> (); // 1368 -struct_construct() -> ([103]); // 1369 -enum_init([103]) -> ([104]); // 1370 -struct_construct>([104]) -> ([105]); // 1371 -enum_init, 0>([105]) -> ([106]); // 1372 -store_temp([30]) -> ([30]); // 1373 -store_temp([1]) -> ([1]); // 1374 -store_temp>([106]) -> ([106]); // 1375 -return([30], [1], [106]); // 1376 -struct_deconstruct>([1]) -> ([2]); // 1377 -array_snapshot_pop_front([2]) { fallthrough([3], [4]) 1386([5]) }; // 1378 -branch_align() -> (); // 1379 -unbox([4]) -> ([6]); // 1380 -rename([6]) -> ([7]); // 1381 -enum_init, 0>([7]) -> ([8]); // 1382 -store_temp>>([3]) -> ([9]); // 1383 -store_temp>([8]) -> ([10]); // 1384 -jump() { 1391() }; // 1385 -branch_align() -> (); // 1386 -struct_construct() -> ([11]); // 1387 -enum_init, 1>([11]) -> ([12]); // 1388 -store_temp>>([5]) -> ([9]); // 1389 -store_temp>([12]) -> ([10]); // 1390 -dup>>([9]) -> ([9], [13]); // 1391 -struct_construct>([13]) -> ([14]); // 1392 -enum_match>([10]) { fallthrough([15]) 1458([16]) }; // 1393 -branch_align() -> (); // 1394 -contract_address_try_from_felt252([0], [15]) { fallthrough([17], [18]) 1454([19]) }; // 1395 -branch_align() -> (); // 1396 -drop>([14]) -> (); // 1397 -store_temp([17]) -> ([17]); // 1398 -array_snapshot_pop_front([9]) { fallthrough([20], [21]) 1407([22]) }; // 1399 -branch_align() -> (); // 1400 -unbox([21]) -> ([23]); // 1401 -rename([23]) -> ([24]); // 1402 -enum_init, 0>([24]) -> ([25]); // 1403 -store_temp>>([20]) -> ([26]); // 1404 -store_temp>([25]) -> ([27]); // 1405 -jump() { 1412() }; // 1406 -branch_align() -> (); // 1407 -struct_construct() -> ([28]); // 1408 -enum_init, 1>([28]) -> ([29]); // 1409 -store_temp>>([22]) -> ([26]); // 1410 -store_temp>([29]) -> ([27]); // 1411 -struct_construct>([26]) -> ([30]); // 1412 -enum_match>([27]) { fallthrough([31]) 1446([32]) }; // 1413 -branch_align() -> (); // 1414 -store_temp([17]) -> ([17]); // 1415 -store_temp>([30]) -> ([30]); // 1416 -function_call([17], [30]) -> ([33], [34]); // 1417 -enum_match, core::option::Option::>)>>([34]) { fallthrough([35]) 1439([36]) }; // 1418 -branch_align() -> (); // 1419 -struct_deconstruct, core::option::Option::>>>([35]) -> ([37], [38]); // 1420 -enum_match>>([38]) { fallthrough([39]) 1430([40]) }; // 1421 -branch_align() -> (); // 1422 -struct_construct([18], [31], [39]) -> ([41]); // 1423 -enum_init, 0>([41]) -> ([42]); // 1424 -struct_construct, core::option::Option::>>([37], [42]) -> ([43]); // 1425 -enum_init, core::option::Option::)>, 0>([43]) -> ([44]); // 1426 -store_temp([33]) -> ([33]); // 1427 -store_temp, core::option::Option::)>>([44]) -> ([44]); // 1428 -return([33], [44]); // 1429 -branch_align() -> (); // 1430 -drop([18]) -> (); // 1431 -drop([31]) -> (); // 1432 -enum_init, 1>([40]) -> ([45]); // 1433 -struct_construct, core::option::Option::>>([37], [45]) -> ([46]); // 1434 -enum_init, core::option::Option::)>, 0>([46]) -> ([47]); // 1435 -store_temp([33]) -> ([33]); // 1436 -store_temp, core::option::Option::)>>([47]) -> ([47]); // 1437 -return([33], [47]); // 1438 -branch_align() -> (); // 1439 -drop([31]) -> (); // 1440 -drop([18]) -> (); // 1441 -enum_init, core::option::Option::)>, 1>([36]) -> ([48]); // 1442 -store_temp([33]) -> ([33]); // 1443 -store_temp, core::option::Option::)>>([48]) -> ([48]); // 1444 -return([33], [48]); // 1445 -branch_align() -> (); // 1446 -drop([18]) -> (); // 1447 -enum_init, 1>([32]) -> ([49]); // 1448 -struct_construct, core::option::Option::>>([30], [49]) -> ([50]); // 1449 -enum_init, core::option::Option::)>, 0>([50]) -> ([51]); // 1450 -store_temp([17]) -> ([17]); // 1451 -store_temp, core::option::Option::)>>([51]) -> ([51]); // 1452 -return([17], [51]); // 1453 -branch_align() -> (); // 1454 -drop>>([9]) -> (); // 1455 -store_temp([19]) -> ([52]); // 1456 -jump() { 1462() }; // 1457 -branch_align() -> (); // 1458 -drop([16]) -> (); // 1459 -drop>>([9]) -> (); // 1460 -store_temp([0]) -> ([52]); // 1461 -struct_construct() -> ([53]); // 1462 -enum_init, 1>([53]) -> ([54]); // 1463 -struct_construct, core::option::Option::>>([14], [54]) -> ([55]); // 1464 -enum_init, core::option::Option::)>, 0>([55]) -> ([56]); // 1465 -store_temp, core::option::Option::)>>([56]) -> ([56]); // 1466 -return([52], [56]); // 1467 -disable_ap_tracking() -> (); // 1468 -withdraw_gas([0], [1]) { fallthrough([5], [6]) 1511([7], [8]) }; // 1469 -branch_align() -> (); // 1470 -store_temp([5]) -> ([5]); // 1471 -array_pop_front([3]) { fallthrough([9], [10]) 1502([11]) }; // 1472 -branch_align() -> (); // 1473 -unbox([10]) -> ([12]); // 1474 -struct_deconstruct([12]) -> ([13], [14], [15]); // 1475 -store_temp([13]) -> ([13]); // 1476 -store_temp([14]) -> ([14]); // 1477 -store_temp>([15]) -> ([15]); // 1478 -store_temp>([9]) -> ([9]); // 1479 -call_contract_syscall([6], [2], [13], [14], [15]) { fallthrough([16], [17], [18]) 1491([19], [20], [21]) }; // 1480 -branch_align() -> (); // 1481 -store_temp>([18]) -> ([18]); // 1482 -array_append>([4], [18]) -> ([22]); // 1483 -store_temp([5]) -> ([5]); // 1484 -store_temp([16]) -> ([16]); // 1485 -store_temp([17]) -> ([17]); // 1486 -store_temp>([9]) -> ([9]); // 1487 -store_temp>>([22]) -> ([22]); // 1488 -function_call([5], [16], [17], [9], [22]) -> ([23], [24], [25], [26]); // 1489 -return([23], [24], [25], [26]); // 1490 -branch_align() -> (); // 1491 -drop>([9]) -> (); // 1492 -drop>>([4]) -> (); // 1493 -struct_construct() -> ([27]); // 1494 -struct_construct>>([27], [21]) -> ([28]); // 1495 -enum_init, core::array::Array::>, ())>, 1>([28]) -> ([29]); // 1496 -store_temp([5]) -> ([5]); // 1497 -store_temp([19]) -> ([19]); // 1498 -store_temp([20]) -> ([20]); // 1499 -store_temp, core::array::Array::>, ())>>([29]) -> ([29]); // 1500 -return([5], [19], [20], [29]); // 1501 -branch_align() -> (); // 1502 -struct_construct() -> ([30]); // 1503 -struct_construct, Array>, Unit>>([11], [4], [30]) -> ([31]); // 1504 -enum_init, core::array::Array::>, ())>, 0>([31]) -> ([32]); // 1505 -store_temp([5]) -> ([5]); // 1506 -store_temp([6]) -> ([6]); // 1507 -store_temp([2]) -> ([2]); // 1508 -store_temp, core::array::Array::>, ())>>([32]) -> ([32]); // 1509 -return([5], [6], [2], [32]); // 1510 -branch_align() -> (); // 1511 -drop>([3]) -> (); // 1512 -drop>>([4]) -> (); // 1513 -array_new() -> ([33]); // 1514 -const_as_immediate>() -> ([34]); // 1515 -store_temp([34]) -> ([34]); // 1516 -array_append([33], [34]) -> ([35]); // 1517 -struct_construct() -> ([36]); // 1518 -struct_construct>>([36], [35]) -> ([37]); // 1519 -enum_init, core::array::Array::>, ())>, 1>([37]) -> ([38]); // 1520 -store_temp([7]) -> ([7]); // 1521 -store_temp([8]) -> ([8]); // 1522 -store_temp([2]) -> ([2]); // 1523 -store_temp, core::array::Array::>, ())>>([38]) -> ([38]); // 1524 -return([7], [8], [2], [38]); // 1525 -disable_ap_tracking() -> (); // 1526 -withdraw_gas([0], [1]) { fallthrough([4], [5]) 1553([6], [7]) }; // 1527 -branch_align() -> (); // 1528 -struct_deconstruct>([2]) -> ([8]); // 1529 -store_temp([4]) -> ([4]); // 1530 -array_snapshot_pop_front([8]) { fallthrough([9], [10]) 1544([11]) }; // 1531 -branch_align() -> (); // 1532 -unbox([10]) -> ([12]); // 1533 -rename([12]) -> ([13]); // 1534 -store_temp([13]) -> ([13]); // 1535 -array_append([3], [13]) -> ([14]); // 1536 -struct_construct>([9]) -> ([15]); // 1537 -store_temp([4]) -> ([4]); // 1538 -store_temp([5]) -> ([5]); // 1539 -store_temp>([15]) -> ([15]); // 1540 -store_temp>([14]) -> ([14]); // 1541 -function_call>([4], [5], [15], [14]) -> ([16], [17], [18]); // 1542 -return([16], [17], [18]); // 1543 -branch_align() -> (); // 1544 -drop>>([11]) -> (); // 1545 -struct_construct() -> ([19]); // 1546 -struct_construct, Unit>>([3], [19]) -> ([20]); // 1547 -enum_init, ())>, 0>([20]) -> ([21]); // 1548 -store_temp([4]) -> ([4]); // 1549 -store_temp([5]) -> ([5]); // 1550 -store_temp, ())>>([21]) -> ([21]); // 1551 -return([4], [5], [21]); // 1552 -branch_align() -> (); // 1553 -drop>([3]) -> (); // 1554 -drop>([2]) -> (); // 1555 -array_new() -> ([22]); // 1556 -const_as_immediate>() -> ([23]); // 1557 -store_temp([23]) -> ([23]); // 1558 -array_append([22], [23]) -> ([24]); // 1559 -struct_construct() -> ([25]); // 1560 -struct_construct>>([25], [24]) -> ([26]); // 1561 -enum_init, ())>, 1>([26]) -> ([27]); // 1562 -store_temp([6]) -> ([6]); // 1563 -store_temp([7]) -> ([7]); // 1564 -store_temp, ())>>([27]) -> ([27]); // 1565 -return([6], [7], [27]); // 1566 -struct_deconstruct>([1]) -> ([2]); // 1567 -array_snapshot_pop_front([2]) { fallthrough([3], [4]) 1574([5]) }; // 1568 -branch_align() -> (); // 1569 -enum_init>, 0>([4]) -> ([6]); // 1570 -store_temp>>([3]) -> ([7]); // 1571 -store_temp>>([6]) -> ([8]); // 1572 -jump() { 1579() }; // 1573 -branch_align() -> (); // 1574 -struct_construct() -> ([9]); // 1575 -enum_init>, 1>([9]) -> ([10]); // 1576 -store_temp>>([5]) -> ([7]); // 1577 -store_temp>>([10]) -> ([8]); // 1578 -dup>>([7]) -> ([7], [11]); // 1579 -struct_construct>([11]) -> ([12]); // 1580 -enum_match>>([8]) { fallthrough([13]) 1661([14]) }; // 1581 -branch_align() -> (); // 1582 -unbox([13]) -> ([15]); // 1583 -rename([15]) -> ([16]); // 1584 -store_temp([16]) -> ([16]); // 1585 -u32_try_from_felt252([0], [16]) { fallthrough([17], [18]) 1652([19]) }; // 1586 -branch_align() -> (); // 1587 -drop>([12]) -> (); // 1588 -const_as_immediate>() -> ([20]); // 1589 -dup>>([7]) -> ([7], [21]); // 1590 -dup([18]) -> ([18], [22]); // 1591 -store_temp([20]) -> ([20]); // 1592 -array_slice([17], [21], [20], [22]) { fallthrough([23], [24]) 1639([25]) }; // 1593 -branch_align() -> (); // 1594 -dup>>([7]) -> ([7], [26]); // 1595 -array_len([26]) -> ([27]); // 1596 -dup([18]) -> ([18], [28]); // 1597 -store_temp([27]) -> ([27]); // 1598 -store_temp>>([24]) -> ([24]); // 1599 -u32_overflowing_sub([23], [27], [28]) { fallthrough([29], [30]) 1624([31], [32]) }; // 1600 -branch_align() -> (); // 1601 -array_slice([29], [7], [18], [30]) { fallthrough([33], [34]) 1612([35]) }; // 1602 -branch_align() -> (); // 1603 -struct_construct>([24]) -> ([36]); // 1604 -enum_init>, 0>([36]) -> ([37]); // 1605 -struct_construct>([34]) -> ([38]); // 1606 -struct_construct, core::option::Option::>>>([38], [37]) -> ([39]); // 1607 -enum_init, core::option::Option::>)>, 0>([39]) -> ([40]); // 1608 -store_temp([33]) -> ([33]); // 1609 -store_temp, core::option::Option::>)>>([40]) -> ([40]); // 1610 -return([33], [40]); // 1611 -branch_align() -> (); // 1612 -drop>>([24]) -> (); // 1613 -array_new() -> ([41]); // 1614 -const_as_immediate>() -> ([42]); // 1615 -store_temp([42]) -> ([42]); // 1616 -array_append([41], [42]) -> ([43]); // 1617 -struct_construct() -> ([44]); // 1618 -struct_construct>>([44], [43]) -> ([45]); // 1619 -enum_init, core::option::Option::>)>, 1>([45]) -> ([46]); // 1620 -store_temp([35]) -> ([35]); // 1621 -store_temp, core::option::Option::>)>>([46]) -> ([46]); // 1622 -return([35], [46]); // 1623 -branch_align() -> (); // 1624 -drop([32]) -> (); // 1625 -drop>>([24]) -> (); // 1626 -drop>>([7]) -> (); // 1627 -drop([18]) -> (); // 1628 -array_new() -> ([47]); // 1629 -const_as_immediate>() -> ([48]); // 1630 -store_temp([48]) -> ([48]); // 1631 -array_append([47], [48]) -> ([49]); // 1632 -struct_construct() -> ([50]); // 1633 -struct_construct>>([50], [49]) -> ([51]); // 1634 -enum_init, core::option::Option::>)>, 1>([51]) -> ([52]); // 1635 -store_temp([31]) -> ([31]); // 1636 -store_temp, core::option::Option::>)>>([52]) -> ([52]); // 1637 -return([31], [52]); // 1638 -branch_align() -> (); // 1639 -drop([18]) -> (); // 1640 -drop>>([7]) -> (); // 1641 -array_new() -> ([53]); // 1642 -const_as_immediate>() -> ([54]); // 1643 -store_temp([54]) -> ([54]); // 1644 -array_append([53], [54]) -> ([55]); // 1645 -struct_construct() -> ([56]); // 1646 -struct_construct>>([56], [55]) -> ([57]); // 1647 -enum_init, core::option::Option::>)>, 1>([57]) -> ([58]); // 1648 -store_temp([25]) -> ([25]); // 1649 -store_temp, core::option::Option::>)>>([58]) -> ([58]); // 1650 -return([25], [58]); // 1651 -branch_align() -> (); // 1652 -drop>>([7]) -> (); // 1653 -struct_construct() -> ([59]); // 1654 -enum_init>, 1>([59]) -> ([60]); // 1655 -struct_construct, core::option::Option::>>>([12], [60]) -> ([61]); // 1656 -enum_init, core::option::Option::>)>, 0>([61]) -> ([62]); // 1657 -store_temp([19]) -> ([19]); // 1658 -store_temp, core::option::Option::>)>>([62]) -> ([62]); // 1659 -return([19], [62]); // 1660 -branch_align() -> (); // 1661 -drop([14]) -> (); // 1662 -drop>>([7]) -> (); // 1663 -struct_construct() -> ([63]); // 1664 -enum_init>, 1>([63]) -> ([64]); // 1665 -struct_construct, core::option::Option::>>>([12], [64]) -> ([65]); // 1666 -enum_init, core::option::Option::>)>, 0>([65]) -> ([66]); // 1667 -store_temp([0]) -> ([0]); // 1668 -store_temp, core::option::Option::>)>>([66]) -> ([66]); // 1669 -return([0], [66]); // 1670 +struct_deconstruct>([56]) -> ([57]); // 759 +rename>>([57]) -> ([58]); // 760 +store_temp([49]) -> ([49]); // 761 +store_temp([50]) -> ([50]); // 762 +store_temp([51]) -> ([51]); // 763 +array_snapshot_pop_front([58]) { fallthrough([59], [60]) 843([61]) }; // 764 +branch_align() -> (); // 765 +drop>>([59]) -> (); // 766 +unbox([60]) -> ([62]); // 767 +snapshot_take>([55]) -> ([63], [64]); // 768 +drop>([63]) -> (); // 769 +const_as_immediate>() -> ([65]); // 770 +struct_deconstruct>([64]) -> ([66]); // 771 +rename>>([66]) -> ([67]); // 772 +store_temp([65]) -> ([65]); // 773 +store_temp([62]) -> ([62]); // 774 +array_get([0], [67], [65]) { fallthrough([68], [69]) 826([70]) }; // 775 +branch_align() -> (); // 776 +store_temp>([69]) -> ([69]); // 777 +unbox([69]) -> ([71]); // 778 +rename([62]) -> ([72]); // 779 +rename([71]) -> ([73]); // 780 +store_temp([68]) -> ([68]); // 781 +store_temp([1]) -> ([1]); // 782 +store_temp([22]) -> ([22]); // 783 +store_temp([51]) -> ([51]); // 784 +store_temp([72]) -> ([72]); // 785 +store_temp([73]) -> ([73]); // 786 +function_call([68], [1], [22], [51], [72], [73]) -> ([74], [75], [76]); // 787 +enum_match>([76]) { fallthrough([77]) 818([78]) }; // 788 +branch_align() -> (); // 789 +struct_deconstruct>([77]) -> ([79]); // 790 +enum_match([79]) { fallthrough([80]) 807([81]) }; // 791 +branch_align() -> (); // 792 +drop([80]) -> (); // 793 +array_new() -> ([82]); // 794 +const_as_immediate>() -> ([83]); // 795 +store_temp([83]) -> ([83]); // 796 +array_append([82], [83]) -> ([84]); // 797 +struct_construct() -> ([85]); // 798 +struct_construct>>([85], [84]) -> ([86]); // 799 +enum_init, 1>([86]) -> ([87]); // 800 +store_temp([74]) -> ([74]); // 801 +store_temp([75]) -> ([75]); // 802 +store_temp([49]) -> ([49]); // 803 +store_temp([50]) -> ([50]); // 804 +store_temp>([87]) -> ([87]); // 805 +return([74], [75], [49], [50], [87]); // 806 +branch_align() -> (); // 807 +drop([81]) -> (); // 808 +const_as_immediate>() -> ([88]); // 809 +struct_construct>([88]) -> ([89]); // 810 +enum_init, 0>([89]) -> ([90]); // 811 +store_temp([74]) -> ([74]); // 812 +store_temp([75]) -> ([75]); // 813 +store_temp([49]) -> ([49]); // 814 +store_temp([50]) -> ([50]); // 815 +store_temp>([90]) -> ([90]); // 816 +return([74], [75], [49], [50], [90]); // 817 +branch_align() -> (); // 818 +enum_init, 1>([78]) -> ([91]); // 819 +store_temp([74]) -> ([74]); // 820 +store_temp([75]) -> ([75]); // 821 +store_temp([49]) -> ([49]); // 822 +store_temp([50]) -> ([50]); // 823 +store_temp>([91]) -> ([91]); // 824 +return([74], [75], [49], [50], [91]); // 825 +branch_align() -> (); // 826 +drop([62]) -> (); // 827 +drop([51]) -> (); // 828 +drop([22]) -> (); // 829 +array_new() -> ([92]); // 830 +const_as_immediate>() -> ([93]); // 831 +store_temp([93]) -> ([93]); // 832 +array_append([92], [93]) -> ([94]); // 833 +struct_construct() -> ([95]); // 834 +struct_construct>>([95], [94]) -> ([96]); // 835 +enum_init, 1>([96]) -> ([97]); // 836 +store_temp([70]) -> ([70]); // 837 +store_temp([1]) -> ([1]); // 838 +store_temp([49]) -> ([49]); // 839 +store_temp([50]) -> ([50]); // 840 +store_temp>([97]) -> ([97]); // 841 +return([70], [1], [49], [50], [97]); // 842 +branch_align() -> (); // 843 +drop>>([61]) -> (); // 844 +drop>([55]) -> (); // 845 +drop([51]) -> (); // 846 +drop([22]) -> (); // 847 +array_new() -> ([98]); // 848 +const_as_immediate>() -> ([99]); // 849 +store_temp([99]) -> ([99]); // 850 +array_append([98], [99]) -> ([100]); // 851 +struct_construct() -> ([101]); // 852 +struct_construct>>([101], [100]) -> ([102]); // 853 +enum_init, 1>([102]) -> ([103]); // 854 +store_temp([0]) -> ([0]); // 855 +store_temp([1]) -> ([1]); // 856 +store_temp([49]) -> ([49]); // 857 +store_temp([50]) -> ([50]); // 858 +store_temp>([103]) -> ([103]); // 859 +return([0], [1], [49], [50], [103]); // 860 +branch_align() -> (); // 861 +drop>([21]) -> (); // 862 +drop([22]) -> (); // 863 +struct_construct() -> ([104]); // 864 +struct_construct>>([104], [54]) -> ([105]); // 865 +enum_init, 1>([105]) -> ([106]); // 866 +store_temp([0]) -> ([0]); // 867 +store_temp([1]) -> ([1]); // 868 +store_temp([52]) -> ([52]); // 869 +store_temp([53]) -> ([53]); // 870 +store_temp>([106]) -> ([106]); // 871 +return([0], [1], [52], [53], [106]); // 872 +branch_align() -> (); // 873 +struct_construct() -> ([107]); // 874 +struct_construct>>([107], [10]) -> ([108]); // 875 +enum_init, 1>([108]) -> ([109]); // 876 +store_temp([0]) -> ([0]); // 877 +store_temp([1]) -> ([1]); // 878 +store_temp([8]) -> ([8]); // 879 +store_temp([9]) -> ([9]); // 880 +store_temp>([109]) -> ([109]); // 881 +return([0], [1], [8], [9], [109]); // 882 +disable_ap_tracking() -> (); // 883 +withdraw_gas([0], [1]) { fallthrough([5], [6]) 936([7], [8]) }; // 884 +branch_align() -> (); // 885 +dup([4]) -> ([4], [9]); // 886 +store_temp([5]) -> ([5]); // 887 +felt252_is_zero([9]) { fallthrough() 898([10]) }; // 888 +branch_align() -> (); // 889 +drop([4]) -> (); // 890 +enum_init>, 0>([3]) -> ([11]); // 891 +struct_construct, core::option::Option::>>>([2], [11]) -> ([12]); // 892 +enum_init, core::option::Option::>)>, 0>([12]) -> ([13]); // 893 +store_temp([5]) -> ([5]); // 894 +store_temp([6]) -> ([6]); // 895 +store_temp, core::option::Option::>)>>([13]) -> ([13]); // 896 +return([5], [6], [13]); // 897 +branch_align() -> (); // 898 +drop>([10]) -> (); // 899 +store_temp([5]) -> ([5]); // 900 +store_temp>([2]) -> ([2]); // 901 +function_call([5], [2]) -> ([14], [15]); // 902 +enum_match, core::option::Option::)>>([15]) { fallthrough([16]) 928([17]) }; // 903 +branch_align() -> (); // 904 +struct_deconstruct, core::option::Option::>>([16]) -> ([18], [19]); // 905 +enum_match>([19]) { fallthrough([20]) 918([21]) }; // 906 +branch_align() -> (); // 907 +array_append([3], [20]) -> ([22]); // 908 +const_as_immediate>() -> ([23]); // 909 +felt252_sub([4], [23]) -> ([24]); // 910 +store_temp([14]) -> ([14]); // 911 +store_temp([6]) -> ([6]); // 912 +store_temp>([18]) -> ([18]); // 913 +store_temp>([22]) -> ([22]); // 914 +store_temp([24]) -> ([24]); // 915 +function_call>([14], [6], [18], [22], [24]) -> ([25], [26], [27]); // 916 +return([25], [26], [27]); // 917 +branch_align() -> (); // 918 +drop([4]) -> (); // 919 +drop>([3]) -> (); // 920 +enum_init>, 1>([21]) -> ([28]); // 921 +struct_construct, core::option::Option::>>>([18], [28]) -> ([29]); // 922 +enum_init, core::option::Option::>)>, 0>([29]) -> ([30]); // 923 +store_temp([14]) -> ([14]); // 924 +store_temp([6]) -> ([6]); // 925 +store_temp, core::option::Option::>)>>([30]) -> ([30]); // 926 +return([14], [6], [30]); // 927 +branch_align() -> (); // 928 +drop([4]) -> (); // 929 +drop>([3]) -> (); // 930 +enum_init, core::option::Option::>)>, 1>([17]) -> ([31]); // 931 +store_temp([14]) -> ([14]); // 932 +store_temp([6]) -> ([6]); // 933 +store_temp, core::option::Option::>)>>([31]) -> ([31]); // 934 +return([14], [6], [31]); // 935 +branch_align() -> (); // 936 +drop([4]) -> (); // 937 +drop>([3]) -> (); // 938 +drop>([2]) -> (); // 939 +array_new() -> ([32]); // 940 +const_as_immediate>() -> ([33]); // 941 +store_temp([33]) -> ([33]); // 942 +array_append([32], [33]) -> ([34]); // 943 +struct_construct() -> ([35]); // 944 +struct_construct>>([35], [34]) -> ([36]); // 945 +enum_init, core::option::Option::>)>, 1>([36]) -> ([37]); // 946 +store_temp([7]) -> ([7]); // 947 +store_temp([8]) -> ([8]); // 948 +store_temp, core::option::Option::>)>>([37]) -> ([37]); // 949 +return([7], [8], [37]); // 950 +disable_ap_tracking() -> (); // 951 +get_execution_info_v2_syscall([1], [2]) { fallthrough([5], [6], [7]) 1066([8], [9], [10]) }; // 952 +branch_align() -> (); // 953 +store_temp>([7]) -> ([7]); // 954 +unbox([7]) -> ([11]); // 955 +struct_deconstruct([11]) -> ([12], [13], [14], [15], [16]); // 956 +drop>([12]) -> (); // 957 +drop>([13]) -> (); // 958 +drop([15]) -> (); // 959 +drop([16]) -> (); // 960 +contract_address_to_felt252([14]) -> ([17]); // 961 +store_temp([17]) -> ([17]); // 962 +store_temp([5]) -> ([5]); // 963 +store_temp([6]) -> ([6]); // 964 +felt252_is_zero([17]) { fallthrough() 1050([18]) }; // 965 +branch_align() -> (); // 966 +get_execution_info_v2_syscall([5], [6]) { fallthrough([19], [20], [21]) 1039([22], [23], [24]) }; // 967 +branch_align() -> (); // 968 +store_temp>([21]) -> ([21]); // 969 +unbox([21]) -> ([25]); // 970 +struct_deconstruct([25]) -> ([26], [27], [28], [29], [30]); // 971 +drop>([26]) -> (); // 972 +drop([28]) -> (); // 973 +drop([29]) -> (); // 974 +drop([30]) -> (); // 975 +store_temp>([27]) -> ([27]); // 976 +unbox([27]) -> ([31]); // 977 +struct_deconstruct([31]) -> ([32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44]); // 978 +drop([33]) -> (); // 979 +drop([34]) -> (); // 980 +drop>([35]) -> (); // 981 +drop([36]) -> (); // 982 +drop([37]) -> (); // 983 +drop([38]) -> (); // 984 +drop>([39]) -> (); // 985 +drop([40]) -> (); // 986 +drop>([41]) -> (); // 987 +drop([42]) -> (); // 988 +drop([43]) -> (); // 989 +drop>([44]) -> (); // 990 +store_temp([32]) -> ([32]); // 991 +store_temp([19]) -> ([19]); // 992 +store_temp([20]) -> ([20]); // 993 +felt252_is_zero([32]) { fallthrough() 1010([45]) }; // 994 +branch_align() -> (); // 995 +drop([3]) -> (); // 996 +drop>([4]) -> (); // 997 +array_new() -> ([46]); // 998 +const_as_immediate>() -> ([47]); // 999 +store_temp([47]) -> ([47]); // 1000 +array_append([46], [47]) -> ([48]); // 1001 +struct_construct() -> ([49]); // 1002 +struct_construct>>([49], [48]) -> ([50]); // 1003 +enum_init>)>, 1>([50]) -> ([51]); // 1004 +store_temp([0]) -> ([0]); // 1005 +store_temp([19]) -> ([19]); // 1006 +store_temp([20]) -> ([20]); // 1007 +store_temp>)>>([51]) -> ([51]); // 1008 +return([0], [19], [20], [51]); // 1009 +branch_align() -> (); // 1010 +drop>([45]) -> (); // 1011 +array_new>() -> ([52]); // 1012 +store_temp([0]) -> ([0]); // 1013 +store_temp([19]) -> ([19]); // 1014 +store_temp([20]) -> ([20]); // 1015 +store_temp>([4]) -> ([4]); // 1016 +store_temp>>([52]) -> ([52]); // 1017 +function_call([0], [19], [20], [4], [52]) -> ([53], [54], [55], [56]); // 1018 +enum_match, core::array::Array::>, ())>>([56]) { fallthrough([57]) 1031([58]) }; // 1019 +branch_align() -> (); // 1020 +struct_deconstruct, Array>, Unit>>([57]) -> ([59], [60], [61]); // 1021 +drop>([59]) -> (); // 1022 +drop([61]) -> (); // 1023 +struct_construct>>>([3], [60]) -> ([62]); // 1024 +enum_init>)>, 0>([62]) -> ([63]); // 1025 +store_temp([53]) -> ([53]); // 1026 +store_temp([54]) -> ([54]); // 1027 +store_temp([55]) -> ([55]); // 1028 +store_temp>)>>([63]) -> ([63]); // 1029 +return([53], [54], [55], [63]); // 1030 +branch_align() -> (); // 1031 +drop([3]) -> (); // 1032 +enum_init>)>, 1>([58]) -> ([64]); // 1033 +store_temp([53]) -> ([53]); // 1034 +store_temp([54]) -> ([54]); // 1035 +store_temp([55]) -> ([55]); // 1036 +store_temp>)>>([64]) -> ([64]); // 1037 +return([53], [54], [55], [64]); // 1038 +branch_align() -> (); // 1039 +drop>([4]) -> (); // 1040 +drop([3]) -> (); // 1041 +struct_construct() -> ([65]); // 1042 +struct_construct>>([65], [24]) -> ([66]); // 1043 +enum_init>)>, 1>([66]) -> ([67]); // 1044 +store_temp([0]) -> ([0]); // 1045 +store_temp([22]) -> ([22]); // 1046 +store_temp([23]) -> ([23]); // 1047 +store_temp>)>>([67]) -> ([67]); // 1048 +return([0], [22], [23], [67]); // 1049 +branch_align() -> (); // 1050 +drop>([18]) -> (); // 1051 +drop>([4]) -> (); // 1052 +drop([3]) -> (); // 1053 +array_new() -> ([68]); // 1054 +const_as_immediate>() -> ([69]); // 1055 +store_temp([69]) -> ([69]); // 1056 +array_append([68], [69]) -> ([70]); // 1057 +struct_construct() -> ([71]); // 1058 +struct_construct>>([71], [70]) -> ([72]); // 1059 +enum_init>)>, 1>([72]) -> ([73]); // 1060 +store_temp([0]) -> ([0]); // 1061 +store_temp([5]) -> ([5]); // 1062 +store_temp([6]) -> ([6]); // 1063 +store_temp>)>>([73]) -> ([73]); // 1064 +return([0], [5], [6], [73]); // 1065 +branch_align() -> (); // 1066 +drop>([4]) -> (); // 1067 +drop([3]) -> (); // 1068 +struct_construct() -> ([74]); // 1069 +struct_construct>>([74], [10]) -> ([75]); // 1070 +enum_init>)>, 1>([75]) -> ([76]); // 1071 +store_temp([0]) -> ([0]); // 1072 +store_temp([8]) -> ([8]); // 1073 +store_temp([9]) -> ([9]); // 1074 +store_temp>)>>([76]) -> ([76]); // 1075 +return([0], [8], [9], [76]); // 1076 +alloc_local>>>() -> ([5]); // 1077 +finalize_locals() -> (); // 1078 +disable_ap_tracking() -> (); // 1079 +withdraw_gas([0], [1]) { fallthrough([6], [7]) 1130([8], [9]) }; // 1080 +branch_align() -> (); // 1081 +struct_deconstruct>>([2]) -> ([10]); // 1082 +store_temp([6]) -> ([6]); // 1083 +array_snapshot_pop_front>([10]) { fallthrough([4], [11]) 1120([12]) }; // 1084 +branch_align() -> (); // 1085 +unbox>([11]) -> ([13]); // 1086 +store_temp>([13]) -> ([13]); // 1087 +dup>([13]) -> ([13], [14]); // 1088 +rename>([14]) -> ([15]); // 1089 +struct_deconstruct>([15]) -> ([16]); // 1090 +array_len([16]) -> ([17]); // 1091 +u32_to_felt252([17]) -> ([18]); // 1092 +store_temp([18]) -> ([18]); // 1093 +array_append([3], [18]) -> ([19]); // 1094 +rename>([13]) -> ([20]); // 1095 +store_temp([6]) -> ([6]); // 1096 +store_temp([7]) -> ([7]); // 1097 +store_temp>([20]) -> ([20]); // 1098 +store_temp>([19]) -> ([19]); // 1099 +store_local>>>([5], [4]) -> ([4]); // 1100 +function_call>([6], [7], [20], [19]) -> ([21], [22], [23]); // 1101 +enum_match, ())>>([23]) { fallthrough([24]) 1113([25]) }; // 1102 +branch_align() -> (); // 1103 +struct_construct>>([4]) -> ([26]); // 1104 +struct_deconstruct, Unit>>([24]) -> ([27], [28]); // 1105 +drop([28]) -> (); // 1106 +store_temp([21]) -> ([21]); // 1107 +store_temp([22]) -> ([22]); // 1108 +store_temp>>([26]) -> ([26]); // 1109 +store_temp>([27]) -> ([27]); // 1110 +function_call, core::array::SpanFelt252Serde, core::array::SpanDrop::>>([21], [22], [26], [27]) -> ([29], [30], [31]); // 1111 +return([29], [30], [31]); // 1112 +branch_align() -> (); // 1113 +drop>>>([4]) -> (); // 1114 +enum_init, ())>, 1>([25]) -> ([32]); // 1115 +store_temp([21]) -> ([21]); // 1116 +store_temp([22]) -> ([22]); // 1117 +store_temp, ())>>([32]) -> ([32]); // 1118 +return([21], [22], [32]); // 1119 +branch_align() -> (); // 1120 +drop>>>([12]) -> (); // 1121 +drop>>>>([5]) -> (); // 1122 +struct_construct() -> ([33]); // 1123 +struct_construct, Unit>>([3], [33]) -> ([34]); // 1124 +enum_init, ())>, 0>([34]) -> ([35]); // 1125 +store_temp([6]) -> ([6]); // 1126 +store_temp([7]) -> ([7]); // 1127 +store_temp, ())>>([35]) -> ([35]); // 1128 +return([6], [7], [35]); // 1129 +branch_align() -> (); // 1130 +drop>>>>([5]) -> (); // 1131 +drop>([3]) -> (); // 1132 +drop>>([2]) -> (); // 1133 +array_new() -> ([36]); // 1134 +const_as_immediate>() -> ([37]); // 1135 +store_temp([37]) -> ([37]); // 1136 +array_append([36], [37]) -> ([38]); // 1137 +struct_construct() -> ([39]); // 1138 +struct_construct>>([39], [38]) -> ([40]); // 1139 +enum_init, ())>, 1>([40]) -> ([41]); // 1140 +store_temp([8]) -> ([8]); // 1141 +store_temp([9]) -> ([9]); // 1142 +store_temp, ())>>([41]) -> ([41]); // 1143 +return([8], [9], [41]); // 1144 +dup([5]) -> ([5], [6]); // 1145 +felt252_is_zero([6]) { fallthrough() 1160([7]) }; // 1146 +branch_align() -> (); // 1147 +drop([5]) -> (); // 1148 +drop([2]) -> (); // 1149 +drop([4]) -> (); // 1150 +drop([3]) -> (); // 1151 +struct_construct() -> ([8]); // 1152 +enum_init([8]) -> ([9]); // 1153 +struct_construct>([9]) -> ([10]); // 1154 +enum_init, 0>([10]) -> ([11]); // 1155 +store_temp([0]) -> ([0]); // 1156 +store_temp([1]) -> ([1]); // 1157 +store_temp>([11]) -> ([11]); // 1158 +return([0], [1], [11]); // 1159 +branch_align() -> (); // 1160 +drop>([7]) -> (); // 1161 +const_as_immediate>() -> ([12]); // 1162 +dup([5]) -> ([5], [13]); // 1163 +felt252_sub([13], [12]) -> ([14]); // 1164 +store_temp([14]) -> ([14]); // 1165 +felt252_is_zero([14]) { fallthrough() 1180([15]) }; // 1166 +branch_align() -> (); // 1167 +drop([5]) -> (); // 1168 +drop([2]) -> (); // 1169 +drop([4]) -> (); // 1170 +drop([3]) -> (); // 1171 +struct_construct() -> ([16]); // 1172 +enum_init([16]) -> ([17]); // 1173 +struct_construct>([17]) -> ([18]); // 1174 +enum_init, 0>([18]) -> ([19]); // 1175 +store_temp([0]) -> ([0]); // 1176 +store_temp([1]) -> ([1]); // 1177 +store_temp>([19]) -> ([19]); // 1178 +return([0], [1], [19]); // 1179 +branch_align() -> (); // 1180 +drop>([15]) -> (); // 1181 +const_as_immediate>() -> ([20]); // 1182 +dup([4]) -> ([4], [21]); // 1183 +felt252_sub([21], [20]) -> ([22]); // 1184 +store_temp([22]) -> ([22]); // 1185 +felt252_is_zero([22]) { fallthrough() 1200([23]) }; // 1186 +branch_align() -> (); // 1187 +drop([5]) -> (); // 1188 +drop([2]) -> (); // 1189 +drop([4]) -> (); // 1190 +drop([3]) -> (); // 1191 +struct_construct() -> ([24]); // 1192 +enum_init([24]) -> ([25]); // 1193 +struct_construct>([25]) -> ([26]); // 1194 +enum_init, 0>([26]) -> ([27]); // 1195 +store_temp([0]) -> ([0]); // 1196 +store_temp([1]) -> ([1]); // 1197 +store_temp>([27]) -> ([27]); // 1198 +return([0], [1], [27]); // 1199 +branch_align() -> (); // 1200 +drop>([23]) -> (); // 1201 +ec_point_from_x_nz([0], [3]) { fallthrough([28], [29]) 1364([30]) }; // 1202 +branch_align() -> (); // 1203 +dup([4]) -> ([4], [31]); // 1204 +store_temp>([29]) -> ([29]); // 1205 +ec_point_from_x_nz([28], [31]) { fallthrough([32], [33]) 1351([34]) }; // 1206 +branch_align() -> (); // 1207 +const_as_immediate>() -> ([35]); // 1208 +const_as_immediate>() -> ([36]); // 1209 +store_temp([35]) -> ([35]); // 1210 +store_temp([36]) -> ([36]); // 1211 +store_temp([32]) -> ([32]); // 1212 +store_temp>([33]) -> ([33]); // 1213 +ec_point_try_new_nz([35], [36]) { fallthrough([37]) 1337() }; // 1214 +branch_align() -> (); // 1215 +ec_state_init() -> ([38]); // 1216 +dup([38]) -> ([38], [39]); // 1217 +ec_state_add_mul([1], [39], [5], [33]) -> ([40], [41]); // 1218 +store_temp([41]) -> ([41]); // 1219 +store_temp>([37]) -> ([37]); // 1220 +store_temp([40]) -> ([40]); // 1221 +ec_state_try_finalize_nz([41]) { fallthrough([42]) 1323() }; // 1222 +branch_align() -> (); // 1223 +ec_point_unwrap([42]) -> ([43], [44]); // 1224 +drop([44]) -> (); // 1225 +dup([38]) -> ([38], [45]); // 1226 +ec_state_add_mul([40], [45], [2], [37]) -> ([46], [47]); // 1227 +ec_state_add_mul([46], [38], [4], [29]) -> ([48], [49]); // 1228 +store_temp([49]) -> ([49]); // 1229 +store_temp([47]) -> ([47]); // 1230 +store_temp([48]) -> ([48]); // 1231 +ec_state_try_finalize_nz([49]) { fallthrough([50]) 1312() }; // 1232 +branch_align() -> (); // 1233 +dup([47]) -> ([47], [51]); // 1234 +dup>([50]) -> ([50], [52]); // 1235 +ec_state_add([51], [52]) -> ([53]); // 1236 +store_temp([53]) -> ([53]); // 1237 +ec_state_try_finalize_nz([53]) { fallthrough([54]) 1261() }; // 1238 +branch_align() -> (); // 1239 +ec_point_unwrap([54]) -> ([55], [56]); // 1240 +drop([56]) -> (); // 1241 +dup([43]) -> ([43], [57]); // 1242 +felt252_sub([55], [57]) -> ([58]); // 1243 +store_temp([58]) -> ([58]); // 1244 +felt252_is_zero([58]) { fallthrough() 1258([59]) }; // 1245 +branch_align() -> (); // 1246 +drop([43]) -> (); // 1247 +drop([47]) -> (); // 1248 +drop>([50]) -> (); // 1249 +struct_construct() -> ([60]); // 1250 +enum_init([60]) -> ([61]); // 1251 +struct_construct>([61]) -> ([62]); // 1252 +enum_init, 0>([62]) -> ([63]); // 1253 +store_temp([32]) -> ([32]); // 1254 +store_temp([48]) -> ([48]); // 1255 +store_temp>([63]) -> ([63]); // 1256 +return([32], [48], [63]); // 1257 +branch_align() -> (); // 1258 +drop>([59]) -> (); // 1259 +jump() { 1262() }; // 1260 +branch_align() -> (); // 1261 +unwrap_non_zero([50]) -> ([64]); // 1262 +ec_neg([64]) -> ([65]); // 1263 +store_temp([65]) -> ([65]); // 1264 +ec_point_is_zero([65]) { fallthrough() 1280([66]) }; // 1265 +branch_align() -> (); // 1266 +drop([43]) -> (); // 1267 +drop([47]) -> (); // 1268 +array_new() -> ([67]); // 1269 +const_as_immediate>() -> ([68]); // 1270 +store_temp([68]) -> ([68]); // 1271 +array_append([67], [68]) -> ([69]); // 1272 +struct_construct() -> ([70]); // 1273 +struct_construct>>([70], [69]) -> ([71]); // 1274 +enum_init, 1>([71]) -> ([72]); // 1275 +store_temp([32]) -> ([32]); // 1276 +store_temp([48]) -> ([48]); // 1277 +store_temp>([72]) -> ([72]); // 1278 +return([32], [48], [72]); // 1279 +branch_align() -> (); // 1280 +ec_state_add([47], [66]) -> ([73]); // 1281 +store_temp([73]) -> ([73]); // 1282 +ec_state_try_finalize_nz([73]) { fallthrough([74]) 1302() }; // 1283 +branch_align() -> (); // 1284 +ec_point_unwrap([74]) -> ([75], [76]); // 1285 +drop([76]) -> (); // 1286 +felt252_sub([75], [43]) -> ([77]); // 1287 +store_temp([77]) -> ([77]); // 1288 +felt252_is_zero([77]) { fallthrough() 1299([78]) }; // 1289 +branch_align() -> (); // 1290 +struct_construct() -> ([79]); // 1291 +enum_init([79]) -> ([80]); // 1292 +struct_construct>([80]) -> ([81]); // 1293 +enum_init, 0>([81]) -> ([82]); // 1294 +store_temp([32]) -> ([32]); // 1295 +store_temp([48]) -> ([48]); // 1296 +store_temp>([82]) -> ([82]); // 1297 +return([32], [48], [82]); // 1298 +branch_align() -> (); // 1299 +drop>([78]) -> (); // 1300 +jump() { 1304() }; // 1301 +branch_align() -> (); // 1302 +drop([43]) -> (); // 1303 +struct_construct() -> ([83]); // 1304 +enum_init([83]) -> ([84]); // 1305 +struct_construct>([84]) -> ([85]); // 1306 +enum_init, 0>([85]) -> ([86]); // 1307 +store_temp([32]) -> ([32]); // 1308 +store_temp([48]) -> ([48]); // 1309 +store_temp>([86]) -> ([86]); // 1310 +return([32], [48], [86]); // 1311 +branch_align() -> (); // 1312 +drop([43]) -> (); // 1313 +drop([47]) -> (); // 1314 +struct_construct() -> ([87]); // 1315 +enum_init([87]) -> ([88]); // 1316 +struct_construct>([88]) -> ([89]); // 1317 +enum_init, 0>([89]) -> ([90]); // 1318 +store_temp([32]) -> ([32]); // 1319 +store_temp([48]) -> ([48]); // 1320 +store_temp>([90]) -> ([90]); // 1321 +return([32], [48], [90]); // 1322 +branch_align() -> (); // 1323 +drop([38]) -> (); // 1324 +drop>([29]) -> (); // 1325 +drop([4]) -> (); // 1326 +drop>([37]) -> (); // 1327 +drop([2]) -> (); // 1328 +struct_construct() -> ([91]); // 1329 +enum_init([91]) -> ([92]); // 1330 +struct_construct>([92]) -> ([93]); // 1331 +enum_init, 0>([93]) -> ([94]); // 1332 +store_temp([32]) -> ([32]); // 1333 +store_temp([40]) -> ([40]); // 1334 +store_temp>([94]) -> ([94]); // 1335 +return([32], [40], [94]); // 1336 +branch_align() -> (); // 1337 +drop([2]) -> (); // 1338 +drop>([29]) -> (); // 1339 +drop([4]) -> (); // 1340 +drop([5]) -> (); // 1341 +drop>([33]) -> (); // 1342 +struct_construct() -> ([95]); // 1343 +enum_init([95]) -> ([96]); // 1344 +struct_construct>([96]) -> ([97]); // 1345 +enum_init, 0>([97]) -> ([98]); // 1346 +store_temp([32]) -> ([32]); // 1347 +store_temp([1]) -> ([1]); // 1348 +store_temp>([98]) -> ([98]); // 1349 +return([32], [1], [98]); // 1350 +branch_align() -> (); // 1351 +drop([5]) -> (); // 1352 +drop([2]) -> (); // 1353 +drop>([29]) -> (); // 1354 +drop([4]) -> (); // 1355 +struct_construct() -> ([99]); // 1356 +enum_init([99]) -> ([100]); // 1357 +struct_construct>([100]) -> ([101]); // 1358 +enum_init, 0>([101]) -> ([102]); // 1359 +store_temp([34]) -> ([34]); // 1360 +store_temp([1]) -> ([1]); // 1361 +store_temp>([102]) -> ([102]); // 1362 +return([34], [1], [102]); // 1363 +branch_align() -> (); // 1364 +drop([5]) -> (); // 1365 +drop([2]) -> (); // 1366 +drop([4]) -> (); // 1367 +struct_construct() -> ([103]); // 1368 +enum_init([103]) -> ([104]); // 1369 +struct_construct>([104]) -> ([105]); // 1370 +enum_init, 0>([105]) -> ([106]); // 1371 +store_temp([30]) -> ([30]); // 1372 +store_temp([1]) -> ([1]); // 1373 +store_temp>([106]) -> ([106]); // 1374 +return([30], [1], [106]); // 1375 +struct_deconstruct>([1]) -> ([2]); // 1376 +array_snapshot_pop_front([2]) { fallthrough([3], [4]) 1385([5]) }; // 1377 +branch_align() -> (); // 1378 +unbox([4]) -> ([6]); // 1379 +rename([6]) -> ([7]); // 1380 +enum_init, 0>([7]) -> ([8]); // 1381 +store_temp>>([3]) -> ([9]); // 1382 +store_temp>([8]) -> ([10]); // 1383 +jump() { 1390() }; // 1384 +branch_align() -> (); // 1385 +struct_construct() -> ([11]); // 1386 +enum_init, 1>([11]) -> ([12]); // 1387 +store_temp>>([5]) -> ([9]); // 1388 +store_temp>([12]) -> ([10]); // 1389 +dup>>([9]) -> ([9], [13]); // 1390 +struct_construct>([13]) -> ([14]); // 1391 +enum_match>([10]) { fallthrough([15]) 1457([16]) }; // 1392 +branch_align() -> (); // 1393 +contract_address_try_from_felt252([0], [15]) { fallthrough([17], [18]) 1453([19]) }; // 1394 +branch_align() -> (); // 1395 +drop>([14]) -> (); // 1396 +store_temp([17]) -> ([17]); // 1397 +array_snapshot_pop_front([9]) { fallthrough([20], [21]) 1406([22]) }; // 1398 +branch_align() -> (); // 1399 +unbox([21]) -> ([23]); // 1400 +rename([23]) -> ([24]); // 1401 +enum_init, 0>([24]) -> ([25]); // 1402 +store_temp>>([20]) -> ([26]); // 1403 +store_temp>([25]) -> ([27]); // 1404 +jump() { 1411() }; // 1405 +branch_align() -> (); // 1406 +struct_construct() -> ([28]); // 1407 +enum_init, 1>([28]) -> ([29]); // 1408 +store_temp>>([22]) -> ([26]); // 1409 +store_temp>([29]) -> ([27]); // 1410 +struct_construct>([26]) -> ([30]); // 1411 +enum_match>([27]) { fallthrough([31]) 1445([32]) }; // 1412 +branch_align() -> (); // 1413 +store_temp([17]) -> ([17]); // 1414 +store_temp>([30]) -> ([30]); // 1415 +function_call([17], [30]) -> ([33], [34]); // 1416 +enum_match, core::option::Option::>)>>([34]) { fallthrough([35]) 1438([36]) }; // 1417 +branch_align() -> (); // 1418 +struct_deconstruct, core::option::Option::>>>([35]) -> ([37], [38]); // 1419 +enum_match>>([38]) { fallthrough([39]) 1429([40]) }; // 1420 +branch_align() -> (); // 1421 +struct_construct([18], [31], [39]) -> ([41]); // 1422 +enum_init, 0>([41]) -> ([42]); // 1423 +struct_construct, core::option::Option::>>([37], [42]) -> ([43]); // 1424 +enum_init, core::option::Option::)>, 0>([43]) -> ([44]); // 1425 +store_temp([33]) -> ([33]); // 1426 +store_temp, core::option::Option::)>>([44]) -> ([44]); // 1427 +return([33], [44]); // 1428 +branch_align() -> (); // 1429 +drop([18]) -> (); // 1430 +drop([31]) -> (); // 1431 +enum_init, 1>([40]) -> ([45]); // 1432 +struct_construct, core::option::Option::>>([37], [45]) -> ([46]); // 1433 +enum_init, core::option::Option::)>, 0>([46]) -> ([47]); // 1434 +store_temp([33]) -> ([33]); // 1435 +store_temp, core::option::Option::)>>([47]) -> ([47]); // 1436 +return([33], [47]); // 1437 +branch_align() -> (); // 1438 +drop([31]) -> (); // 1439 +drop([18]) -> (); // 1440 +enum_init, core::option::Option::)>, 1>([36]) -> ([48]); // 1441 +store_temp([33]) -> ([33]); // 1442 +store_temp, core::option::Option::)>>([48]) -> ([48]); // 1443 +return([33], [48]); // 1444 +branch_align() -> (); // 1445 +drop([18]) -> (); // 1446 +enum_init, 1>([32]) -> ([49]); // 1447 +struct_construct, core::option::Option::>>([30], [49]) -> ([50]); // 1448 +enum_init, core::option::Option::)>, 0>([50]) -> ([51]); // 1449 +store_temp([17]) -> ([17]); // 1450 +store_temp, core::option::Option::)>>([51]) -> ([51]); // 1451 +return([17], [51]); // 1452 +branch_align() -> (); // 1453 +drop>>([9]) -> (); // 1454 +store_temp([19]) -> ([52]); // 1455 +jump() { 1461() }; // 1456 +branch_align() -> (); // 1457 +drop([16]) -> (); // 1458 +drop>>([9]) -> (); // 1459 +store_temp([0]) -> ([52]); // 1460 +struct_construct() -> ([53]); // 1461 +enum_init, 1>([53]) -> ([54]); // 1462 +struct_construct, core::option::Option::>>([14], [54]) -> ([55]); // 1463 +enum_init, core::option::Option::)>, 0>([55]) -> ([56]); // 1464 +store_temp, core::option::Option::)>>([56]) -> ([56]); // 1465 +return([52], [56]); // 1466 +disable_ap_tracking() -> (); // 1467 +withdraw_gas([0], [1]) { fallthrough([5], [6]) 1510([7], [8]) }; // 1468 +branch_align() -> (); // 1469 +store_temp([5]) -> ([5]); // 1470 +array_pop_front([3]) { fallthrough([9], [10]) 1501([11]) }; // 1471 +branch_align() -> (); // 1472 +unbox([10]) -> ([12]); // 1473 +struct_deconstruct([12]) -> ([13], [14], [15]); // 1474 +store_temp([13]) -> ([13]); // 1475 +store_temp([14]) -> ([14]); // 1476 +store_temp>([15]) -> ([15]); // 1477 +store_temp>([9]) -> ([9]); // 1478 +call_contract_syscall([6], [2], [13], [14], [15]) { fallthrough([16], [17], [18]) 1490([19], [20], [21]) }; // 1479 +branch_align() -> (); // 1480 +store_temp>([18]) -> ([18]); // 1481 +array_append>([4], [18]) -> ([22]); // 1482 +store_temp([5]) -> ([5]); // 1483 +store_temp([16]) -> ([16]); // 1484 +store_temp([17]) -> ([17]); // 1485 +store_temp>([9]) -> ([9]); // 1486 +store_temp>>([22]) -> ([22]); // 1487 +function_call([5], [16], [17], [9], [22]) -> ([23], [24], [25], [26]); // 1488 +return([23], [24], [25], [26]); // 1489 +branch_align() -> (); // 1490 +drop>([9]) -> (); // 1491 +drop>>([4]) -> (); // 1492 +struct_construct() -> ([27]); // 1493 +struct_construct>>([27], [21]) -> ([28]); // 1494 +enum_init, core::array::Array::>, ())>, 1>([28]) -> ([29]); // 1495 +store_temp([5]) -> ([5]); // 1496 +store_temp([19]) -> ([19]); // 1497 +store_temp([20]) -> ([20]); // 1498 +store_temp, core::array::Array::>, ())>>([29]) -> ([29]); // 1499 +return([5], [19], [20], [29]); // 1500 +branch_align() -> (); // 1501 +struct_construct() -> ([30]); // 1502 +struct_construct, Array>, Unit>>([11], [4], [30]) -> ([31]); // 1503 +enum_init, core::array::Array::>, ())>, 0>([31]) -> ([32]); // 1504 +store_temp([5]) -> ([5]); // 1505 +store_temp([6]) -> ([6]); // 1506 +store_temp([2]) -> ([2]); // 1507 +store_temp, core::array::Array::>, ())>>([32]) -> ([32]); // 1508 +return([5], [6], [2], [32]); // 1509 +branch_align() -> (); // 1510 +drop>([3]) -> (); // 1511 +drop>>([4]) -> (); // 1512 +array_new() -> ([33]); // 1513 +const_as_immediate>() -> ([34]); // 1514 +store_temp([34]) -> ([34]); // 1515 +array_append([33], [34]) -> ([35]); // 1516 +struct_construct() -> ([36]); // 1517 +struct_construct>>([36], [35]) -> ([37]); // 1518 +enum_init, core::array::Array::>, ())>, 1>([37]) -> ([38]); // 1519 +store_temp([7]) -> ([7]); // 1520 +store_temp([8]) -> ([8]); // 1521 +store_temp([2]) -> ([2]); // 1522 +store_temp, core::array::Array::>, ())>>([38]) -> ([38]); // 1523 +return([7], [8], [2], [38]); // 1524 +disable_ap_tracking() -> (); // 1525 +withdraw_gas([0], [1]) { fallthrough([4], [5]) 1552([6], [7]) }; // 1526 +branch_align() -> (); // 1527 +struct_deconstruct>([2]) -> ([8]); // 1528 +store_temp([4]) -> ([4]); // 1529 +array_snapshot_pop_front([8]) { fallthrough([9], [10]) 1543([11]) }; // 1530 +branch_align() -> (); // 1531 +unbox([10]) -> ([12]); // 1532 +rename([12]) -> ([13]); // 1533 +store_temp([13]) -> ([13]); // 1534 +array_append([3], [13]) -> ([14]); // 1535 +struct_construct>([9]) -> ([15]); // 1536 +store_temp([4]) -> ([4]); // 1537 +store_temp([5]) -> ([5]); // 1538 +store_temp>([15]) -> ([15]); // 1539 +store_temp>([14]) -> ([14]); // 1540 +function_call>([4], [5], [15], [14]) -> ([16], [17], [18]); // 1541 +return([16], [17], [18]); // 1542 +branch_align() -> (); // 1543 +drop>>([11]) -> (); // 1544 +struct_construct() -> ([19]); // 1545 +struct_construct, Unit>>([3], [19]) -> ([20]); // 1546 +enum_init, ())>, 0>([20]) -> ([21]); // 1547 +store_temp([4]) -> ([4]); // 1548 +store_temp([5]) -> ([5]); // 1549 +store_temp, ())>>([21]) -> ([21]); // 1550 +return([4], [5], [21]); // 1551 +branch_align() -> (); // 1552 +drop>([3]) -> (); // 1553 +drop>([2]) -> (); // 1554 +array_new() -> ([22]); // 1555 +const_as_immediate>() -> ([23]); // 1556 +store_temp([23]) -> ([23]); // 1557 +array_append([22], [23]) -> ([24]); // 1558 +struct_construct() -> ([25]); // 1559 +struct_construct>>([25], [24]) -> ([26]); // 1560 +enum_init, ())>, 1>([26]) -> ([27]); // 1561 +store_temp([6]) -> ([6]); // 1562 +store_temp([7]) -> ([7]); // 1563 +store_temp, ())>>([27]) -> ([27]); // 1564 +return([6], [7], [27]); // 1565 +struct_deconstruct>([1]) -> ([2]); // 1566 +array_snapshot_pop_front([2]) { fallthrough([3], [4]) 1573([5]) }; // 1567 +branch_align() -> (); // 1568 +enum_init>, 0>([4]) -> ([6]); // 1569 +store_temp>>([3]) -> ([7]); // 1570 +store_temp>>([6]) -> ([8]); // 1571 +jump() { 1578() }; // 1572 +branch_align() -> (); // 1573 +struct_construct() -> ([9]); // 1574 +enum_init>, 1>([9]) -> ([10]); // 1575 +store_temp>>([5]) -> ([7]); // 1576 +store_temp>>([10]) -> ([8]); // 1577 +dup>>([7]) -> ([7], [11]); // 1578 +struct_construct>([11]) -> ([12]); // 1579 +enum_match>>([8]) { fallthrough([13]) 1660([14]) }; // 1580 +branch_align() -> (); // 1581 +unbox([13]) -> ([15]); // 1582 +rename([15]) -> ([16]); // 1583 +store_temp([16]) -> ([16]); // 1584 +u32_try_from_felt252([0], [16]) { fallthrough([17], [18]) 1651([19]) }; // 1585 +branch_align() -> (); // 1586 +drop>([12]) -> (); // 1587 +const_as_immediate>() -> ([20]); // 1588 +dup>>([7]) -> ([7], [21]); // 1589 +dup([18]) -> ([18], [22]); // 1590 +store_temp([20]) -> ([20]); // 1591 +array_slice([17], [21], [20], [22]) { fallthrough([23], [24]) 1638([25]) }; // 1592 +branch_align() -> (); // 1593 +dup>>([7]) -> ([7], [26]); // 1594 +array_len([26]) -> ([27]); // 1595 +dup([18]) -> ([18], [28]); // 1596 +store_temp([27]) -> ([27]); // 1597 +store_temp>>([24]) -> ([24]); // 1598 +u32_overflowing_sub([23], [27], [28]) { fallthrough([29], [30]) 1623([31], [32]) }; // 1599 +branch_align() -> (); // 1600 +array_slice([29], [7], [18], [30]) { fallthrough([33], [34]) 1611([35]) }; // 1601 +branch_align() -> (); // 1602 +struct_construct>([24]) -> ([36]); // 1603 +enum_init>, 0>([36]) -> ([37]); // 1604 +struct_construct>([34]) -> ([38]); // 1605 +struct_construct, core::option::Option::>>>([38], [37]) -> ([39]); // 1606 +enum_init, core::option::Option::>)>, 0>([39]) -> ([40]); // 1607 +store_temp([33]) -> ([33]); // 1608 +store_temp, core::option::Option::>)>>([40]) -> ([40]); // 1609 +return([33], [40]); // 1610 +branch_align() -> (); // 1611 +drop>>([24]) -> (); // 1612 +array_new() -> ([41]); // 1613 +const_as_immediate>() -> ([42]); // 1614 +store_temp([42]) -> ([42]); // 1615 +array_append([41], [42]) -> ([43]); // 1616 +struct_construct() -> ([44]); // 1617 +struct_construct>>([44], [43]) -> ([45]); // 1618 +enum_init, core::option::Option::>)>, 1>([45]) -> ([46]); // 1619 +store_temp([35]) -> ([35]); // 1620 +store_temp, core::option::Option::>)>>([46]) -> ([46]); // 1621 +return([35], [46]); // 1622 +branch_align() -> (); // 1623 +drop([32]) -> (); // 1624 +drop>>([24]) -> (); // 1625 +drop>>([7]) -> (); // 1626 +drop([18]) -> (); // 1627 +array_new() -> ([47]); // 1628 +const_as_immediate>() -> ([48]); // 1629 +store_temp([48]) -> ([48]); // 1630 +array_append([47], [48]) -> ([49]); // 1631 +struct_construct() -> ([50]); // 1632 +struct_construct>>([50], [49]) -> ([51]); // 1633 +enum_init, core::option::Option::>)>, 1>([51]) -> ([52]); // 1634 +store_temp([31]) -> ([31]); // 1635 +store_temp, core::option::Option::>)>>([52]) -> ([52]); // 1636 +return([31], [52]); // 1637 +branch_align() -> (); // 1638 +drop([18]) -> (); // 1639 +drop>>([7]) -> (); // 1640 +array_new() -> ([53]); // 1641 +const_as_immediate>() -> ([54]); // 1642 +store_temp([54]) -> ([54]); // 1643 +array_append([53], [54]) -> ([55]); // 1644 +struct_construct() -> ([56]); // 1645 +struct_construct>>([56], [55]) -> ([57]); // 1646 +enum_init, core::option::Option::>)>, 1>([57]) -> ([58]); // 1647 +store_temp([25]) -> ([25]); // 1648 +store_temp, core::option::Option::>)>>([58]) -> ([58]); // 1649 +return([25], [58]); // 1650 +branch_align() -> (); // 1651 +drop>>([7]) -> (); // 1652 +struct_construct() -> ([59]); // 1653 +enum_init>, 1>([59]) -> ([60]); // 1654 +struct_construct, core::option::Option::>>>([12], [60]) -> ([61]); // 1655 +enum_init, core::option::Option::>)>, 0>([61]) -> ([62]); // 1656 +store_temp([19]) -> ([19]); // 1657 +store_temp, core::option::Option::>)>>([62]) -> ([62]); // 1658 +return([19], [62]); // 1659 +branch_align() -> (); // 1660 +drop([14]) -> (); // 1661 +drop>>([7]) -> (); // 1662 +struct_construct() -> ([63]); // 1663 +enum_init>, 1>([63]) -> ([64]); // 1664 +struct_construct, core::option::Option::>>>([12], [64]) -> ([65]); // 1665 +enum_init, core::option::Option::>)>, 0>([65]) -> ([66]); // 1666 +store_temp([0]) -> ([0]); // 1667 +store_temp, core::option::Option::>)>>([66]) -> ([66]); // 1668 +return([0], [66]); // 1669 cairo_level_tests::contracts::account::account::__wrapper____validate_deploy__@0([0]: RangeCheck, [1]: EcOp, [2]: GasBuiltin, [3]: System, [4]: core::array::Span::) -> (RangeCheck, EcOp, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); cairo_level_tests::contracts::account::account::__wrapper__AccountContractImpl____validate_declare__@149([0]: RangeCheck, [1]: EcOp, [2]: GasBuiltin, [3]: System, [4]: core::array::Span::) -> (RangeCheck, EcOp, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); @@ -1996,11 +1995,11 @@ cairo_level_tests::contracts::account::account::__wrapper__AccountContractImpl__ cairo_level_tests::contracts::account::account::__wrapper__AccountContractImpl____execute__@412([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); cairo_level_tests::contracts::account::account::__wrapper__constructor@591([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); cairo_level_tests::contracts::account::account::StorageImpl::validate_transaction@695([0]: RangeCheck, [1]: EcOp, [2]: GasBuiltin, [3]: System, [4]: cairo_level_tests::contracts::account::account::ContractState) -> (RangeCheck, EcOp, GasBuiltin, System, core::panics::PanicResult::<(core::felt252,)>); -core::array::deserialize_array_helper::@884([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array, [4]: felt252) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>); -cairo_level_tests::contracts::account::account::AccountContractImpl::__execute__@952([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: cairo_level_tests::contracts::account::account::ContractState, [4]: Array) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(cairo_level_tests::contracts::account::account::ContractState, core::array::Array::>)>); -core::array::serialize_array_helper::, core::array::SpanFelt252Serde, core::array::SpanDrop::>@1078([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::>, [3]: Array) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Array::, ())>); -core::ecdsa::check_ecdsa_signature@1146([0]: RangeCheck, [1]: EcOp, [2]: felt252, [3]: felt252, [4]: felt252, [5]: felt252) -> (RangeCheck, EcOp, core::panics::PanicResult::<(core::bool,)>); -core::starknet::account::CallSerde::deserialize@1377([0]: RangeCheck, [1]: core::array::Span::) -> (RangeCheck, core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>); -cairo_level_tests::contracts::account::account::AccountContractImpl::__execute__[expr33]@1468([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: Array, [4]: Array>) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Array::, core::array::Array::>, ())>); -core::array::serialize_array_helper::@1526([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Array::, ())>); -core::array::SpanFelt252Serde::deserialize@1567([0]: RangeCheck, [1]: core::array::Span::) -> (RangeCheck, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>); +core::array::deserialize_array_helper::@883([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array, [4]: felt252) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>); +cairo_level_tests::contracts::account::account::AccountContractImpl::__execute__@951([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: cairo_level_tests::contracts::account::account::ContractState, [4]: Array) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(cairo_level_tests::contracts::account::account::ContractState, core::array::Array::>)>); +core::array::serialize_array_helper::, core::array::SpanFelt252Serde, core::array::SpanDrop::>@1077([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::>, [3]: Array) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Array::, ())>); +core::ecdsa::check_ecdsa_signature@1145([0]: RangeCheck, [1]: EcOp, [2]: felt252, [3]: felt252, [4]: felt252, [5]: felt252) -> (RangeCheck, EcOp, core::panics::PanicResult::<(core::bool,)>); +core::starknet::account::CallSerde::deserialize@1376([0]: RangeCheck, [1]: core::array::Span::) -> (RangeCheck, core::panics::PanicResult::<(core::array::Span::, core::option::Option::)>); +cairo_level_tests::contracts::account::account::AccountContractImpl::__execute__[expr33]@1467([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: Array, [4]: Array>) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Array::, core::array::Array::>, ())>); +core::array::serialize_array_helper::@1525([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Array::, ())>); +core::array::SpanFelt252Serde::deserialize@1566([0]: RangeCheck, [1]: core::array::Span::) -> (RangeCheck, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>);