From bbebe80f90dedd4be92efda8b84f48a584cd558d Mon Sep 17 00:00:00 2001 From: Ilya Lesokhin Date: Sun, 11 Aug 2024 11:09:12 +0300 Subject: [PATCH] feat: support reverts of inner calls --- .../cairo1/compiled/test_contract.casm.json | 3648 +++++++++++------ .../cairo1/test_contract.cairo | 35 + .../deprecated_syscalls/hint_processor.rs | 8 +- .../blockifier/src/execution/entry_point.rs | 94 +- .../src/execution/entry_point_execution.rs | 6 +- .../src/execution/stack_trace_test.rs | 73 +- .../src/execution/syscalls/hint_processor.rs | 80 +- .../blockifier/src/execution/syscalls/mod.rs | 6 +- .../syscalls/syscall_tests/call_contract.rs | 40 + .../syscalls/syscall_tests/get_block_hash.rs | 9 +- .../syscalls/syscall_tests/library_call.rs | 9 +- .../syscalls/syscall_tests/out_of_gas.rs | 9 +- .../src/transaction/account_transaction.rs | 1 - .../transaction/account_transactions_test.rs | 52 + .../src/transaction/transactions.rs | 19 +- 15 files changed, 2851 insertions(+), 1238 deletions(-) diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json index ae5ce4d90f..e83fe5605a 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json @@ -100,9 +100,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4795", + "0x4a6e", "0x482480017fff8000", - "0x4794", + "0x4a6d", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -275,9 +275,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x46e6", + "0x49bf", "0x482480017fff8000", - "0x46e5", + "0x49be", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -536,7 +536,7 @@ "0x48127ffa7fff8000", "0x480080007ff88000", "0x1104800180018000", - "0x1643", + "0x1810", "0x20680017fff7ffa", "0xb", "0x48127ff87fff8000", @@ -588,9 +588,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x45ad", + "0x4886", "0x482480017fff8000", - "0x45ac", + "0x4885", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -715,6 +715,467 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", + "0x2", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x10c", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480280007ffc8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0xe1", + "0x40137fff7fff8001", + "0xa0680017fff8004", + "0xe", + "0x4825800180048001", + "0x800000000000000000000000000000000000000000000000000000000000000", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8002", + "0x480080007ff67ffc", + "0x480080017ff57ffc", + "0x402480017ffb7ffd", + "0xffffffffffffffeeffffffffffffffff", + "0x400080027ff47ffd", + "0x10780017fff7fff", + "0xce", + "0x484480017fff8001", + "0x8000000000000000000000000000000", + "0x48317fff80008001", + "0x480080007ff77ffd", + "0x480080017ff67ffd", + "0x402480017ffc7ffe", + "0xf8000000000000000000000000000000", + "0x400080027ff57ffe", + "0x482480017ff58000", + "0x3", + "0x48307ff680007ff7", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ff58000", + "0x1", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x0", + "0x480080007ff28000", + "0x10780017fff7fff", + "0x8", + "0x48127ff57fff8000", + "0x48127ff57fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0xa1", + "0x40137fff7fff8000", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482480017ffb8000", + "0x1", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ff87fff8000", + "0x10780017fff7fff", + "0x8", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x20", + "0x40780017fff7fff", + "0x1", + "0x48127ff47fff8000", + "0x48127fe77fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x480080007ff88000", + "0x1104800180018000", + "0x16ed", + "0x20680017fff7ffa", + "0xb", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x10780017fff7fff", + "0x14", + "0x48127ff87fff8000", + "0x48127ff87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ff57fff8000", + "0x48127fe87fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffd", + "0x53", + "0x48307ffb80007ffc", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ff67fff8000", + "0x48127ff67fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x4763", + "0x482480017fff8000", + "0x4762", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007ff4", + "0x602c", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff17fff", + "0x10780017fff7fff", + "0x23", + "0x4824800180007ff4", + "0x602c", + "0x400080007ff27fff", + "0x482480017ff28000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x480a80017fff8000", + "0x480a80007fff8000", + "0x48127ff27fff8000", + "0x48127ff27fff8000", + "0x1104800180018000", + "0x16fc", + "0x20680017fff7ffd", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017fef8000", + "0x1", + "0x48127fef7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202333", + "0x400080007ffe7fff", + "0x48127ff77fff8000", + "0x48127ff77fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202332", + "0x400080007ffe7fff", + "0x48127ff87fff8000", + "0x48127feb7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x482480017ff48000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x6", + "0x48127ff47fff8000", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fef7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0xa0680017fff8000", + "0x7", + "0x482680017ffa8000", + "0x100000000000000000000000000000000", + "0x400280007ff97fff", + "0x10780017fff7fff", + "0x97", + "0x4825800180007ffa", + "0x0", + "0x400280007ff97fff", + "0x482680017ff98000", + "0x1", + "0x48297ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0xa", + "0x482680017ffc8000", + "0x1", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x0", + "0x480280007ffc8000", + "0x10780017fff7fff", + "0x8", + "0x480a7ffc7fff8000", + "0x480a7ffd7fff8000", + "0x480680017fff8000", + "0x1", + "0x480680017fff8000", + "0x0", + "0x20680017fff7ffe", + "0x6c", + "0xa0680017fff8004", + "0xe", + "0x4824800180047ffe", + "0x800000000000000000000000000000000000000000000000000000000000000", + "0x484480017ffe8000", + "0x110000000000000000", + "0x48307ffe7fff8002", + "0x480080007ff67ffc", + "0x480080017ff57ffc", + "0x402480017ffb7ffd", + "0xffffffffffffffeeffffffffffffffff", + "0x400080027ff47ffd", + "0x10780017fff7fff", + "0x5a", + "0x484480017fff8001", + "0x8000000000000000000000000000000", + "0x48307fff80007ffd", + "0x480080007ff77ffd", + "0x480080017ff67ffd", + "0x402480017ffc7ffe", + "0xf8000000000000000000000000000000", + "0x400080027ff57ffe", + "0x482480017ff58000", + "0x3", + "0x48307ff680007ff7", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x10", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473", + "0x400080007ffe7fff", + "0x48127ffc7fff8000", + "0x48127fef7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x1104800180018000", + "0x4699", + "0x482480017fff8000", + "0x4698", + "0x480080007fff8000", + "0xa0680017fff8000", + "0x9", + "0x4824800180007fed", + "0x9e66", + "0x482480017fff8000", + "0x100000000000000000000000000000000", + "0x400080007ff77fff", + "0x10780017fff7fff", + "0x20", + "0x4824800180007fed", + "0x9e66", + "0x400080007ff87fff", + "0x482480017ff88000", + "0x1", + "0x48127ffe7fff8000", + "0x480a7ffb7fff8000", + "0x48127fef7fff8000", + "0x1104800180018000", + "0x16c3", + "0x20680017fff7ffd", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x48127ff97fff8000", + "0x480680017fff8000", + "0x0", + "0x48127ffb7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x48127ffa7fff8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482480017ff58000", + "0x1", + "0x48127fe87fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x482480017ff48000", + "0x3", + "0x10780017fff7fff", + "0x5", + "0x40780017fff7fff", + "0x6", + "0x48127ff47fff8000", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4661696c656420746f20646573657269616c697a6520706172616d202331", + "0x400080007ffe7fff", + "0x48127ffd7fff8000", + "0x48127fef7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7574206f6620676173", + "0x400080007ffe7fff", + "0x482680017ff98000", + "0x1", + "0x480a7ffa7fff8000", + "0x480a7ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", "0x3", "0xa0680017fff8000", "0x7", @@ -922,9 +1383,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x445f", + "0x456b", "0x482480017fff8000", - "0x445e", + "0x456a", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -950,7 +1411,7 @@ "0x480a80017fff8000", "0x480a80027fff8000", "0x1104800180018000", - "0x1501", + "0x160d", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -1128,9 +1589,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4391", + "0x449d", "0x482480017fff8000", - "0x4390", + "0x449c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1245,7 +1706,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x1444", + "0x1550", "0x20680017fff7ffc", "0xf2", "0x48127ff97fff8000", @@ -1256,7 +1717,7 @@ "0x40137ffa7fff8001", "0x40137ffb7fff8002", "0x1104800180018000", - "0x1506", + "0x1612", "0x20680017fff7feb", "0xdf", "0x20680017fff7fee", @@ -1344,9 +1805,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x42b9", + "0x43c5", "0x482480017fff8000", - "0x42b8", + "0x43c4", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1388,7 +1849,7 @@ "0x48127fdb7fff8000", "0x48127fdf7fff8000", "0x1104800180018000", - "0x1937", + "0x1a43", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -1682,9 +2143,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4167", + "0x4273", "0x482480017fff8000", - "0x4166", + "0x4272", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1969,9 +2430,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4048", + "0x4154", "0x482480017fff8000", - "0x4047", + "0x4153", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1993,7 +2454,7 @@ "0x48127fee7fff8000", "0x48127ff27fff8000", "0x1104800180018000", - "0x184a", + "0x1956", "0x482480017fc88000", "0x1", "0x48127ffa7fff8000", @@ -2186,9 +2647,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3f6f", + "0x407b", "0x482480017fff8000", - "0x3f6e", + "0x407a", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2402,9 +2863,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3e97", + "0x3fa3", "0x482480017fff8000", - "0x3e96", + "0x3fa2", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2541,9 +3002,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3e0c", + "0x3f18", "0x482480017fff8000", - "0x3e0b", + "0x3f17", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2575,7 +3036,7 @@ "0x48127ff77fff8000", "0x480080007ffc8000", "0x1104800180018000", - "0x164c", + "0x1758", "0x40780017fff7fff", "0x1", "0x48127ffa7fff8000", @@ -2814,9 +3275,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3cfb", + "0x3e07", "0x482480017fff8000", - "0x3cfa", + "0x3e06", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2992,9 +3453,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3c49", + "0x3d55", "0x482480017fff8000", - "0x3c48", + "0x3d54", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3013,7 +3474,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x1554", + "0x1660", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -3096,9 +3557,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3be1", + "0x3ced", "0x482480017fff8000", - "0x3be0", + "0x3cec", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3117,7 +3578,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x15c0", + "0x16cc", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -3201,9 +3662,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3b78", + "0x3c84", "0x482480017fff8000", - "0x3b77", + "0x3c83", "0x480080007fff8000", "0x480080017fff8000", "0x484480017fff8000", @@ -3226,7 +3687,7 @@ "0x480a7ff97fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x15a6", + "0x16b2", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -3313,9 +3774,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3b08", + "0x3c14", "0x482480017fff8000", - "0x3b07", + "0x3c13", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3334,7 +3795,7 @@ "0x48127ffe7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x169a", + "0x17a6", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -3459,9 +3920,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3a76", + "0x3b82", "0x482480017fff8000", - "0x3a75", + "0x3b81", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3661,9 +4122,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x39ac", + "0x3ab8", "0x482480017fff8000", - "0x39ab", + "0x3ab7", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3684,7 +4145,7 @@ "0x48127ff47fff8000", "0x48127ff47fff8000", "0x1104800180018000", - "0x16c5", + "0x17d1", "0x20680017fff7ffd", "0xe", "0x40780017fff7fff", @@ -3783,9 +4244,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3932", + "0x3a3e", "0x482480017fff8000", - "0x3931", + "0x3a3d", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3897,9 +4358,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x38c0", + "0x39cc", "0x482480017fff8000", - "0x38bf", + "0x39cb", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3918,7 +4379,7 @@ "0x48127ffe7fff8000", "0x48127ff67fff8000", "0x1104800180018000", - "0x172a", + "0x1836", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -4036,9 +4497,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3835", + "0x3941", "0x482480017fff8000", - "0x3834", + "0x3940", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -4057,7 +4518,7 @@ "0x48127ffe7fff8000", "0x48127ff67fff8000", "0x1104800180018000", - "0x16cf", + "0x17db", "0x20680017fff7ffd", "0xc", "0x40780017fff7fff", @@ -4241,9 +4702,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3768", + "0x3874", "0x482480017fff8000", - "0x3767", + "0x3873", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -4485,9 +4946,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3674", + "0x3780", "0x482480017fff8000", - "0x3673", + "0x377f", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -4513,7 +4974,7 @@ "0x48127feb7fff8000", "0x48127fef7fff8000", "0x1104800180018000", - "0x1533", + "0x163f", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -4628,7 +5089,7 @@ "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x1583", + "0x168f", "0x20680017fff7ffc", "0x63", "0x48307ffa80007ffb", @@ -4653,9 +5114,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x35cc", + "0x36d8", "0x482480017fff8000", - "0x35cb", + "0x36d7", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -4686,7 +5147,7 @@ "0x48127feb7fff8000", "0x48127feb7fff8000", "0x1104800180018000", - "0x160d", + "0x1719", "0x20680017fff7ffd", "0xe", "0x40780017fff7fff", @@ -4821,7 +5282,7 @@ "0x48127ff67fff8000", "0x48127ff67fff8000", "0x1104800180018000", - "0x14c2", + "0x15ce", "0x20680017fff7ffc", "0x60", "0x48307ffa80007ffb", @@ -4844,9 +5305,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x350d", + "0x3619", "0x482480017fff8000", - "0x350c", + "0x3618", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5001,9 +5462,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3470", + "0x357c", "0x482480017fff8000", - "0x346f", + "0x357b", "0x480080007fff8000", "0x480080027fff8000", "0x482480017fff8000", @@ -5024,7 +5485,7 @@ "0x48127ffd7fff8000", "0x480a7ffb7fff8000", "0x1104800180018000", - "0x15dd", + "0x16e9", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -5133,9 +5594,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x33ec", + "0x34f8", "0x482480017fff8000", - "0x33eb", + "0x34f7", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -5159,7 +5620,7 @@ "0x480a7ffb7fff8000", "0x48127ff17fff8000", "0x1104800180018000", - "0x1678", + "0x1784", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -5282,9 +5743,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3357", + "0x3463", "0x482480017fff8000", - "0x3356", + "0x3462", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5420,9 +5881,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x32cd", + "0x33d9", "0x482480017fff8000", - "0x32cc", + "0x33d8", "0x480080007fff8000", "0x480080047fff8000", "0x484480017fff8000", @@ -5450,7 +5911,7 @@ "0x480a7ff77fff8000", "0x48127ffb7fff8000", "0x1104800180018000", - "0x1683", + "0x178f", "0x20680017fff7ffd", "0xf", "0x40780017fff7fff", @@ -5546,9 +6007,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x324f", + "0x335b", "0x482480017fff8000", - "0x324e", + "0x335a", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5564,14 +6025,14 @@ "0x400080007ff87fff", "0x480a7ff97fff8000", "0x1104800180018000", - "0x17e3", + "0x18ef", "0x482480017fe88000", "0x1", "0x20680017fff7ffc", "0x17", "0x48127ffb7fff8000", "0x1104800180018000", - "0x17dc", + "0x18e8", "0x20680017fff7ffd", "0xd", "0x40780017fff7fff", @@ -5710,9 +6171,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x31ab", + "0x32b7", "0x482480017fff8000", - "0x31aa", + "0x32b6", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5916,9 +6377,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x30dd", + "0x31e9", "0x482480017fff8000", - "0x30dc", + "0x31e8", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -6121,9 +6582,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3010", + "0x311c", "0x482480017fff8000", - "0x300f", + "0x311b", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -6326,6 +6787,274 @@ "0x482480017ff78000", "0x1", "0x208b7fff7fff7ffe", + "0x480680017fff8000", + "0x43616c6c436f6e7472616374", + "0x400280007ff97fff", + "0x400380017ff97ff8", + "0x400380027ff97ffa", + "0x400380037ff97ffb", + "0x400380047ff97ffc", + "0x400380057ff97ffd", + "0x480280077ff98000", + "0x20680017fff7fff", + "0x1c", + "0x40780017fff7fff", + "0xc", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x46a6158a16a947e5916b2a2ca68501a45e93d7110e81aa2d6438b1c57c879a3", + "0x400080007ffe7fff", + "0x480680017fff8000", + "0x0", + "0x400080017ffd7fff", + "0x480680017fff8000", + "0x457870656374656420726576657274", + "0x400080027ffc7fff", + "0x480680017fff8000", + "0xf", + "0x400080037ffb7fff", + "0x480a7ff77fff8000", + "0x480280067ff98000", + "0x482680017ff98000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x48127ff77fff8000", + "0x482480017ff68000", + "0x4", + "0x208b7fff7fff7ffe", + "0x480280087ff98000", + "0x480280097ff98000", + "0x480280067ff98000", + "0x482680017ff98000", + "0xa", + "0x48307ffc80007ffd", + "0x20680017fff7fff", + "0x4", + "0x10780017fff7fff", + "0x51", + "0x4824800180007ffc", + "0x1", + "0x480080007fff8000", + "0x4824800180007fff", + "0x454e545259504f494e545f4641494c4544", + "0x20680017fff7fff", + "0x3a", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1275130f95dda36bcbb6e9d28796c1d7e10b6e9fd5ed083e0ede4b12f613528", + "0x480680017fff8000", + "0x53746f7261676552656164", + "0x400080007ff87fff", + "0x400080017ff87ff7", + "0x400080027ff87ffd", + "0x400080037ff87ffe", + "0x480080057ff88000", + "0x20680017fff7fff", + "0x22", + "0x480080067ff78000", + "0x480080047ff68000", + "0x482480017ff58000", + "0x7", + "0x20680017fff7ffd", + "0xe", + "0x40780017fff7fff", + "0x2", + "0x480a7ff77fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x0", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x76616c7565732073686f756c64206e6f74206368616e67652e", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x48127ffb7fff8000", + "0x48127ffb7fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5", + "0x480a7ff77fff8000", + "0x480080047ff18000", + "0x482480017ff08000", + "0x8", + "0x480680017fff8000", + "0x1", + "0x480080067fee8000", + "0x480080077fed8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x7", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x556e6578706563746564206572726f72", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xa", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x4f7074696f6e3a3a756e77726170206661696c65642e", + "0x400080007ffe7fff", + "0x480a7ff77fff8000", + "0x48127ff07fff8000", + "0x48127ff07fff8000", + "0x480680017fff8000", + "0x1", + "0x48127ffa7fff8000", + "0x482480017ff98000", + "0x1", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x0", + "0x400080007ffe7fff", + "0x48127ffe7fff8000", + "0x482480017ffd8000", + "0x1", + "0x480680017fff8000", + "0x456d69744576656e74", + "0x400280007ffc7fff", + "0x400380017ffc7ffb", + "0x400280027ffc7ffd", + "0x400280037ffc7ffe", + "0x400280047ffc7ffd", + "0x400280057ffc7ffe", + "0x480280077ffc8000", + "0x20680017fff7fff", + "0x62", + "0x480280067ffc8000", + "0x480680017fff8000", + "0x5265706c616365436c617373", + "0x400280087ffc7fff", + "0x400280097ffc7ffe", + "0x4003800a7ffc7ffd", + "0x4802800c7ffc8000", + "0x20680017fff7fff", + "0x4e", + "0x4802800b7ffc8000", + "0x480680017fff8000", + "0x11", + "0x480680017fff8000", + "0x53656e644d657373616765546f4c31", + "0x4002800d7ffc7fff", + "0x4002800e7ffc7ffd", + "0x4002800f7ffc7ffe", + "0x400280107ffc7ff6", + "0x400280117ffc7ff7", + "0x480280137ffc8000", + "0x20680017fff7fff", + "0x36", + "0x480280127ffc8000", + "0x480680017fff8000", + "0x0", + "0x480680017fff8000", + "0x1275130f95dda36bcbb6e9d28796c1d7e10b6e9fd5ed083e0ede4b12f613528", + "0x480680017fff8000", + "0x11", + "0x480680017fff8000", + "0x53746f726167655772697465", + "0x400280147ffc7fff", + "0x400280157ffc7ffb", + "0x400280167ffc7ffc", + "0x400280177ffc7ffd", + "0x400280187ffc7ffe", + "0x4802801a7ffc8000", + "0x20680017fff7fff", + "0x1a", + "0x40780017fff7fff", + "0x1", + "0x480680017fff8000", + "0x46a6158a16a947e5916b2a2ca68501a45e93d7110e81aa2d6438b1c57c879a3", + "0x400080007ffe7fff", + "0x480680017fff8000", + "0x0", + "0x400080017ffd7fff", + "0x480680017fff8000", + "0x746573745f7265766572745f68656c706572", + "0x400080027ffc7fff", + "0x480680017fff8000", + "0x12", + "0x400080037ffb7fff", + "0x480a7ffa7fff8000", + "0x480280197ffc8000", + "0x482680017ffc8000", + "0x1b", + "0x480680017fff8000", + "0x1", + "0x48127ff77fff8000", + "0x482480017ff68000", + "0x4", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x5", + "0x480a7ffa7fff8000", + "0x480280197ffc8000", + "0x482680017ffc8000", + "0x1d", + "0x480680017fff8000", + "0x1", + "0x4802801b7ffc8000", + "0x4802801c7ffc8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xb", + "0x480a7ffa7fff8000", + "0x480280127ffc8000", + "0x482680017ffc8000", + "0x16", + "0x480680017fff8000", + "0x1", + "0x480280147ffc8000", + "0x480280157ffc8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0xf", + "0x480a7ffa7fff8000", + "0x4802800b7ffc8000", + "0x482680017ffc8000", + "0xf", + "0x480680017fff8000", + "0x1", + "0x4802800d7ffc8000", + "0x4802800e7ffc8000", + "0x208b7fff7fff7ffe", + "0x40780017fff7fff", + "0x12", + "0x480a7ffa7fff8000", + "0x480280067ffc8000", + "0x482680017ffc8000", + "0xa", + "0x480680017fff8000", + "0x1", + "0x480280087ffc8000", + "0x480280097ffc8000", + "0x208b7fff7fff7ffe", "0xa0680017fff8000", "0x7", "0x482680017ff68000", @@ -18429,6 +19158,8 @@ 241, 180, 291, + 290, + 171, 336, 178, 289, @@ -18460,6 +19191,8 @@ 250, 187, 92, + 142, + 126, 106, 205, 1205, @@ -18825,7 +19558,655 @@ ] ], [ - 295, + 295, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 305, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 326, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 341, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -5 + }, + "b": { + "Immediate": "0x7" + } + } + } + } + } + ] + ], + [ + 344, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 371, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 391, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 406, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 423, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 457, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": 1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 461, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 471, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "FP", + "offset": 1 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 524, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 571, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 590, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x28b4" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -11 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 612, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -5 + } + } + } + } + ] + ], + [ + 633, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 648, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 662, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 683, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 697, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 714, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 748, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "FP", + "offset": 1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 752, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "AP", + "offset": 3 + } + }, + "scalar": { + "Immediate": "0x110000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -2 + }, + "y": { + "register": "AP", + "offset": -1 + } + } + } + ] + ], + [ + 762, + [ + { + "LinearSplit": { + "value": { + "Deref": { + "register": "FP", + "offset": 1 + } + }, + "scalar": { + "Immediate": "0x8000000000000000000000000000000" + }, + "max_x": { + "Immediate": "0xffffffffffffffffffffffffffffffff" + }, + "x": { + "register": "AP", + "offset": -1 + }, + "y": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 815, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 862, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 881, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x602c" + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -11 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 905, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 923, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 938, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 952, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 973, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 987, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1002, + [ + { + "TestLessThanOrEqual": { + "lhs": { + "Immediate": "0x0" + }, + "rhs": { + "Deref": { + "register": "FP", + "offset": -6 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 1035, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": 4 + } + } + } + ] + ], + [ + 1039, [ { "LinearSplit": { @@ -18854,7 +20235,7 @@ ] ], [ - 305, + 1049, [ { "LinearSplit": { @@ -18883,56 +20264,7 @@ ] ], [ - 326, - [ - { - "SystemCall": { - "system": { - "Deref": { - "register": "FP", - "offset": -5 - } - } - } - } - ] - ], - [ - 341, - [ - { - "SystemCall": { - "system": { - "BinOp": { - "op": "Add", - "a": { - "register": "FP", - "offset": -5 - }, - "b": { - "Immediate": "0x7" - } - } - } - } - } - ] - ], - [ - 344, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 371, + 1064, [ { "AllocSegment": { @@ -18945,171 +20277,17 @@ ] ], [ - 391, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 406, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 423, + 1083, [ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x0" - }, - "rhs": { - "Deref": { - "register": "FP", - "offset": -6 - } - }, - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 457, - [ - { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "FP", - "offset": 1 - } + "Immediate": "0x9e66" }, "rhs": { - "Immediate": "0x800000000000000000000000000000000000000000000000000000000000000" - }, - "dst": { - "register": "AP", - "offset": 4 - } - } - } - ] - ], - [ - 461, - [ - { - "LinearSplit": { - "value": { "Deref": { "register": "AP", - "offset": 3 - } - }, - "scalar": { - "Immediate": "0x110000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -2 - }, - "y": { - "register": "AP", - "offset": -1 - } - } - } - ] - ], - [ - 471, - [ - { - "LinearSplit": { - "value": { - "Deref": { - "register": "FP", - "offset": 1 - } - }, - "scalar": { - "Immediate": "0x8000000000000000000000000000000" - }, - "max_x": { - "Immediate": "0xffffffffffffffffffffffffffffffff" - }, - "x": { - "register": "AP", - "offset": -1 - }, - "y": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 524, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 571, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 590, - [ - { - "TestLessThanOrEqual": { - "lhs": { - "Immediate": "0x28b4" - }, - "rhs": { - "Deref": { - "register": "AP", - "offset": -11 + "offset": -18 } }, "dst": { @@ -19121,35 +20299,7 @@ ] ], [ - 612, - [ - { - "SystemCall": { - "system": { - "Deref": { - "register": "FP", - "offset": -5 - } - } - } - } - ] - ], - [ - 633, - [ - { - "AllocSegment": { - "dst": { - "register": "AP", - "offset": 0 - } - } - } - ] - ], - [ - 648, + 1104, [ { "AllocSegment": { @@ -19162,7 +20312,7 @@ ] ], [ - 662, + 1122, [ { "AllocSegment": { @@ -19175,7 +20325,7 @@ ] ], [ - 683, + 1144, [ { "AllocSegment": { @@ -19188,7 +20338,7 @@ ] ], [ - 697, + 1158, [ { "AllocSegment": { @@ -19201,7 +20351,7 @@ ] ], [ - 714, + 1175, [ { "TestLessThanOrEqual": { @@ -19223,7 +20373,7 @@ ] ], [ - 748, + 1209, [ { "TestLessThan": { @@ -19251,7 +20401,7 @@ ] ], [ - 752, + 1213, [ { "LinearSplit": { @@ -19280,7 +20430,7 @@ ] ], [ - 793, + 1254, [ { "AllocSegment": { @@ -19293,7 +20443,7 @@ ] ], [ - 858, + 1319, [ { "AllocSegment": { @@ -19306,7 +20456,7 @@ ] ], [ - 905, + 1366, [ { "AllocSegment": { @@ -19319,7 +20469,7 @@ ] ], [ - 924, + 1385, [ { "TestLessThanOrEqual": { @@ -19341,7 +20491,7 @@ ] ], [ - 951, + 1412, [ { "AllocSegment": { @@ -19354,7 +20504,7 @@ ] ], [ - 969, + 1430, [ { "AllocSegment": { @@ -19367,7 +20517,7 @@ ] ], [ - 984, + 1445, [ { "AllocSegment": { @@ -19380,7 +20530,7 @@ ] ], [ - 998, + 1459, [ { "AllocSegment": { @@ -19393,7 +20543,7 @@ ] ], [ - 1019, + 1480, [ { "AllocSegment": { @@ -19406,7 +20556,7 @@ ] ], [ - 1033, + 1494, [ { "AllocSegment": { @@ -19419,7 +20569,7 @@ ] ], [ - 1048, + 1509, [ { "TestLessThanOrEqual": { @@ -19441,7 +20591,7 @@ ] ], [ - 1082, + 1543, [ { "TestLessThan": { @@ -19469,7 +20619,7 @@ ] ], [ - 1086, + 1547, [ { "LinearSplit": { @@ -19498,7 +20648,7 @@ ] ], [ - 1111, + 1572, [ { "AllocSegment": { @@ -19511,7 +20661,7 @@ ] ], [ - 1130, + 1591, [ { "TestLessThanOrEqual": { @@ -19533,7 +20683,7 @@ ] ], [ - 1149, + 1610, [ { "SystemCall": { @@ -19548,7 +20698,7 @@ ] ], [ - 1152, + 1613, [ { "AllocSegment": { @@ -19561,7 +20711,7 @@ ] ], [ - 1175, + 1636, [ { "AllocSegment": { @@ -19574,7 +20724,7 @@ ] ], [ - 1197, + 1658, [ { "AllocSegment": { @@ -19587,7 +20737,7 @@ ] ], [ - 1211, + 1672, [ { "AllocSegment": { @@ -19600,7 +20750,7 @@ ] ], [ - 1228, + 1689, [ { "TestLessThanOrEqual": { @@ -19622,7 +20772,7 @@ ] ], [ - 1327, + 1788, [ { "AllocSegment": { @@ -19635,7 +20785,7 @@ ] ], [ - 1346, + 1807, [ { "TestLessThanOrEqual": { @@ -19657,7 +20807,7 @@ ] ], [ - 1389, + 1850, [ { "AllocSegment": { @@ -19670,7 +20820,7 @@ ] ], [ - 1407, + 1868, [ { "AllocSegment": { @@ -19683,7 +20833,7 @@ ] ], [ - 1422, + 1883, [ { "AllocSegment": { @@ -19696,7 +20846,7 @@ ] ], [ - 1436, + 1897, [ { "AllocSegment": { @@ -19709,7 +20859,7 @@ ] ], [ - 1450, + 1911, [ { "AllocSegment": { @@ -19722,7 +20872,7 @@ ] ], [ - 1464, + 1925, [ { "AllocSegment": { @@ -19735,7 +20885,7 @@ ] ], [ - 1486, + 1947, [ { "AllocSegment": { @@ -19748,7 +20898,7 @@ ] ], [ - 1500, + 1961, [ { "AllocSegment": { @@ -19761,7 +20911,7 @@ ] ], [ - 1517, + 1978, [ { "TestLessThanOrEqual": { @@ -19783,7 +20933,7 @@ ] ], [ - 1551, + 2012, [ { "TestLessThan": { @@ -19805,7 +20955,7 @@ ] ], [ - 1555, + 2016, [ { "LinearSplit": { @@ -19834,7 +20984,7 @@ ] ], [ - 1565, + 2026, [ { "LinearSplit": { @@ -19863,7 +21013,7 @@ ] ], [ - 1618, + 2079, [ { "AllocSegment": { @@ -19876,7 +21026,7 @@ ] ], [ - 1665, + 2126, [ { "AllocSegment": { @@ -19889,7 +21039,7 @@ ] ], [ - 1684, + 2145, [ { "TestLessThanOrEqual": { @@ -19911,7 +21061,7 @@ ] ], [ - 1706, + 2167, [ { "SystemCall": { @@ -19926,7 +21076,7 @@ ] ], [ - 1727, + 2188, [ { "AllocSegment": { @@ -19939,7 +21089,7 @@ ] ], [ - 1742, + 2203, [ { "AllocSegment": { @@ -19952,7 +21102,7 @@ ] ], [ - 1756, + 2217, [ { "AllocSegment": { @@ -19965,7 +21115,7 @@ ] ], [ - 1777, + 2238, [ { "AllocSegment": { @@ -19978,7 +21128,7 @@ ] ], [ - 1791, + 2252, [ { "AllocSegment": { @@ -19991,7 +21141,7 @@ ] ], [ - 1806, + 2267, [ { "TestLessThanOrEqual": { @@ -20013,7 +21163,7 @@ ] ], [ - 1839, + 2300, [ { "TestLessThan": { @@ -20035,7 +21185,7 @@ ] ], [ - 1843, + 2304, [ { "LinearSplit": { @@ -20064,7 +21214,7 @@ ] ], [ - 1853, + 2314, [ { "LinearSplit": { @@ -20093,7 +21243,7 @@ ] ], [ - 1952, + 2413, [ { "AllocSegment": { @@ -20106,7 +21256,7 @@ ] ], [ - 1971, + 2432, [ { "TestLessThanOrEqual": { @@ -20128,7 +21278,7 @@ ] ], [ - 2000, + 2461, [ { "AllocSegment": { @@ -20141,7 +21291,7 @@ ] ], [ - 2015, + 2476, [ { "AllocSegment": { @@ -20154,7 +21304,7 @@ ] ], [ - 2029, + 2490, [ { "AllocSegment": { @@ -20167,7 +21317,7 @@ ] ], [ - 2043, + 2504, [ { "AllocSegment": { @@ -20180,7 +21330,7 @@ ] ], [ - 2057, + 2518, [ { "AllocSegment": { @@ -20193,7 +21343,7 @@ ] ], [ - 2078, + 2539, [ { "AllocSegment": { @@ -20206,7 +21356,7 @@ ] ], [ - 2092, + 2553, [ { "AllocSegment": { @@ -20219,7 +21369,7 @@ ] ], [ - 2107, + 2568, [ { "TestLessThanOrEqual": { @@ -20241,7 +21391,7 @@ ] ], [ - 2140, + 2601, [ { "TestLessThan": { @@ -20263,7 +21413,7 @@ ] ], [ - 2144, + 2605, [ { "LinearSplit": { @@ -20292,7 +21442,7 @@ ] ], [ - 2154, + 2615, [ { "LinearSplit": { @@ -20321,7 +21471,7 @@ ] ], [ - 2169, + 2630, [ { "AllocSegment": { @@ -20334,7 +21484,7 @@ ] ], [ - 2188, + 2649, [ { "TestLessThanOrEqual": { @@ -20356,7 +21506,7 @@ ] ], [ - 2207, + 2668, [ { "SystemCall": { @@ -20371,7 +21521,7 @@ ] ], [ - 2210, + 2671, [ { "AllocSegment": { @@ -20384,7 +21534,7 @@ ] ], [ - 2230, + 2691, [ { "AllocSegment": { @@ -20397,7 +21547,7 @@ ] ], [ - 2252, + 2713, [ { "AllocSegment": { @@ -20410,7 +21560,7 @@ ] ], [ - 2266, + 2727, [ { "AllocSegment": { @@ -20423,7 +21573,7 @@ ] ], [ - 2283, + 2744, [ { "TestLessThanOrEqual": { @@ -20445,7 +21595,7 @@ ] ], [ - 2338, + 2799, [ { "AllocSegment": { @@ -20458,7 +21608,7 @@ ] ], [ - 2385, + 2846, [ { "AllocSegment": { @@ -20471,7 +21621,7 @@ ] ], [ - 2404, + 2865, [ { "TestLessThanOrEqual": { @@ -20493,7 +21643,7 @@ ] ], [ - 2425, + 2886, [ { "SystemCall": { @@ -20508,7 +21658,7 @@ ] ], [ - 2428, + 2889, [ { "AllocSegment": { @@ -20521,7 +21671,7 @@ ] ], [ - 2448, + 2909, [ { "AllocSegment": { @@ -20534,7 +21684,7 @@ ] ], [ - 2463, + 2924, [ { "AllocSegment": { @@ -20547,7 +21697,7 @@ ] ], [ - 2477, + 2938, [ { "AllocSegment": { @@ -20560,7 +21710,7 @@ ] ], [ - 2491, + 2952, [ { "AllocSegment": { @@ -20573,7 +21723,7 @@ ] ], [ - 2506, + 2967, [ { "TestLessThanOrEqual": { @@ -20595,7 +21745,7 @@ ] ], [ - 2523, + 2984, [ { "AllocSegment": { @@ -20608,7 +21758,7 @@ ] ], [ - 2543, + 3004, [ { "TestLessThanOrEqual": { @@ -20630,7 +21780,7 @@ ] ], [ - 2555, + 3016, [ { "AllocFelt252Dict": { @@ -20645,7 +21795,7 @@ ] ], [ - 2574, + 3035, [ { "AllocSegment": { @@ -20658,7 +21808,7 @@ ] ], [ - 2585, + 3046, [ { "AllocSegment": { @@ -20671,7 +21821,7 @@ ] ], [ - 2601, + 3062, [ { "AllocSegment": { @@ -20684,7 +21834,7 @@ ] ], [ - 2619, + 3080, [ { "TestLessThanOrEqual": { @@ -20706,7 +21856,7 @@ ] ], [ - 2653, + 3114, [ { "TestLessThan": { @@ -20728,7 +21878,7 @@ ] ], [ - 2657, + 3118, [ { "LinearSplit": { @@ -20757,7 +21907,7 @@ ] ], [ - 2667, + 3128, [ { "LinearSplit": { @@ -20786,7 +21936,7 @@ ] ], [ - 2720, + 3181, [ { "AllocSegment": { @@ -20799,7 +21949,7 @@ ] ], [ - 2797, + 3258, [ { "AllocSegment": { @@ -20812,7 +21962,7 @@ ] ], [ - 2816, + 3277, [ { "TestLessThanOrEqual": { @@ -20834,7 +21984,7 @@ ] ], [ - 2842, + 3303, [ { "SystemCall": { @@ -20849,7 +21999,7 @@ ] ], [ - 2845, + 3306, [ { "AllocSegment": { @@ -20862,7 +22012,7 @@ ] ], [ - 2865, + 3326, [ { "AllocSegment": { @@ -20875,7 +22025,7 @@ ] ], [ - 2880, + 3341, [ { "AllocSegment": { @@ -20888,7 +22038,7 @@ ] ], [ - 2894, + 3355, [ { "AllocSegment": { @@ -20901,7 +22051,7 @@ ] ], [ - 2908, + 3369, [ { "AllocSegment": { @@ -20914,7 +22064,7 @@ ] ], [ - 2929, + 3390, [ { "AllocSegment": { @@ -20927,7 +22077,7 @@ ] ], [ - 2943, + 3404, [ { "AllocSegment": { @@ -20940,7 +22090,7 @@ ] ], [ - 2958, + 3419, [ { "TestLessThanOrEqual": { @@ -20962,7 +22112,7 @@ ] ], [ - 2975, + 3436, [ { "AllocSegment": { @@ -20975,7 +22125,7 @@ ] ], [ - 2994, + 3455, [ { "TestLessThanOrEqual": { @@ -20997,7 +22147,7 @@ ] ], [ - 3014, + 3475, [ { "AllocSegment": { @@ -21010,7 +22160,7 @@ ] ], [ - 3032, + 3493, [ { "AllocSegment": { @@ -21023,7 +22173,7 @@ ] ], [ - 3047, + 3508, [ { "AllocSegment": { @@ -21036,7 +22186,7 @@ ] ], [ - 3062, + 3523, [ { "TestLessThanOrEqual": { @@ -21058,7 +22208,7 @@ ] ], [ - 3079, + 3540, [ { "AllocSegment": { @@ -21071,7 +22221,7 @@ ] ], [ - 3098, + 3559, [ { "TestLessThanOrEqual": { @@ -21093,7 +22243,7 @@ ] ], [ - 3118, + 3579, [ { "AllocSegment": { @@ -21106,7 +22256,7 @@ ] ], [ - 3136, + 3597, [ { "AllocSegment": { @@ -21119,7 +22269,7 @@ ] ], [ - 3151, + 3612, [ { "AllocSegment": { @@ -21132,7 +22282,7 @@ ] ], [ - 3166, + 3627, [ { "TestLessThanOrEqual": { @@ -21154,7 +22304,7 @@ ] ], [ - 3183, + 3644, [ { "AllocSegment": { @@ -21167,7 +22317,7 @@ ] ], [ - 3208, + 3669, [ { "TestLessThanOrEqual": { @@ -21192,7 +22342,7 @@ ] ], [ - 3227, + 3688, [ { "AllocSegment": { @@ -21205,7 +22355,7 @@ ] ], [ - 3247, + 3708, [ { "AllocSegment": { @@ -21218,7 +22368,7 @@ ] ], [ - 3263, + 3724, [ { "AllocSegment": { @@ -21231,7 +22381,7 @@ ] ], [ - 3279, + 3740, [ { "TestLessThanOrEqual": { @@ -21253,7 +22403,7 @@ ] ], [ - 3296, + 3757, [ { "AllocSegment": { @@ -21266,7 +22416,7 @@ ] ], [ - 3315, + 3776, [ { "TestLessThanOrEqual": { @@ -21288,7 +22438,7 @@ ] ], [ - 3335, + 3796, [ { "AllocSegment": { @@ -21301,7 +22451,7 @@ ] ], [ - 3353, + 3814, [ { "AllocSegment": { @@ -21314,7 +22464,7 @@ ] ], [ - 3368, + 3829, [ { "AllocSegment": { @@ -21327,7 +22477,7 @@ ] ], [ - 3383, + 3844, [ { "TestLessThanOrEqual": { @@ -21349,7 +22499,7 @@ ] ], [ - 3442, + 3903, [ { "AllocSegment": { @@ -21362,7 +22512,7 @@ ] ], [ - 3461, + 3922, [ { "TestLessThanOrEqual": { @@ -21384,7 +22534,7 @@ ] ], [ - 3478, + 3939, [ { "AllocSegment": { @@ -21397,7 +22547,7 @@ ] ], [ - 3492, + 3953, [ { "AllocSegment": { @@ -21410,7 +22560,7 @@ ] ], [ - 3506, + 3967, [ { "AllocSegment": { @@ -21423,7 +22573,7 @@ ] ], [ - 3521, + 3982, [ { "AllocSegment": { @@ -21436,7 +22586,7 @@ ] ], [ - 3535, + 3996, [ { "AllocSegment": { @@ -21449,7 +22599,7 @@ ] ], [ - 3549, + 4010, [ { "AllocSegment": { @@ -21462,7 +22612,7 @@ ] ], [ - 3564, + 4025, [ { "TestLessThanOrEqual": { @@ -21484,7 +22634,7 @@ ] ], [ - 3597, + 4058, [ { "AllocSegment": { @@ -21497,7 +22647,7 @@ ] ], [ - 3644, + 4105, [ { "AllocSegment": { @@ -21510,7 +22660,7 @@ ] ], [ - 3663, + 4124, [ { "TestLessThanOrEqual": { @@ -21532,7 +22682,7 @@ ] ], [ - 3685, + 4146, [ { "AllocSegment": { @@ -21545,7 +22695,7 @@ ] ], [ - 3705, + 4166, [ { "AllocSegment": { @@ -21558,7 +22708,7 @@ ] ], [ - 3720, + 4181, [ { "AllocSegment": { @@ -21571,7 +22721,7 @@ ] ], [ - 3734, + 4195, [ { "AllocSegment": { @@ -21584,7 +22734,7 @@ ] ], [ - 3749, + 4210, [ { "TestLessThanOrEqual": { @@ -21606,7 +22756,7 @@ ] ], [ - 3766, + 4227, [ { "AllocSegment": { @@ -21619,7 +22769,7 @@ ] ], [ - 3785, + 4246, [ { "TestLessThanOrEqual": { @@ -21641,7 +22791,7 @@ ] ], [ - 3797, + 4258, [ { "AllocSegment": { @@ -21654,7 +22804,7 @@ ] ], [ - 3812, + 4273, [ { "AllocSegment": { @@ -21667,7 +22817,7 @@ ] ], [ - 3827, + 4288, [ { "AllocSegment": { @@ -21680,7 +22830,7 @@ ] ], [ - 3842, + 4303, [ { "TestLessThanOrEqual": { @@ -21702,7 +22852,7 @@ ] ], [ - 3880, + 4341, [ { "AllocSegment": { @@ -21715,7 +22865,7 @@ ] ], [ - 3899, + 4360, [ { "TestLessThanOrEqual": { @@ -21737,7 +22887,7 @@ ] ], [ - 3919, + 4380, [ { "AllocSegment": { @@ -21750,7 +22900,7 @@ ] ], [ - 3937, + 4398, [ { "AllocSegment": { @@ -21763,7 +22913,7 @@ ] ], [ - 3952, + 4413, [ { "AllocSegment": { @@ -21776,7 +22926,7 @@ ] ], [ - 3966, + 4427, [ { "AllocSegment": { @@ -21789,7 +22939,7 @@ ] ], [ - 3981, + 4442, [ { "TestLessThanOrEqual": { @@ -21811,7 +22961,7 @@ ] ], [ - 4019, + 4480, [ { "AllocSegment": { @@ -21824,7 +22974,7 @@ ] ], [ - 4038, + 4499, [ { "TestLessThanOrEqual": { @@ -21846,7 +22996,7 @@ ] ], [ - 4058, + 4519, [ { "AllocSegment": { @@ -21859,7 +23009,7 @@ ] ], [ - 4076, + 4537, [ { "AllocSegment": { @@ -21872,7 +23022,7 @@ ] ], [ - 4091, + 4552, [ { "AllocSegment": { @@ -21885,7 +23035,7 @@ ] ], [ - 4105, + 4566, [ { "AllocSegment": { @@ -21898,7 +23048,7 @@ ] ], [ - 4120, + 4581, [ { "TestLessThanOrEqual": { @@ -21920,7 +23070,7 @@ ] ], [ - 4153, + 4614, [ { "TestLessThan": { @@ -21942,7 +23092,7 @@ ] ], [ - 4157, + 4618, [ { "LinearSplit": { @@ -21971,7 +23121,7 @@ ] ], [ - 4167, + 4628, [ { "LinearSplit": { @@ -22000,7 +23150,7 @@ ] ], [ - 4224, + 4685, [ { "AllocSegment": { @@ -22013,7 +23163,7 @@ ] ], [ - 4243, + 4704, [ { "TestLessThanOrEqual": { @@ -22035,7 +23185,7 @@ ] ], [ - 4265, + 4726, [ { "AllocSegment": { @@ -22048,7 +23198,7 @@ ] ], [ - 4283, + 4744, [ { "SystemCall": { @@ -22063,7 +23213,7 @@ ] ], [ - 4289, + 4750, [ { "AllocSegment": { @@ -22076,7 +23226,7 @@ ] ], [ - 4308, + 4769, [ { "AllocSegment": { @@ -22089,7 +23239,7 @@ ] ], [ - 4323, + 4784, [ { "AllocSegment": { @@ -22102,7 +23252,7 @@ ] ], [ - 4337, + 4798, [ { "AllocSegment": { @@ -22115,7 +23265,7 @@ ] ], [ - 4358, + 4819, [ { "AllocSegment": { @@ -22128,7 +23278,7 @@ ] ], [ - 4372, + 4833, [ { "AllocSegment": { @@ -22141,7 +23291,7 @@ ] ], [ - 4387, + 4848, [ { "TestLessThanOrEqual": { @@ -22163,7 +23313,7 @@ ] ], [ - 4467, + 4928, [ { "AllocSegment": { @@ -22176,7 +23326,7 @@ ] ], [ - 4492, + 4953, [ { "TestLessThanOrEqual": { @@ -22201,7 +23351,7 @@ ] ], [ - 4514, + 4975, [ { "AllocSegment": { @@ -22214,7 +23364,7 @@ ] ], [ - 4534, + 4995, [ { "AllocSegment": { @@ -22227,7 +23377,7 @@ ] ], [ - 4550, + 5011, [ { "AllocSegment": { @@ -22240,7 +23390,7 @@ ] ], [ - 4565, + 5026, [ { "AllocSegment": { @@ -22253,7 +23403,7 @@ ] ], [ - 4580, + 5041, [ { "AllocSegment": { @@ -22266,7 +23416,7 @@ ] ], [ - 4595, + 5056, [ { "AllocSegment": { @@ -22279,7 +23429,7 @@ ] ], [ - 4611, + 5072, [ { "TestLessThanOrEqual": { @@ -22301,7 +23451,7 @@ ] ], [ - 4634, + 5095, [ { "AllocSegment": { @@ -22314,7 +23464,7 @@ ] ], [ - 4664, + 5125, [ { "TestLessThanOrEqual": { @@ -22339,7 +23489,7 @@ ] ], [ - 4687, + 5148, [ { "AllocSegment": { @@ -22352,7 +23502,7 @@ ] ], [ - 4709, + 5170, [ { "AllocSegment": { @@ -22365,7 +23515,7 @@ ] ], [ - 4726, + 5187, [ { "AllocSegment": { @@ -22378,7 +23528,7 @@ ] ], [ - 4742, + 5203, [ { "AllocSegment": { @@ -22391,7 +23541,7 @@ ] ], [ - 4759, + 5220, [ { "TestLessThanOrEqual": { @@ -22413,7 +23563,7 @@ ] ], [ - 4792, + 5253, [ { "TestLessThan": { @@ -22435,7 +23585,7 @@ ] ], [ - 4796, + 5257, [ { "LinearSplit": { @@ -22464,7 +23614,7 @@ ] ], [ - 4806, + 5267, [ { "LinearSplit": { @@ -22493,7 +23643,7 @@ ] ], [ - 4827, + 5288, [ { "AllocSegment": { @@ -22506,7 +23656,7 @@ ] ], [ - 4846, + 5307, [ { "TestLessThanOrEqual": { @@ -22528,7 +23678,7 @@ ] ], [ - 4858, + 5319, [ { "AllocSegment": { @@ -22541,7 +23691,7 @@ ] ], [ - 4878, + 5339, [ { "SystemCall": { @@ -22556,7 +23706,7 @@ ] ], [ - 4881, + 5342, [ { "AllocSegment": { @@ -22569,7 +23719,7 @@ ] ], [ - 4901, + 5362, [ { "AllocSegment": { @@ -22582,7 +23732,7 @@ ] ], [ - 4916, + 5377, [ { "AllocSegment": { @@ -22595,7 +23745,7 @@ ] ], [ - 4937, + 5398, [ { "AllocSegment": { @@ -22608,7 +23758,7 @@ ] ], [ - 4951, + 5412, [ { "AllocSegment": { @@ -22621,7 +23771,7 @@ ] ], [ - 4966, + 5427, [ { "TestLessThanOrEqual": { @@ -22643,7 +23793,7 @@ ] ], [ - 4983, + 5444, [ { "AllocSegment": { @@ -22656,7 +23806,7 @@ ] ], [ - 5006, + 5467, [ { "TestLessThanOrEqual": { @@ -22681,7 +23831,7 @@ ] ], [ - 5025, + 5486, [ { "AllocSegment": { @@ -22694,7 +23844,7 @@ ] ], [ - 5045, + 5506, [ { "AllocSegment": { @@ -22707,7 +23857,7 @@ ] ], [ - 5061, + 5522, [ { "AllocSegment": { @@ -22720,7 +23870,7 @@ ] ], [ - 5077, + 5538, [ { "TestLessThanOrEqual": { @@ -22742,7 +23892,7 @@ ] ], [ - 5115, + 5576, [ { "AllocSegment": { @@ -22755,7 +23905,7 @@ ] ], [ - 5140, + 5601, [ { "TestLessThanOrEqual": { @@ -22780,7 +23930,7 @@ ] ], [ - 5160, + 5621, [ { "AllocSegment": { @@ -22793,7 +23943,7 @@ ] ], [ - 5180, + 5641, [ { "AllocSegment": { @@ -22806,7 +23956,7 @@ ] ], [ - 5196, + 5657, [ { "AllocSegment": { @@ -22819,7 +23969,7 @@ ] ], [ - 5211, + 5672, [ { "AllocSegment": { @@ -22832,7 +23982,7 @@ ] ], [ - 5227, + 5688, [ { "TestLessThanOrEqual": { @@ -22854,7 +24004,7 @@ ] ], [ - 5265, + 5726, [ { "AllocSegment": { @@ -22867,7 +24017,7 @@ ] ], [ - 5284, + 5745, [ { "TestLessThanOrEqual": { @@ -22889,7 +24039,7 @@ ] ], [ - 5296, + 5757, [ { "AllocSegment": { @@ -22902,7 +24052,7 @@ ] ], [ - 5316, + 5777, [ { "SystemCall": { @@ -22917,7 +24067,7 @@ ] ], [ - 5319, + 5780, [ { "AllocSegment": { @@ -22930,7 +24080,7 @@ ] ], [ - 5339, + 5800, [ { "AllocSegment": { @@ -22943,7 +24093,7 @@ ] ], [ - 5354, + 5815, [ { "AllocSegment": { @@ -22956,7 +24106,7 @@ ] ], [ - 5368, + 5829, [ { "AllocSegment": { @@ -22969,7 +24119,7 @@ ] ], [ - 5383, + 5844, [ { "TestLessThanOrEqual": { @@ -22991,7 +24141,7 @@ ] ], [ - 5400, + 5861, [ { "AllocSegment": { @@ -23004,7 +24154,7 @@ ] ], [ - 5431, + 5892, [ { "TestLessThanOrEqual": { @@ -23029,7 +24179,7 @@ ] ], [ - 5451, + 5912, [ { "AllocSegment": { @@ -23042,7 +24192,7 @@ ] ], [ - 5475, + 5936, [ { "AllocSegment": { @@ -23055,7 +24205,7 @@ ] ], [ - 5493, + 5954, [ { "AllocSegment": { @@ -23068,7 +24218,7 @@ ] ], [ - 5511, + 5972, [ { "TestLessThanOrEqual": { @@ -23090,7 +24240,7 @@ ] ], [ - 5528, + 5989, [ { "AllocSegment": { @@ -23103,7 +24253,7 @@ ] ], [ - 5548, + 6009, [ { "TestLessThanOrEqual": { @@ -23125,7 +24275,7 @@ ] ], [ - 5572, + 6033, [ { "AllocSegment": { @@ -23138,7 +24288,7 @@ ] ], [ - 5602, + 6063, [ { "AllocSegment": { @@ -23151,7 +24301,7 @@ ] ], [ - 5618, + 6079, [ { "AllocSegment": { @@ -23164,7 +24314,7 @@ ] ], [ - 5634, + 6095, [ { "TestLessThanOrEqual": { @@ -23186,7 +24336,7 @@ ] ], [ - 5693, + 6154, [ { "AllocSegment": { @@ -23199,7 +24349,7 @@ ] ], [ - 5712, + 6173, [ { "TestLessThanOrEqual": { @@ -23221,7 +24371,7 @@ ] ], [ - 5724, + 6185, [ { "AllocSegment": { @@ -23234,7 +24384,7 @@ ] ], [ - 5737, + 6198, [ { "AllocSegment": { @@ -23247,7 +24397,7 @@ ] ], [ - 5752, + 6213, [ { "AllocSegment": { @@ -23260,7 +24410,7 @@ ] ], [ - 5766, + 6227, [ { "AllocSegment": { @@ -23273,7 +24423,7 @@ ] ], [ - 5780, + 6241, [ { "AllocSegment": { @@ -23286,7 +24436,7 @@ ] ], [ - 5795, + 6256, [ { "TestLessThanOrEqual": { @@ -23308,7 +24458,7 @@ ] ], [ - 5849, + 6310, [ { "TestLessThan": { @@ -23330,7 +24480,7 @@ ] ], [ - 5853, + 6314, [ { "LinearSplit": { @@ -23359,7 +24509,7 @@ ] ], [ - 5863, + 6324, [ { "LinearSplit": { @@ -23388,7 +24538,7 @@ ] ], [ - 5899, + 6360, [ { "AllocSegment": { @@ -23401,7 +24551,7 @@ ] ], [ - 5918, + 6379, [ { "TestLessThanOrEqual": { @@ -23423,7 +24573,7 @@ ] ], [ - 5941, + 6402, [ { "SystemCall": { @@ -23438,7 +24588,7 @@ ] ], [ - 5944, + 6405, [ { "AllocSegment": { @@ -23451,7 +24601,7 @@ ] ], [ - 5966, + 6427, [ { "AllocSegment": { @@ -23464,7 +24614,7 @@ ] ], [ - 5981, + 6442, [ { "AllocSegment": { @@ -23477,7 +24627,7 @@ ] ], [ - 6002, + 6463, [ { "AllocSegment": { @@ -23490,7 +24640,7 @@ ] ], [ - 6016, + 6477, [ { "AllocSegment": { @@ -23503,7 +24653,7 @@ ] ], [ - 6030, + 6491, [ { "AllocSegment": { @@ -23516,7 +24666,7 @@ ] ], [ - 6045, + 6506, [ { "TestLessThanOrEqual": { @@ -23538,7 +24688,7 @@ ] ], [ - 6104, + 6565, [ { "AllocSegment": { @@ -23551,7 +24701,7 @@ ] ], [ - 6123, + 6584, [ { "TestLessThanOrEqual": { @@ -23573,7 +24723,7 @@ ] ], [ - 6149, + 6610, [ { "SystemCall": { @@ -23588,7 +24738,7 @@ ] ], [ - 6152, + 6613, [ { "AllocSegment": { @@ -23601,7 +24751,7 @@ ] ], [ - 6174, + 6635, [ { "AllocSegment": { @@ -23614,7 +24764,7 @@ ] ], [ - 6189, + 6650, [ { "AllocSegment": { @@ -23627,7 +24777,7 @@ ] ], [ - 6203, + 6664, [ { "AllocSegment": { @@ -23640,7 +24790,7 @@ ] ], [ - 6217, + 6678, [ { "AllocSegment": { @@ -23653,7 +24803,7 @@ ] ], [ - 6232, + 6693, [ { "TestLessThanOrEqual": { @@ -23675,7 +24825,7 @@ ] ], [ - 6304, + 6765, [ { "AllocSegment": { @@ -23688,7 +24838,193 @@ ] ], [ - 6324, + 6793, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -7 + } + } + } + } + ] + ], + [ + 6798, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6849, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "AP", + "offset": -8 + } + } + } + } + ] + ], + [ + 6870, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6897, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6913, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6927, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 6943, + [ + { + "SystemCall": { + "system": { + "Deref": { + "register": "FP", + "offset": -4 + } + } + } + } + ] + ], + [ + 6952, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -4 + }, + "b": { + "Immediate": "0x8" + } + } + } + } + } + ] + ], + [ + 6965, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -4 + }, + "b": { + "Immediate": "0xd" + } + } + } + } + } + ] + ], + [ + 6982, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "FP", + "offset": -4 + }, + "b": { + "Immediate": "0x14" + } + } + } + } + } + ] + ], + [ + 6985, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 7053, [ { "TestLessThanOrEqual": { @@ -23710,7 +25046,7 @@ ] ], [ - 6349, + 7078, [ { "SystemCall": { @@ -23725,7 +25061,7 @@ ] ], [ - 6357, + 7086, [ { "TestLessThan": { @@ -23756,7 +25092,7 @@ ] ], [ - 6382, + 7111, [ { "AllocSegment": { @@ -23769,7 +25105,7 @@ ] ], [ - 6415, + 7144, [ { "AllocSegment": { @@ -23782,7 +25118,7 @@ ] ], [ - 6452, + 7181, [ { "TestLessThan": { @@ -23810,7 +25146,7 @@ ] ], [ - 6456, + 7185, [ { "LinearSplit": { @@ -23839,7 +25175,7 @@ ] ], [ - 6498, + 7227, [ { "TestLessThan": { @@ -23867,7 +25203,7 @@ ] ], [ - 6502, + 7231, [ { "LinearSplit": { @@ -23896,7 +25232,7 @@ ] ], [ - 6543, + 7272, [ { "TestLessThan": { @@ -23918,7 +25254,7 @@ ] ], [ - 6547, + 7276, [ { "LinearSplit": { @@ -23947,7 +25283,7 @@ ] ], [ - 6557, + 7286, [ { "LinearSplit": { @@ -23976,7 +25312,7 @@ ] ], [ - 6681, + 7410, [ { "TestLessThan": { @@ -23998,7 +25334,7 @@ ] ], [ - 6685, + 7414, [ { "LinearSplit": { @@ -24027,7 +25363,7 @@ ] ], [ - 6695, + 7424, [ { "LinearSplit": { @@ -24056,7 +25392,7 @@ ] ], [ - 6727, + 7456, [ { "TestLessThan": { @@ -24078,7 +25414,7 @@ ] ], [ - 6729, + 7458, [ { "DivMod": { @@ -24104,7 +25440,7 @@ ] ], [ - 6849, + 7578, [ { "AllocSegment": { @@ -24117,7 +25453,7 @@ ] ], [ - 6963, + 7692, [ { "TestLessThan": { @@ -24139,7 +25475,7 @@ ] ], [ - 6965, + 7694, [ { "DivMod": { @@ -24165,7 +25501,7 @@ ] ], [ - 7018, + 7747, [ { "TestLessThan": { @@ -24193,7 +25529,7 @@ ] ], [ - 7022, + 7751, [ { "LinearSplit": { @@ -24222,7 +25558,7 @@ ] ], [ - 7064, + 7793, [ { "TestLessThan": { @@ -24250,7 +25586,7 @@ ] ], [ - 7068, + 7797, [ { "LinearSplit": { @@ -24279,7 +25615,7 @@ ] ], [ - 7846, + 8575, [ { "SystemCall": { @@ -24294,7 +25630,7 @@ ] ], [ - 8079, + 8808, [ { "AllocSegment": { @@ -24307,7 +25643,7 @@ ] ], [ - 8093, + 8822, [ { "AllocSegment": { @@ -24320,7 +25656,7 @@ ] ], [ - 8107, + 8836, [ { "AllocSegment": { @@ -24333,7 +25669,7 @@ ] ], [ - 8171, + 8900, [ { "AllocSegment": { @@ -24346,7 +25682,7 @@ ] ], [ - 8185, + 8914, [ { "AllocSegment": { @@ -24359,7 +25695,7 @@ ] ], [ - 8208, + 8937, [ { "AllocSegment": { @@ -24372,7 +25708,7 @@ ] ], [ - 8232, + 8961, [ { "SystemCall": { @@ -24387,7 +25723,7 @@ ] ], [ - 8235, + 8964, [ { "AllocSegment": { @@ -24400,7 +25736,7 @@ ] ], [ - 8251, + 8980, [ { "SystemCall": { @@ -24421,7 +25757,7 @@ ] ], [ - 8288, + 9017, [ { "GetSegmentArenaIndex": { @@ -24440,7 +25776,7 @@ ] ], [ - 8329, + 9058, [ { "AllocSegment": { @@ -24453,7 +25789,7 @@ ] ], [ - 8337, + 9066, [ { "InitSquashData": { @@ -24488,7 +25824,7 @@ ] ], [ - 8356, + 9085, [ { "GetCurrentAccessIndex": { @@ -24503,7 +25839,7 @@ ] ], [ - 8369, + 9098, [ { "ShouldSkipSquashLoop": { @@ -24516,7 +25852,7 @@ ] ], [ - 8371, + 9100, [ { "GetCurrentAccessDelta": { @@ -24529,7 +25865,7 @@ ] ], [ - 8382, + 9111, [ { "ShouldContinueSquashLoop": { @@ -24542,7 +25878,7 @@ ] ], [ - 8396, + 9125, [ { "GetNextDictKey": { @@ -24555,7 +25891,7 @@ ] ], [ - 8415, + 9144, [ { "AssertLeFindSmallArcs": { @@ -24588,7 +25924,7 @@ ] ], [ - 8427, + 9156, [ { "AssertLeIsFirstArcExcluded": { @@ -24601,7 +25937,7 @@ ] ], [ - 8439, + 9168, [ { "AssertLeIsSecondArcExcluded": { @@ -24614,7 +25950,7 @@ ] ], [ - 8470, + 9199, [ { "AllocSegment": { @@ -24627,7 +25963,7 @@ ] ], [ - 8478, + 9207, [ { "AllocSegment": { @@ -24640,7 +25976,7 @@ ] ], [ - 8509, + 9238, [ { "SystemCall": { @@ -24655,7 +25991,7 @@ ] ], [ - 8523, + 9252, [ { "AllocSegment": { @@ -24668,7 +26004,7 @@ ] ], [ - 8543, + 9272, [ { "AllocSegment": { @@ -24681,7 +26017,7 @@ ] ], [ - 8557, + 9286, [ { "AllocSegment": { @@ -24694,7 +26030,7 @@ ] ], [ - 8571, + 9300, [ { "SystemCall": { @@ -24709,7 +26045,7 @@ ] ], [ - 8574, + 9303, [ { "AllocSegment": { @@ -24722,7 +26058,7 @@ ] ], [ - 8597, + 9326, [ { "TestLessThan": { @@ -24747,7 +26083,7 @@ ] ], [ - 8625, + 9354, [ { "AllocSegment": { @@ -24760,7 +26096,7 @@ ] ], [ - 8639, + 9368, [ { "AllocSegment": { @@ -24773,7 +26109,7 @@ ] ], [ - 8682, + 9411, [ { "AllocSegment": { @@ -24786,7 +26122,7 @@ ] ], [ - 8721, + 9450, [ { "AllocSegment": { @@ -24799,7 +26135,7 @@ ] ], [ - 8781, + 9510, [ { "SystemCall": { @@ -24814,7 +26150,7 @@ ] ], [ - 8791, + 9520, [ { "AllocSegment": { @@ -24827,7 +26163,7 @@ ] ], [ - 8822, + 9551, [ { "SystemCall": { @@ -24842,7 +26178,7 @@ ] ], [ - 8825, + 9554, [ { "AllocSegment": { @@ -24855,7 +26191,7 @@ ] ], [ - 8849, + 9578, [ { "TestLessThan": { @@ -24880,7 +26216,7 @@ ] ], [ - 8883, + 9612, [ { "SystemCall": { @@ -24895,7 +26231,7 @@ ] ], [ - 8898, + 9627, [ { "SystemCall": { @@ -24910,7 +26246,7 @@ ] ], [ - 8944, + 9673, [ { "AllocSegment": { @@ -24923,7 +26259,7 @@ ] ], [ - 8963, + 9692, [ { "DivMod": { @@ -24952,7 +26288,7 @@ ] ], [ - 8969, + 9698, [ { "TestLessThan": { @@ -24974,7 +26310,7 @@ ] ], [ - 9020, + 9749, [ { "AllocSegment": { @@ -24987,7 +26323,7 @@ ] ], [ - 9051, + 9780, [ { "AllocSegment": { @@ -25000,7 +26336,7 @@ ] ], [ - 9076, + 9805, [ { "AllocSegment": { @@ -25013,7 +26349,7 @@ ] ], [ - 9091, + 9820, [ { "AllocSegment": { @@ -25026,7 +26362,7 @@ ] ], [ - 9133, + 9862, [ { "SystemCall": { @@ -25041,7 +26377,7 @@ ] ], [ - 9145, + 9874, [ { "AllocSegment": { @@ -25054,7 +26390,7 @@ ] ], [ - 9175, + 9904, [ { "SystemCall": { @@ -25069,7 +26405,7 @@ ] ], [ - 9180, + 9909, [ { "AllocSegment": { @@ -25082,7 +26418,7 @@ ] ], [ - 9203, + 9932, [ { "TestLessThan": { @@ -25107,7 +26443,7 @@ ] ], [ - 9237, + 9966, [ { "SystemCall": { @@ -25122,7 +26458,7 @@ ] ], [ - 9252, + 9981, [ { "SystemCall": { @@ -25137,7 +26473,7 @@ ] ], [ - 9300, + 10029, [ { "AllocSegment": { @@ -25150,7 +26486,7 @@ ] ], [ - 9318, + 10047, [ { "DivMod": { @@ -25179,7 +26515,7 @@ ] ], [ - 9324, + 10053, [ { "TestLessThan": { @@ -25201,7 +26537,7 @@ ] ], [ - 9353, + 10082, [ { "SystemCall": { @@ -25216,7 +26552,7 @@ ] ], [ - 9403, + 10132, [ { "AllocSegment": { @@ -25229,7 +26565,7 @@ ] ], [ - 9441, + 10170, [ { "AllocSegment": { @@ -25242,7 +26578,7 @@ ] ], [ - 9468, + 10197, [ { "AllocSegment": { @@ -25255,7 +26591,7 @@ ] ], [ - 9484, + 10213, [ { "AllocSegment": { @@ -25268,7 +26604,7 @@ ] ], [ - 9510, + 10239, [ { "TestLessThanOrEqual": { @@ -25290,7 +26626,7 @@ ] ], [ - 9524, + 10253, [ { "TestLessThan": { @@ -25312,7 +26648,7 @@ ] ], [ - 9599, + 10328, [ { "TestLessThan": { @@ -25334,7 +26670,7 @@ ] ], [ - 9603, + 10332, [ { "LinearSplit": { @@ -25363,7 +26699,7 @@ ] ], [ - 9613, + 10342, [ { "LinearSplit": { @@ -25392,7 +26728,7 @@ ] ], [ - 9631, + 10360, [ { "SystemCall": { @@ -25407,7 +26743,7 @@ ] ], [ - 9649, + 10378, [ { "AllocSegment": { @@ -25420,7 +26756,7 @@ ] ], [ - 9668, + 10397, [ { "TestLessThan": { @@ -25442,7 +26778,7 @@ ] ], [ - 9672, + 10401, [ { "LinearSplit": { @@ -25471,7 +26807,7 @@ ] ], [ - 9682, + 10411, [ { "LinearSplit": { @@ -25500,7 +26836,7 @@ ] ], [ - 9700, + 10429, [ { "SystemCall": { @@ -25515,7 +26851,7 @@ ] ], [ - 9718, + 10447, [ { "AllocSegment": { @@ -25528,7 +26864,7 @@ ] ], [ - 9749, + 10478, [ { "AllocSegment": { @@ -25541,7 +26877,7 @@ ] ], [ - 9773, + 10502, [ { "AllocSegment": { @@ -25554,7 +26890,7 @@ ] ], [ - 9787, + 10516, [ { "AllocSegment": { @@ -25567,7 +26903,7 @@ ] ], [ - 9801, + 10530, [ { "AllocSegment": { @@ -25580,7 +26916,7 @@ ] ], [ - 9815, + 10544, [ { "AllocSegment": { @@ -25593,7 +26929,7 @@ ] ], [ - 9830, + 10559, [ { "AllocSegment": { @@ -25606,7 +26942,7 @@ ] ], [ - 9845, + 10574, [ { "TestLessThanOrEqual": { @@ -25628,7 +26964,7 @@ ] ], [ - 9859, + 10588, [ { "AllocSegment": { @@ -25641,7 +26977,7 @@ ] ], [ - 9879, + 10608, [ { "AllocSegment": { @@ -25654,7 +26990,7 @@ ] ], [ - 9893, + 10622, [ { "TestLessThanOrEqual": { @@ -25676,7 +27012,7 @@ ] ], [ - 9923, + 10652, [ { "AllocSegment": { @@ -25689,7 +27025,7 @@ ] ], [ - 9942, + 10671, [ { "TestLessThan": { @@ -25711,7 +27047,7 @@ ] ], [ - 9946, + 10675, [ { "LinearSplit": { @@ -25740,7 +27076,7 @@ ] ], [ - 9957, + 10686, [ { "LinearSplit": { @@ -25769,7 +27105,7 @@ ] ], [ - 9983, + 10712, [ { "SystemCall": { @@ -25784,7 +27120,7 @@ ] ], [ - 9998, + 10727, [ { "SystemCall": { @@ -25805,7 +27141,7 @@ ] ], [ - 10006, + 10735, [ { "TestLessThan": { @@ -25827,7 +27163,7 @@ ] ], [ - 10010, + 10739, [ { "LinearSplit": { @@ -25856,7 +27192,7 @@ ] ], [ - 10021, + 10750, [ { "LinearSplit": { @@ -25885,7 +27221,7 @@ ] ], [ - 10051, + 10780, [ { "SystemCall": { @@ -25906,7 +27242,7 @@ ] ], [ - 10067, + 10796, [ { "SystemCall": { @@ -25927,7 +27263,7 @@ ] ], [ - 10175, + 10904, [ { "TestLessThan": { @@ -25949,7 +27285,7 @@ ] ], [ - 10177, + 10906, [ { "DivMod": { @@ -25975,7 +27311,7 @@ ] ], [ - 10222, + 10951, [ { "TestLessThan": { @@ -25997,7 +27333,7 @@ ] ], [ - 10224, + 10953, [ { "DivMod": { @@ -26023,7 +27359,7 @@ ] ], [ - 10333, + 11062, [ { "TestLessThan": { @@ -26045,7 +27381,7 @@ ] ], [ - 10337, + 11066, [ { "LinearSplit": { @@ -26074,7 +27410,7 @@ ] ], [ - 10348, + 11077, [ { "LinearSplit": { @@ -26103,7 +27439,7 @@ ] ], [ - 10374, + 11103, [ { "SystemCall": { @@ -26118,7 +27454,7 @@ ] ], [ - 10389, + 11118, [ { "SystemCall": { @@ -26139,7 +27475,7 @@ ] ], [ - 10396, + 11125, [ { "TestLessThan": { @@ -26161,7 +27497,7 @@ ] ], [ - 10398, + 11127, [ { "DivMod": { @@ -26187,7 +27523,7 @@ ] ], [ - 10419, + 11148, [ { "TestLessThan": { @@ -26209,7 +27545,7 @@ ] ], [ - 10421, + 11150, [ { "DivMod": { @@ -26235,7 +27571,7 @@ ] ], [ - 10451, + 11180, [ { "TestLessThan": { @@ -26257,7 +27593,7 @@ ] ], [ - 10455, + 11184, [ { "LinearSplit": { @@ -26286,7 +27622,7 @@ ] ], [ - 10466, + 11195, [ { "LinearSplit": { @@ -26315,7 +27651,7 @@ ] ], [ - 10497, + 11226, [ { "SystemCall": { @@ -26330,7 +27666,7 @@ ] ], [ - 10512, + 11241, [ { "SystemCall": { @@ -26351,7 +27687,7 @@ ] ], [ - 10556, + 11285, [ { "AllocSegment": { @@ -26364,7 +27700,7 @@ ] ], [ - 10575, + 11304, [ { "AllocSegment": { @@ -26377,7 +27713,7 @@ ] ], [ - 10657, + 11386, [ { "RandomEcPoint": { @@ -26405,7 +27741,7 @@ ] ], [ - 10721, + 11450, [ { "RandomEcPoint": { @@ -26433,7 +27769,7 @@ ] ], [ - 10791, + 11520, [ { "AllocSegment": { @@ -26446,7 +27782,7 @@ ] ], [ - 10817, + 11546, [ { "SystemCall": { @@ -26461,7 +27797,7 @@ ] ], [ - 10834, + 11563, [ { "SystemCall": { @@ -26482,7 +27818,7 @@ ] ], [ - 10876, + 11605, [ { "AllocSegment": { @@ -26495,7 +27831,7 @@ ] ], [ - 10893, + 11622, [ { "AllocSegment": { @@ -26508,7 +27844,7 @@ ] ], [ - 10912, + 11641, [ { "SystemCall": { @@ -26523,7 +27859,7 @@ ] ], [ - 10922, + 11651, [ { "TestLessThan": { @@ -26545,7 +27881,7 @@ ] ], [ - 10926, + 11655, [ { "LinearSplit": { @@ -26574,7 +27910,7 @@ ] ], [ - 10937, + 11666, [ { "LinearSplit": { @@ -26603,7 +27939,7 @@ ] ], [ - 10981, + 11710, [ { "SystemCall": { @@ -26624,7 +27960,7 @@ ] ], [ - 10996, + 11725, [ { "SystemCall": { @@ -26645,7 +27981,7 @@ ] ], [ - 11006, + 11735, [ { "TestLessThan": { @@ -26670,7 +28006,7 @@ ] ], [ - 11021, + 11750, [ { "TestLessThan": { @@ -26695,7 +28031,7 @@ ] ], [ - 11037, + 11766, [ { "TestLessThan": { @@ -26717,7 +28053,7 @@ ] ], [ - 11041, + 11770, [ { "LinearSplit": { @@ -26746,7 +28082,7 @@ ] ], [ - 11052, + 11781, [ { "LinearSplit": { @@ -26775,7 +28111,7 @@ ] ], [ - 11081, + 11810, [ { "SystemCall": { @@ -26790,7 +28126,7 @@ ] ], [ - 11097, + 11826, [ { "SystemCall": { @@ -26811,7 +28147,7 @@ ] ], [ - 11139, + 11868, [ { "AllocSegment": { @@ -26824,7 +28160,7 @@ ] ], [ - 11157, + 11886, [ { "AllocSegment": { @@ -26837,7 +28173,7 @@ ] ], [ - 11259, + 11988, [ { "AllocSegment": { @@ -26850,7 +28186,7 @@ ] ], [ - 11334, + 12063, [ { "EvalCircuit": { @@ -26883,7 +28219,7 @@ ] ], [ - 11391, + 12120, [ { "AllocSegment": { @@ -26896,7 +28232,7 @@ ] ], [ - 11447, + 12176, [ { "AllocSegment": { @@ -26909,7 +28245,7 @@ ] ], [ - 11540, + 12269, [ { "AllocSegment": { @@ -26922,7 +28258,7 @@ ] ], [ - 11561, + 12290, [ { "AllocSegment": { @@ -26935,7 +28271,7 @@ ] ], [ - 11632, + 12361, [ { "AllocSegment": { @@ -26948,7 +28284,7 @@ ] ], [ - 11660, + 12389, [ { "AllocSegment": { @@ -26961,7 +28297,7 @@ ] ], [ - 11731, + 12460, [ { "TestLessThan": { @@ -26989,7 +28325,7 @@ ] ], [ - 11735, + 12464, [ { "LinearSplit": { @@ -27018,7 +28354,7 @@ ] ], [ - 11757, + 12486, [ { "TestLessThanOrEqual": { @@ -27043,7 +28379,7 @@ ] ], [ - 11771, + 12500, [ { "TestLessThan": { @@ -27065,7 +28401,7 @@ ] ], [ - 11781, + 12510, [ { "TestLessThanOrEqual": { @@ -27090,7 +28426,7 @@ ] ], [ - 11804, + 12533, [ { "AllocSegment": { @@ -27103,7 +28439,7 @@ ] ], [ - 11825, + 12554, [ { "AllocSegment": { @@ -27116,7 +28452,7 @@ ] ], [ - 11846, + 12575, [ { "AllocSegment": { @@ -27129,7 +28465,7 @@ ] ], [ - 11894, + 12623, [ { "TestLessThanOrEqual": { @@ -27151,7 +28487,7 @@ ] ], [ - 11954, + 12683, [ { "AllocSegment": { @@ -27164,7 +28500,7 @@ ] ], [ - 11974, + 12703, [ { "TestLessThanOrEqual": { @@ -27186,7 +28522,7 @@ ] ], [ - 12053, + 12782, [ { "AllocSegment": { @@ -27199,7 +28535,7 @@ ] ], [ - 12083, + 12812, [ { "AllocSegment": { @@ -27212,7 +28548,7 @@ ] ], [ - 12103, + 12832, [ { "TestLessThanOrEqual": { @@ -27234,7 +28570,7 @@ ] ], [ - 12204, + 12933, [ { "AllocSegment": { @@ -27247,7 +28583,7 @@ ] ], [ - 12234, + 12963, [ { "AllocSegment": { @@ -27260,7 +28596,7 @@ ] ], [ - 12254, + 12983, [ { "TestLessThanOrEqual": { @@ -27282,7 +28618,7 @@ ] ], [ - 12325, + 13054, [ { "AllocSegment": { @@ -27295,7 +28631,7 @@ ] ], [ - 12346, + 13075, [ { "DivMod": { @@ -27324,7 +28660,7 @@ ] ], [ - 12404, + 13133, [ { "AllocSegment": { @@ -27337,7 +28673,7 @@ ] ], [ - 12457, + 13186, [ { "AllocSegment": { @@ -27350,7 +28686,7 @@ ] ], [ - 12470, + 13199, [ { "DivMod": { @@ -27379,7 +28715,7 @@ ] ], [ - 12478, + 13207, [ { "TestLessThan": { @@ -27410,7 +28746,7 @@ ] ], [ - 12495, + 13224, [ { "AllocSegment": { @@ -27423,7 +28759,7 @@ ] ], [ - 12527, + 13256, [ { "TestLessThan": { @@ -27445,7 +28781,7 @@ ] ], [ - 12544, + 13273, [ { "AllocSegment": { @@ -27458,7 +28794,7 @@ ] ], [ - 12560, + 13289, [ { "TestLessThan": { @@ -27489,7 +28825,7 @@ ] ], [ - 12582, + 13311, [ { "AllocSegment": { @@ -27502,7 +28838,7 @@ ] ], [ - 12639, + 13368, [ { "DivMod": { @@ -27531,7 +28867,7 @@ ] ], [ - 12648, + 13377, [ { "TestLessThan": { @@ -27553,7 +28889,7 @@ ] ], [ - 12658, + 13387, [ { "TestLessThan": { @@ -27584,7 +28920,7 @@ ] ], [ - 12680, + 13409, [ { "AllocSegment": { @@ -27597,7 +28933,7 @@ ] ], [ - 12695, + 13424, [ { "AllocSegment": { @@ -27610,7 +28946,7 @@ ] ], [ - 12720, + 13449, [ { "TestLessThan": { @@ -27641,7 +28977,7 @@ ] ], [ - 12734, + 13463, [ { "DivMod": { @@ -27670,7 +29006,7 @@ ] ], [ - 12751, + 13480, [ { "TestLessThan": { @@ -27692,7 +29028,7 @@ ] ], [ - 12763, + 13492, [ { "TestLessThan": { @@ -27714,7 +29050,7 @@ ] ], [ - 12773, + 13502, [ { "TestLessThan": { @@ -27745,7 +29081,7 @@ ] ], [ - 12796, + 13525, [ { "AllocSegment": { @@ -27758,7 +29094,7 @@ ] ], [ - 12811, + 13540, [ { "AllocSegment": { @@ -27771,7 +29107,7 @@ ] ], [ - 12826, + 13555, [ { "AllocSegment": { @@ -27784,7 +29120,7 @@ ] ], [ - 12841, + 13570, [ { "AllocSegment": { @@ -27797,7 +29133,7 @@ ] ], [ - 12854, + 13583, [ { "TestLessThanOrEqual": { @@ -27819,7 +29155,7 @@ ] ], [ - 12864, + 13593, [ { "TestLessThanOrEqualAddress": { @@ -27850,7 +29186,7 @@ ] ], [ - 12901, + 13630, [ { "SystemCall": { @@ -27865,7 +29201,7 @@ ] ], [ - 12934, + 13663, [ { "AllocSegment": { @@ -27878,7 +29214,7 @@ ] ], [ - 12968, + 13697, [ { "TestLessThan": { @@ -27900,7 +29236,7 @@ ] ], [ - 12990, + 13719, [ { "TestLessThan": { @@ -27922,7 +29258,7 @@ ] ], [ - 13027, + 13756, [ { "TestLessThan": { @@ -27944,7 +29280,7 @@ ] ], [ - 13049, + 13778, [ { "TestLessThan": { @@ -27966,7 +29302,7 @@ ] ], [ - 13125, + 13854, [ { "AllocSegment": { @@ -27979,7 +29315,7 @@ ] ], [ - 13190, + 13919, [ { "TestLessThan": { @@ -28001,7 +29337,7 @@ ] ], [ - 13214, + 13943, [ { "TestLessThan": { @@ -28023,7 +29359,7 @@ ] ], [ - 13255, + 13984, [ { "TestLessThan": { @@ -28045,7 +29381,7 @@ ] ], [ - 13281, + 14010, [ { "TestLessThan": { @@ -28067,7 +29403,7 @@ ] ], [ - 13325, + 14054, [ { "U256InvModN": { @@ -28124,7 +29460,7 @@ ] ], [ - 13343, + 14072, [ { "WideMul128": { @@ -28321,7 +29657,7 @@ ] ], [ - 13396, + 14125, [ { "WideMul128": { @@ -28374,7 +29710,7 @@ ] ], [ - 13400, + 14129, [ { "TestLessThan": { @@ -28396,7 +29732,7 @@ ] ], [ - 13414, + 14143, [ { "TestLessThan": { @@ -28418,7 +29754,7 @@ ] ], [ - 13427, + 14156, [ { "DivMod": { @@ -28444,7 +29780,7 @@ ] ], [ - 13437, + 14166, [ { "DivMod": { @@ -28470,7 +29806,7 @@ ] ], [ - 13448, + 14177, [ { "DivMod": { @@ -28496,7 +29832,7 @@ ] ], [ - 13457, + 14186, [ { "DivMod": { @@ -28522,7 +29858,7 @@ ] ], [ - 13467, + 14196, [ { "DivMod": { @@ -28548,7 +29884,7 @@ ] ], [ - 13478, + 14207, [ { "DivMod": { @@ -28574,7 +29910,7 @@ ] ], [ - 13487, + 14216, [ { "DivMod": { @@ -28600,7 +29936,7 @@ ] ], [ - 13497, + 14226, [ { "DivMod": { @@ -28626,7 +29962,7 @@ ] ], [ - 13508, + 14237, [ { "DivMod": { @@ -28652,7 +29988,7 @@ ] ], [ - 13517, + 14246, [ { "DivMod": { @@ -28678,7 +30014,7 @@ ] ], [ - 13527, + 14256, [ { "DivMod": { @@ -28704,7 +30040,7 @@ ] ], [ - 13538, + 14267, [ { "DivMod": { @@ -28730,7 +30066,7 @@ ] ], [ - 13547, + 14276, [ { "DivMod": { @@ -28756,7 +30092,7 @@ ] ], [ - 13557, + 14286, [ { "DivMod": { @@ -28782,7 +30118,7 @@ ] ], [ - 13568, + 14297, [ { "DivMod": { @@ -28808,7 +30144,7 @@ ] ], [ - 13577, + 14306, [ { "DivMod": { @@ -28834,7 +30170,7 @@ ] ], [ - 13587, + 14316, [ { "DivMod": { @@ -28860,7 +30196,7 @@ ] ], [ - 13598, + 14327, [ { "DivMod": { @@ -28886,7 +30222,7 @@ ] ], [ - 13607, + 14336, [ { "DivMod": { @@ -28912,7 +30248,7 @@ ] ], [ - 13617, + 14346, [ { "DivMod": { @@ -28938,7 +30274,7 @@ ] ], [ - 13628, + 14357, [ { "DivMod": { @@ -28964,7 +30300,7 @@ ] ], [ - 13637, + 14366, [ { "DivMod": { @@ -28990,7 +30326,7 @@ ] ], [ - 13647, + 14376, [ { "DivMod": { @@ -29016,7 +30352,7 @@ ] ], [ - 13658, + 14387, [ { "DivMod": { @@ -29042,7 +30378,7 @@ ] ], [ - 13679, + 14408, [ { "Uint512DivModByUint256": { @@ -29111,7 +30447,7 @@ ] ], [ - 13697, + 14426, [ { "WideMul128": { @@ -29236,7 +30572,7 @@ ] ], [ - 13726, + 14455, [ { "TestLessThan": { @@ -29261,7 +30597,7 @@ ] ], [ - 13738, + 14467, [ { "TestLessThan": { @@ -29286,7 +30622,7 @@ ] ], [ - 13753, + 14482, [ { "DivMod": { @@ -29312,7 +30648,7 @@ ] ], [ - 13763, + 14492, [ { "DivMod": { @@ -29338,7 +30674,7 @@ ] ], [ - 13774, + 14503, [ { "DivMod": { @@ -29364,7 +30700,7 @@ ] ], [ - 13783, + 14512, [ { "DivMod": { @@ -29390,7 +30726,7 @@ ] ], [ - 13793, + 14522, [ { "DivMod": { @@ -29416,7 +30752,7 @@ ] ], [ - 13804, + 14533, [ { "DivMod": { @@ -29442,7 +30778,7 @@ ] ], [ - 13813, + 14542, [ { "DivMod": { @@ -29468,7 +30804,7 @@ ] ], [ - 13823, + 14552, [ { "DivMod": { @@ -29494,7 +30830,7 @@ ] ], [ - 13834, + 14563, [ { "DivMod": { @@ -29520,7 +30856,7 @@ ] ], [ - 13843, + 14572, [ { "DivMod": { @@ -29546,7 +30882,7 @@ ] ], [ - 13853, + 14582, [ { "DivMod": { @@ -29572,7 +30908,7 @@ ] ], [ - 13864, + 14593, [ { "DivMod": { @@ -29598,7 +30934,7 @@ ] ], [ - 13873, + 14602, [ { "DivMod": { @@ -29624,7 +30960,7 @@ ] ], [ - 13883, + 14612, [ { "DivMod": { @@ -29650,7 +30986,7 @@ ] ], [ - 13894, + 14623, [ { "DivMod": { @@ -29676,7 +31012,7 @@ ] ], [ - 13915, + 14644, [ { "Uint512DivModByUint256": { @@ -29745,7 +31081,7 @@ ] ], [ - 13933, + 14662, [ { "WideMul128": { @@ -29870,7 +31206,7 @@ ] ], [ - 13962, + 14691, [ { "TestLessThan": { @@ -29895,7 +31231,7 @@ ] ], [ - 13974, + 14703, [ { "TestLessThan": { @@ -29920,7 +31256,7 @@ ] ], [ - 13989, + 14718, [ { "DivMod": { @@ -29946,7 +31282,7 @@ ] ], [ - 13999, + 14728, [ { "DivMod": { @@ -29972,7 +31308,7 @@ ] ], [ - 14010, + 14739, [ { "DivMod": { @@ -29998,7 +31334,7 @@ ] ], [ - 14019, + 14748, [ { "DivMod": { @@ -30024,7 +31360,7 @@ ] ], [ - 14029, + 14758, [ { "DivMod": { @@ -30050,7 +31386,7 @@ ] ], [ - 14040, + 14769, [ { "DivMod": { @@ -30076,7 +31412,7 @@ ] ], [ - 14049, + 14778, [ { "DivMod": { @@ -30102,7 +31438,7 @@ ] ], [ - 14059, + 14788, [ { "DivMod": { @@ -30128,7 +31464,7 @@ ] ], [ - 14070, + 14799, [ { "DivMod": { @@ -30154,7 +31490,7 @@ ] ], [ - 14079, + 14808, [ { "DivMod": { @@ -30180,7 +31516,7 @@ ] ], [ - 14089, + 14818, [ { "DivMod": { @@ -30206,7 +31542,7 @@ ] ], [ - 14100, + 14829, [ { "DivMod": { @@ -30232,7 +31568,7 @@ ] ], [ - 14109, + 14838, [ { "DivMod": { @@ -30258,7 +31594,7 @@ ] ], [ - 14119, + 14848, [ { "DivMod": { @@ -30284,7 +31620,7 @@ ] ], [ - 14130, + 14859, [ { "DivMod": { @@ -30310,7 +31646,7 @@ ] ], [ - 14157, + 14886, [ { "SystemCall": { @@ -30325,7 +31661,7 @@ ] ], [ - 14174, + 14903, [ { "SystemCall": { @@ -30340,7 +31676,7 @@ ] ], [ - 14186, + 14915, [ { "SystemCall": { @@ -30361,7 +31697,7 @@ ] ], [ - 14197, + 14926, [ { "SystemCall": { @@ -30382,7 +31718,7 @@ ] ], [ - 14207, + 14936, [ { "SystemCall": { @@ -30403,7 +31739,7 @@ ] ], [ - 14292, + 15021, [ { "AllocSegment": { @@ -30416,7 +31752,7 @@ ] ], [ - 14321, + 15050, [ { "DivMod": { @@ -30442,7 +31778,7 @@ ] ], [ - 14331, + 15060, [ { "DivMod": { @@ -30468,7 +31804,7 @@ ] ], [ - 14342, + 15071, [ { "DivMod": { @@ -30494,7 +31830,7 @@ ] ], [ - 14351, + 15080, [ { "DivMod": { @@ -30520,7 +31856,7 @@ ] ], [ - 14361, + 15090, [ { "DivMod": { @@ -30546,7 +31882,7 @@ ] ], [ - 14372, + 15101, [ { "DivMod": { @@ -30572,7 +31908,7 @@ ] ], [ - 14381, + 15110, [ { "AllocSegment": { @@ -30585,7 +31921,7 @@ ] ], [ - 14450, + 15179, [ { "TestLessThan": { @@ -30616,7 +31952,7 @@ ] ], [ - 14465, + 15194, [ { "TestLessThan": { @@ -30638,7 +31974,7 @@ ] ], [ - 14484, + 15213, [ { "TestLessThan": { @@ -30660,7 +31996,7 @@ ] ], [ - 14503, + 15232, [ { "TestLessThan": { @@ -30682,7 +32018,7 @@ ] ], [ - 14513, + 15242, [ { "TestLessThan": { @@ -30704,7 +32040,7 @@ ] ], [ - 14515, + 15244, [ { "DivMod": { @@ -30730,7 +32066,7 @@ ] ], [ - 14552, + 15281, [ { "TestLessThan": { @@ -30752,7 +32088,7 @@ ] ], [ - 14571, + 15300, [ { "AllocSegment": { @@ -30765,7 +32101,7 @@ ] ], [ - 14582, + 15311, [ { "DivMod": { @@ -30794,7 +32130,7 @@ ] ], [ - 14588, + 15317, [ { "TestLessThan": { @@ -30816,7 +32152,7 @@ ] ], [ - 14602, + 15331, [ { "TestLessThan": { @@ -30838,7 +32174,7 @@ ] ], [ - 14616, + 15345, [ { "TestLessThan": { @@ -30860,7 +32196,7 @@ ] ], [ - 14627, + 15356, [ { "TestLessThan": { @@ -30882,7 +32218,7 @@ ] ], [ - 14656, + 15385, [ { "AllocSegment": { @@ -30895,7 +32231,7 @@ ] ], [ - 14681, + 15410, [ { "TestLessThan": { @@ -30917,7 +32253,7 @@ ] ], [ - 14685, + 15414, [ { "LinearSplit": { @@ -30946,7 +32282,7 @@ ] ], [ - 14695, + 15424, [ { "LinearSplit": { @@ -30975,7 +32311,7 @@ ] ], [ - 14715, + 15444, [ { "AllocSegment": { @@ -30988,7 +32324,7 @@ ] ], [ - 14736, + 15465, [ { "AllocSegment": { @@ -31001,7 +32337,7 @@ ] ], [ - 14757, + 15486, [ { "AllocSegment": { @@ -31014,7 +32350,7 @@ ] ], [ - 14777, + 15506, [ { "TestLessThan": { @@ -31036,7 +32372,7 @@ ] ], [ - 14779, + 15508, [ { "DivMod": { @@ -31062,7 +32398,7 @@ ] ], [ - 14823, + 15552, [ { "AllocSegment": { @@ -31075,7 +32411,7 @@ ] ], [ - 14834, + 15563, [ { "DivMod": { @@ -31104,7 +32440,7 @@ ] ], [ - 14840, + 15569, [ { "TestLessThan": { @@ -31126,7 +32462,7 @@ ] ], [ - 14854, + 15583, [ { "TestLessThan": { @@ -31148,7 +32484,7 @@ ] ], [ - 14872, + 15601, [ { "TestLessThan": { @@ -31170,7 +32506,7 @@ ] ], [ - 14885, + 15614, [ { "TestLessThan": { @@ -31192,7 +32528,7 @@ ] ], [ - 14896, + 15625, [ { "TestLessThan": { @@ -31214,7 +32550,7 @@ ] ], [ - 14925, + 15654, [ { "AllocSegment": { @@ -31227,7 +32563,7 @@ ] ], [ - 14950, + 15679, [ { "TestLessThan": { @@ -31249,7 +32585,7 @@ ] ], [ - 14954, + 15683, [ { "LinearSplit": { @@ -31278,7 +32614,7 @@ ] ], [ - 14964, + 15693, [ { "LinearSplit": { @@ -31307,7 +32643,7 @@ ] ], [ - 14984, + 15713, [ { "AllocSegment": { @@ -31320,7 +32656,7 @@ ] ], [ - 15005, + 15734, [ { "AllocSegment": { @@ -31333,7 +32669,7 @@ ] ], [ - 15026, + 15755, [ { "AllocSegment": { @@ -31346,7 +32682,7 @@ ] ], [ - 15055, + 15784, [ { "TestLessThan": { @@ -31368,7 +32704,7 @@ ] ], [ - 15057, + 15786, [ { "DivMod": { @@ -31394,7 +32730,7 @@ ] ], [ - 15094, + 15823, [ { "TestLessThan": { @@ -31416,7 +32752,7 @@ ] ], [ - 15105, + 15834, [ { "TestLessThan": { @@ -31438,7 +32774,7 @@ ] ], [ - 15116, + 15845, [ { "TestLessThan": { @@ -31460,7 +32796,7 @@ ] ], [ - 15145, + 15874, [ { "AllocSegment": { @@ -31473,7 +32809,7 @@ ] ], [ - 15170, + 15899, [ { "TestLessThan": { @@ -31495,7 +32831,7 @@ ] ], [ - 15174, + 15903, [ { "LinearSplit": { @@ -31524,7 +32860,7 @@ ] ], [ - 15184, + 15913, [ { "LinearSplit": { @@ -31553,7 +32889,7 @@ ] ], [ - 15210, + 15939, [ { "AllocSegment": { @@ -31566,7 +32902,7 @@ ] ], [ - 15231, + 15960, [ { "AllocSegment": { @@ -31579,7 +32915,7 @@ ] ], [ - 15253, + 15982, [ { "AllocSegment": { @@ -31592,7 +32928,7 @@ ] ], [ - 15275, + 16004, [ { "TestLessThan": { @@ -31614,7 +32950,7 @@ ] ], [ - 15286, + 16015, [ { "TestLessThan": { @@ -31636,7 +32972,7 @@ ] ], [ - 15315, + 16044, [ { "AllocSegment": { @@ -31649,7 +32985,7 @@ ] ], [ - 15340, + 16069, [ { "TestLessThan": { @@ -31671,7 +33007,7 @@ ] ], [ - 15344, + 16073, [ { "LinearSplit": { @@ -31700,7 +33036,7 @@ ] ], [ - 15354, + 16083, [ { "LinearSplit": { @@ -31729,7 +33065,7 @@ ] ], [ - 15377, + 16106, [ { "AllocSegment": { @@ -31742,7 +33078,7 @@ ] ], [ - 15422, + 16151, [ { "TestLessThan": { @@ -31764,7 +33100,7 @@ ] ], [ - 15433, + 16162, [ { "TestLessThan": { @@ -31786,7 +33122,7 @@ ] ], [ - 15462, + 16191, [ { "AllocSegment": { @@ -31799,7 +33135,7 @@ ] ], [ - 15485, + 16214, [ { "TestLessThan": { @@ -31830,7 +33166,7 @@ ] ], [ - 15509, + 16238, [ { "AllocSegment": { @@ -31843,7 +33179,7 @@ ] ], [ - 15553, + 16282, [ { "AllocSegment": { @@ -31856,7 +33192,7 @@ ] ], [ - 15580, + 16309, [ { "TestLessThanOrEqual": { @@ -31878,7 +33214,7 @@ ] ], [ - 15632, + 16361, [ { "AllocSegment": { @@ -31891,7 +33227,7 @@ ] ], [ - 15689, + 16418, [ { "TestLessThan": { @@ -31919,7 +33255,7 @@ ] ], [ - 15693, + 16422, [ { "LinearSplit": { @@ -31948,7 +33284,7 @@ ] ], [ - 15735, + 16464, [ { "TestLessThan": { @@ -31970,7 +33306,7 @@ ] ], [ - 15737, + 16466, [ { "DivMod": { @@ -31996,7 +33332,7 @@ ] ], [ - 15824, + 16553, [ { "DivMod": { @@ -32025,7 +33361,7 @@ ] ], [ - 15830, + 16559, [ { "TestLessThan": { @@ -32047,7 +33383,7 @@ ] ], [ - 15841, + 16570, [ { "TestLessThan": { @@ -32069,7 +33405,7 @@ ] ], [ - 15851, + 16580, [ { "TestLessThan": { @@ -32091,7 +33427,7 @@ ] ], [ - 15865, + 16594, [ { "DivMod": { @@ -32120,7 +33456,7 @@ ] ], [ - 15871, + 16600, [ { "TestLessThan": { @@ -32142,7 +33478,7 @@ ] ], [ - 15885, + 16614, [ { "TestLessThan": { @@ -32164,7 +33500,7 @@ ] ], [ - 15895, + 16624, [ { "TestLessThan": { @@ -32186,7 +33522,7 @@ ] ], [ - 15917, + 16646, [ { "AllocSegment": { @@ -32199,7 +33535,7 @@ ] ], [ - 15931, + 16660, [ { "AllocSegment": { @@ -32212,7 +33548,7 @@ ] ], [ - 15949, + 16678, [ { "AllocSegment": { @@ -32225,7 +33561,7 @@ ] ], [ - 15963, + 16692, [ { "AllocSegment": { @@ -32238,7 +33574,7 @@ ] ], [ - 15979, + 16708, [ { "TestLessThanOrEqual": { @@ -32260,7 +33596,7 @@ ] ], [ - 16006, + 16735, [ { "TestLessThan": { @@ -32282,7 +33618,7 @@ ] ], [ - 16023, + 16752, [ { "AllocSegment": { @@ -32295,7 +33631,7 @@ ] ], [ - 16048, + 16777, [ { "AllocSegment": { @@ -32308,7 +33644,7 @@ ] ], [ - 16308, + 17037, [ { "SystemCall": { @@ -32323,7 +33659,7 @@ ] ], [ - 16334, + 17063, [ { "SystemCall": { @@ -32338,7 +33674,7 @@ ] ], [ - 16348, + 17077, [ { "U256InvModN": { @@ -32395,7 +33731,7 @@ ] ], [ - 16366, + 17095, [ { "WideMul128": { @@ -32592,7 +33928,7 @@ ] ], [ - 16419, + 17148, [ { "WideMul128": { @@ -32645,7 +33981,7 @@ ] ], [ - 16423, + 17152, [ { "TestLessThan": { @@ -32667,7 +34003,7 @@ ] ], [ - 16437, + 17166, [ { "TestLessThan": { @@ -32689,7 +34025,7 @@ ] ], [ - 16450, + 17179, [ { "DivMod": { @@ -32715,7 +34051,7 @@ ] ], [ - 16460, + 17189, [ { "DivMod": { @@ -32741,7 +34077,7 @@ ] ], [ - 16471, + 17200, [ { "DivMod": { @@ -32767,7 +34103,7 @@ ] ], [ - 16480, + 17209, [ { "DivMod": { @@ -32793,7 +34129,7 @@ ] ], [ - 16490, + 17219, [ { "DivMod": { @@ -32819,7 +34155,7 @@ ] ], [ - 16501, + 17230, [ { "DivMod": { @@ -32845,7 +34181,7 @@ ] ], [ - 16510, + 17239, [ { "DivMod": { @@ -32871,7 +34207,7 @@ ] ], [ - 16520, + 17249, [ { "DivMod": { @@ -32897,7 +34233,7 @@ ] ], [ - 16531, + 17260, [ { "DivMod": { @@ -32923,7 +34259,7 @@ ] ], [ - 16540, + 17269, [ { "DivMod": { @@ -32949,7 +34285,7 @@ ] ], [ - 16550, + 17279, [ { "DivMod": { @@ -32975,7 +34311,7 @@ ] ], [ - 16561, + 17290, [ { "DivMod": { @@ -33001,7 +34337,7 @@ ] ], [ - 16570, + 17299, [ { "DivMod": { @@ -33027,7 +34363,7 @@ ] ], [ - 16580, + 17309, [ { "DivMod": { @@ -33053,7 +34389,7 @@ ] ], [ - 16591, + 17320, [ { "DivMod": { @@ -33079,7 +34415,7 @@ ] ], [ - 16600, + 17329, [ { "DivMod": { @@ -33105,7 +34441,7 @@ ] ], [ - 16610, + 17339, [ { "DivMod": { @@ -33131,7 +34467,7 @@ ] ], [ - 16621, + 17350, [ { "DivMod": { @@ -33157,7 +34493,7 @@ ] ], [ - 16630, + 17359, [ { "DivMod": { @@ -33183,7 +34519,7 @@ ] ], [ - 16640, + 17369, [ { "DivMod": { @@ -33209,7 +34545,7 @@ ] ], [ - 16651, + 17380, [ { "DivMod": { @@ -33235,7 +34571,7 @@ ] ], [ - 16660, + 17389, [ { "DivMod": { @@ -33261,7 +34597,7 @@ ] ], [ - 16670, + 17399, [ { "DivMod": { @@ -33287,7 +34623,7 @@ ] ], [ - 16681, + 17410, [ { "DivMod": { @@ -33313,7 +34649,7 @@ ] ], [ - 16702, + 17431, [ { "Uint512DivModByUint256": { @@ -33382,7 +34718,7 @@ ] ], [ - 16720, + 17449, [ { "WideMul128": { @@ -33507,7 +34843,7 @@ ] ], [ - 16749, + 17478, [ { "TestLessThan": { @@ -33532,7 +34868,7 @@ ] ], [ - 16761, + 17490, [ { "TestLessThan": { @@ -33557,7 +34893,7 @@ ] ], [ - 16776, + 17505, [ { "DivMod": { @@ -33583,7 +34919,7 @@ ] ], [ - 16786, + 17515, [ { "DivMod": { @@ -33609,7 +34945,7 @@ ] ], [ - 16797, + 17526, [ { "DivMod": { @@ -33635,7 +34971,7 @@ ] ], [ - 16806, + 17535, [ { "DivMod": { @@ -33661,7 +34997,7 @@ ] ], [ - 16816, + 17545, [ { "DivMod": { @@ -33687,7 +35023,7 @@ ] ], [ - 16827, + 17556, [ { "DivMod": { @@ -33713,7 +35049,7 @@ ] ], [ - 16836, + 17565, [ { "DivMod": { @@ -33739,7 +35075,7 @@ ] ], [ - 16846, + 17575, [ { "DivMod": { @@ -33765,7 +35101,7 @@ ] ], [ - 16857, + 17586, [ { "DivMod": { @@ -33791,7 +35127,7 @@ ] ], [ - 16866, + 17595, [ { "DivMod": { @@ -33817,7 +35153,7 @@ ] ], [ - 16876, + 17605, [ { "DivMod": { @@ -33843,7 +35179,7 @@ ] ], [ - 16887, + 17616, [ { "DivMod": { @@ -33869,7 +35205,7 @@ ] ], [ - 16896, + 17625, [ { "DivMod": { @@ -33895,7 +35231,7 @@ ] ], [ - 16906, + 17635, [ { "DivMod": { @@ -33921,7 +35257,7 @@ ] ], [ - 16917, + 17646, [ { "DivMod": { @@ -33947,7 +35283,7 @@ ] ], [ - 16929, + 17658, [ { "TestLessThan": { @@ -33969,7 +35305,7 @@ ] ], [ - 16954, + 17683, [ { "TestLessThan": { @@ -33991,7 +35327,7 @@ ] ], [ - 16974, + 17703, [ { "TestLessThan": { @@ -34013,7 +35349,7 @@ ] ], [ - 17010, + 17739, [ { "Uint512DivModByUint256": { @@ -34082,7 +35418,7 @@ ] ], [ - 17028, + 17757, [ { "WideMul128": { @@ -34207,7 +35543,7 @@ ] ], [ - 17057, + 17786, [ { "TestLessThan": { @@ -34232,7 +35568,7 @@ ] ], [ - 17069, + 17798, [ { "TestLessThan": { @@ -34257,7 +35593,7 @@ ] ], [ - 17084, + 17813, [ { "DivMod": { @@ -34283,7 +35619,7 @@ ] ], [ - 17094, + 17823, [ { "DivMod": { @@ -34309,7 +35645,7 @@ ] ], [ - 17105, + 17834, [ { "DivMod": { @@ -34335,7 +35671,7 @@ ] ], [ - 17114, + 17843, [ { "DivMod": { @@ -34361,7 +35697,7 @@ ] ], [ - 17124, + 17853, [ { "DivMod": { @@ -34387,7 +35723,7 @@ ] ], [ - 17135, + 17864, [ { "DivMod": { @@ -34413,7 +35749,7 @@ ] ], [ - 17144, + 17873, [ { "DivMod": { @@ -34439,7 +35775,7 @@ ] ], [ - 17154, + 17883, [ { "DivMod": { @@ -34465,7 +35801,7 @@ ] ], [ - 17165, + 17894, [ { "DivMod": { @@ -34491,7 +35827,7 @@ ] ], [ - 17174, + 17903, [ { "DivMod": { @@ -34517,7 +35853,7 @@ ] ], [ - 17184, + 17913, [ { "DivMod": { @@ -34543,7 +35879,7 @@ ] ], [ - 17195, + 17924, [ { "DivMod": { @@ -34569,7 +35905,7 @@ ] ], [ - 17204, + 17933, [ { "DivMod": { @@ -34595,7 +35931,7 @@ ] ], [ - 17214, + 17943, [ { "DivMod": { @@ -34621,7 +35957,7 @@ ] ], [ - 17225, + 17954, [ { "DivMod": { @@ -34647,7 +35983,7 @@ ] ], [ - 17245, + 17974, [ { "SystemCall": { @@ -34662,7 +35998,7 @@ ] ], [ - 17257, + 17986, [ { "SystemCall": { @@ -34683,7 +36019,7 @@ ] ], [ - 17268, + 17997, [ { "SystemCall": { @@ -34704,7 +36040,7 @@ ] ], [ - 17314, + 18043, [ { "AllocSegment": { @@ -34717,7 +36053,7 @@ ] ], [ - 17330, + 18059, [ { "DivMod": { @@ -34743,7 +36079,7 @@ ] ], [ - 17340, + 18069, [ { "DivMod": { @@ -34769,7 +36105,7 @@ ] ], [ - 17351, + 18080, [ { "DivMod": { @@ -34795,7 +36131,7 @@ ] ], [ - 17360, + 18089, [ { "DivMod": { @@ -34821,7 +36157,7 @@ ] ], [ - 17370, + 18099, [ { "DivMod": { @@ -34847,7 +36183,7 @@ ] ], [ - 17381, + 18110, [ { "DivMod": { @@ -34873,7 +36209,7 @@ ] ], [ - 17390, + 18119, [ { "AllocSegment": { @@ -34886,7 +36222,7 @@ ] ], [ - 17407, + 18136, [ { "AllocSegment": { @@ -34899,7 +36235,7 @@ ] ], [ - 17464, + 18193, [ { "SystemCall": { @@ -34914,7 +36250,7 @@ ] ], [ - 17471, + 18200, [ { "AllocConstantSize": { @@ -34930,7 +36266,7 @@ ] ], [ - 17475, + 18204, [ { "AllocSegment": { @@ -34943,7 +36279,7 @@ ] ], [ - 17510, + 18239, [ { "SystemCall": { @@ -34958,7 +36294,7 @@ ] ], [ - 17583, + 18312, [ { "DivMod": { @@ -34987,7 +36323,7 @@ ] ], [ - 17589, + 18318, [ { "TestLessThan": { @@ -35009,7 +36345,7 @@ ] ], [ - 17656, + 18385, [ { "WideMul128": { @@ -35038,7 +36374,7 @@ ] ], [ - 17658, + 18387, [ { "DivMod": { @@ -35064,7 +36400,7 @@ ] ], [ - 17668, + 18397, [ { "DivMod": { @@ -35090,7 +36426,7 @@ ] ], [ - 17679, + 18408, [ { "DivMod": { @@ -35116,7 +36452,7 @@ ] ], [ - 17688, + 18417, [ { "WideMul128": { @@ -35145,7 +36481,7 @@ ] ], [ - 17690, + 18419, [ { "DivMod": { @@ -35171,7 +36507,7 @@ ] ], [ - 17700, + 18429, [ { "DivMod": { @@ -35197,7 +36533,7 @@ ] ], [ - 17711, + 18440, [ { "DivMod": { @@ -35223,7 +36559,7 @@ ] ], [ - 17721, + 18450, [ { "TestLessThan": { @@ -35245,7 +36581,7 @@ ] ], [ - 17743, + 18472, [ { "WideMul128": { @@ -35274,7 +36610,7 @@ ] ], [ - 17745, + 18474, [ { "DivMod": { @@ -35300,7 +36636,7 @@ ] ], [ - 17755, + 18484, [ { "DivMod": { @@ -35326,7 +36662,7 @@ ] ], [ - 17766, + 18495, [ { "DivMod": { @@ -35352,7 +36688,7 @@ ] ], [ - 17776, + 18505, [ { "TestLessThan": { @@ -35374,7 +36710,7 @@ ] ], [ - 17799, + 18528, [ { "TestLessThan": { @@ -35396,7 +36732,7 @@ ] ], [ - 17821, + 18550, [ { "WideMul128": { @@ -35425,7 +36761,7 @@ ] ], [ - 17823, + 18552, [ { "DivMod": { @@ -35451,7 +36787,7 @@ ] ], [ - 17833, + 18562, [ { "DivMod": { @@ -35477,7 +36813,7 @@ ] ], [ - 17844, + 18573, [ { "DivMod": { @@ -35503,7 +36839,7 @@ ] ], [ - 17854, + 18583, [ { "TestLessThan": { @@ -35525,7 +36861,7 @@ ] ], [ - 17878, + 18607, [ { "TestLessThan": { @@ -35547,7 +36883,7 @@ ] ], [ - 17903, + 18632, [ { "TestLessThan": { @@ -35569,7 +36905,7 @@ ] ], [ - 17927, + 18656, [ { "TestLessThan": { @@ -35591,7 +36927,7 @@ ] ], [ - 18045, + 18774, [ { "AllocSegment": { @@ -35604,7 +36940,7 @@ ] ], [ - 18068, + 18797, [ { "TestLessThanOrEqual": { @@ -35629,7 +36965,7 @@ ] ], [ - 18143, + 18872, [ { "AllocSegment": { @@ -35642,7 +36978,7 @@ ] ], [ - 18198, + 18927, [ { "DivMod": { @@ -35671,7 +37007,7 @@ ] ], [ - 18204, + 18933, [ { "TestLessThan": { @@ -35693,7 +37029,7 @@ ] ], [ - 18217, + 18946, [ { "TestLessThan": { @@ -35715,7 +37051,7 @@ ] ], [ - 18227, + 18956, [ { "TestLessThan": { @@ -35737,7 +37073,7 @@ ] ], [ - 18275, + 19004, [ { "DivMod": { @@ -35766,7 +37102,7 @@ ] ], [ - 18281, + 19010, [ { "TestLessThan": { @@ -35788,7 +37124,7 @@ ] ], [ - 18297, + 19026, [ { "TestLessThan": { @@ -35810,7 +37146,7 @@ ] ], [ - 18307, + 19036, [ { "TestLessThan": { @@ -35832,7 +37168,7 @@ ] ], [ - 18330, + 19059, [ { "AllocSegment": { @@ -35845,7 +37181,7 @@ ] ], [ - 18344, + 19073, [ { "AllocSegment": { @@ -35858,7 +37194,7 @@ ] ], [ - 18363, + 19092, [ { "AllocSegment": { @@ -35871,7 +37207,7 @@ ] ], [ - 18377, + 19106, [ { "AllocSegment": { @@ -35888,14 +37224,14 @@ "EXTERNAL": [ { "selector": "0x1143aa89c8e3ebf8ed14df2a3606c1cd2dd513fac8040b0f8ab441f5c52fe4", - "offset": 3981, + "offset": 4442, "builtins": [ "range_check" ] }, { "selector": "0x3541591104188daef4379e06e92ecce09094a3b381da2e654eb041d00566d8", - "offset": 5511, + "offset": 5972, "builtins": [ "range_check", "range_check96" @@ -35903,35 +37239,35 @@ }, { "selector": "0x3c118a68e16e12e97ed25cb4901c12f4d3162818669cc44c391d8049924c14", - "offset": 1226, + "offset": 1687, "builtins": [ "range_check" ] }, { "selector": "0x5562b3e932b4d139366854d5a2e578382e6a3b6572ac9943d55e7efbe43d00", - "offset": 3383, + "offset": 3844, "builtins": [ "range_check" ] }, { "selector": "0x600c98a299d72ef1e09a2e1503206fbc76081233172c65f7e2438ef0069d8d", - "offset": 4120, + "offset": 4581, "builtins": [ "range_check" ] }, { "selector": "0x62c83572d28cb834a3de3c1e94977a4191469a4a8c26d1d7bc55305e640ed5", - "offset": 3564, + "offset": 4025, "builtins": [ "range_check" ] }, { "selector": "0x679c22735055a10db4f275395763a3752a1e3a3043c192299ab6b574fba8d6", - "offset": 4966, + "offset": 5427, "builtins": [ "range_check", "ec_op" @@ -35939,7 +37275,7 @@ }, { "selector": "0x7772be8b80a8a33dc6c1f9a6ab820c02e537c73e859de67f288c70f92571bb", - "offset": 4611, + "offset": 5072, "builtins": [ "pedersen", "range_check", @@ -35955,21 +37291,21 @@ }, { "selector": "0xe7510edcf6e9f1b70f7bd1f488767b50f0363422f3c563160ab77adf62467b", - "offset": 2107, + "offset": 2568, "builtins": [ "range_check" ] }, { "selector": "0xf818e4530ec36b83dfe702489b4df537308c3b798b0cc120e32c2056d68b7d", - "offset": 2958, + "offset": 3419, "builtins": [ "range_check" ] }, { "selector": "0x10d2fede95e3ec06a875a67219425c27c5bd734d57f1b221d729a2337b6b556", - "offset": 2506, + "offset": 2967, "builtins": [ "range_check", "segment_arena" @@ -35977,36 +37313,43 @@ }, { "selector": "0x12ead94ae9d3f9d2bdb6b847cf255f1f398193a1f88884a0ae8e18f24a037b6", - "offset": 5227, + "offset": 5688, "builtins": [ "range_check" ] }, { "selector": "0x14dae1999ae9ab799bc72def6dc6e90890cf8ac0d64525021b7e71d05cb13e8", - "offset": 712, + "offset": 1173, "builtins": [ "range_check" ] }, { "selector": "0x169f135eddda5ab51886052d777a57f2ea9c162d713691b5e04a6d4ed71d47f", - "offset": 2617, + "offset": 3078, "builtins": [ "range_check" ] }, { "selector": "0x1ae1a515cf2d214b29bdf63a79ee2d490efd4dd1acc99d383a8e549c3cecb5d", - "offset": 5077, + "offset": 5538, "builtins": [ "pedersen", "range_check" ] }, + { + "selector": "0x1e4089d1f1349077b1970f9937c904e27c4582b49a60b6078946dba95bc3c08", + "offset": 1002, + "builtins": [ + "range_check" + ] + }, { "selector": "0x23039bef544cff56442d9f61ae9b13cf9e36fcce009102c5b678aac93f37b36", - "offset": 1048, + "offset": 1509, "builtins": [ "range_check" ] @@ -36020,21 +37363,28 @@ }, { "selector": "0x2d7cf5d5a324a320f9f37804b1615a533fde487400b41af80f13f7ac5581325", - "offset": 2281, + "offset": 2742, "builtins": [ "range_check" ] }, { "selector": "0x30f842021fbf02caf80d09a113997c1e00a32870eee0c6136bed27acb348bea", - "offset": 4759, + "offset": 5220, + "builtins": [ + "range_check" + ] + }, + { + "selector": "0x31401f504973a5e8e1bb41e9c592519e3aa0b8cf6bbfb9c91b532aab8db54b0", + "offset": 712, "builtins": [ "range_check" ] }, { "selector": "0x317eb442b72a9fae758d4fb26830ed0d9f31c8e7da4dbff4e8c59ea6a158e7f", - "offset": 4387, + "offset": 4848, "builtins": [ "pedersen", "range_check" @@ -36042,28 +37392,28 @@ }, { "selector": "0x32564d7e0fe091d49b4c20f4632191e4ed6986bf993849879abfef9465def25", - "offset": 3749, + "offset": 4210, "builtins": [ "range_check" ] }, { "selector": "0x3604cea1cdb094a73a31144f14a3e5861613c008e1e879939ebc4827d10cd50", - "offset": 1515, + "offset": 1976, "builtins": [ "range_check" ] }, { "selector": "0x382be990ca34815134e64a9ac28f41a907c62e5ad10547f97174362ab94dc89", - "offset": 3062, + "offset": 3523, "builtins": [ "range_check" ] }, { "selector": "0x38be5d5f7bf135b52888ba3e440a457d11107aca3f6542e574b016bf3f074d8", - "offset": 3166, + "offset": 3627, "builtins": [ "range_check", "bitwise" @@ -36071,7 +37421,7 @@ }, { "selector": "0x3a6a8bae4c51d5959683ae246347ffdd96aa5b2bfa68cc8c3a6a7c2ed0be331", - "offset": 1806, + "offset": 2267, "builtins": [ "range_check" ] @@ -36085,7 +37435,7 @@ }, { "selector": "0x3d3da80997f8be5d16e9ae7ee6a4b5f7191d60765a1a6c219ab74269c85cf97", - "offset": 5383, + "offset": 5844, "builtins": [ "range_check", "range_check96", @@ -36095,14 +37445,14 @@ }, { "selector": "0x3d95049b565ec2d4197a55108ef03996381d31c84acf392a0a42b28163d69d1", - "offset": 3279, + "offset": 3740, "builtins": [ "range_check" ] }, { "selector": "0x3eb640b15f75fcc06d43182cdb94ed38c8e71755d5fb57c16dd673b466db1d4", - "offset": 3842, + "offset": 4303, "builtins": [ "range_check" ] @@ -36111,14 +37461,14 @@ "L1_HANDLER": [ { "selector": "0x205500a208d0d49d79197fea83cc3f5fde99ac2e1909ae0a5d9f394c0c52ed0", - "offset": 5795, + "offset": 6256, "builtins": [ "range_check" ] }, { "selector": "0x39edbbb129ad752107a94d40c3873cae369a46fd2fc578d075679aa67e85d12", - "offset": 5634, + "offset": 6095, "builtins": [ "range_check" ] @@ -36127,7 +37477,7 @@ "CONSTRUCTOR": [ { "selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", - "offset": 6045, + "offset": 6506, "builtins": [ "range_check" ] diff --git a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo index 604c9f278b..5ca7fa376b 100644 --- a/crates/blockifier/feature_contracts/cairo1/test_contract.cairo +++ b/crates/blockifier/feature_contracts/cairo1/test_contract.cairo @@ -71,6 +71,41 @@ mod TestContract { .span() } + + #[external(v0)] + fn test_call_contract_revert( + ref self: ContractState, + contract_address: ContractAddress, + entry_point_selector: felt252, + calldata: Array:: + ) { + match syscalls::call_contract_syscall( + contract_address, entry_point_selector, calldata.span()) + { + Result::Ok(_) => panic!("Expected revert"), + Result::Err(errors) => { + let mut error_span = errors.span(); + assert( + *error_span.pop_back().unwrap() == 'ENTRYPOINT_FAILED', + 'Unexpected error', + ); + }, + }; + // TODO(Yoni, 1/12/2024): test replace class once get_class_hash_at syscall is supported. + assert(self.my_storage_var.read() == 0, 'values should not change.'); + } + + + #[external(v0)] + fn test_revert_helper(ref self: ContractState, class_hash: ClassHash) { + let dummy_span = array![0].span(); + syscalls::emit_event_syscall(dummy_span, dummy_span).unwrap_syscall(); + syscalls::replace_class_syscall(class_hash).unwrap_syscall(); + syscalls::send_message_to_l1_syscall(17.try_into().unwrap(), dummy_span).unwrap_syscall(); + self.my_storage_var.write(17); + panic!("test_revert_helper"); + } + #[external(v0)] fn test_emit_events( self: @ContractState, events_number: u64, keys: Array::, data: Array:: diff --git a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs index 78754ef67e..fe9cc94b05 100644 --- a/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/deprecated_syscalls/hint_processor.rs @@ -502,8 +502,12 @@ pub fn execute_inner_call( vm: &mut VirtualMachine, syscall_handler: &mut DeprecatedSyscallHintProcessor<'_>, ) -> DeprecatedSyscallResult { - let call_info = - call.execute(syscall_handler.state, syscall_handler.resources, syscall_handler.context)?; + // Use `non_reverting_execute` since we don't support reverts here. + let call_info = call.non_reverting_execute( + syscall_handler.state, + syscall_handler.resources, + syscall_handler.context, + )?; let retdata = &call_info.execution.retdata.0; let retdata: Vec = retdata.iter().map(|&x| MaybeRelocatable::from(x)).collect(); diff --git a/crates/blockifier/src/execution/entry_point.rs b/crates/blockifier/src/execution/entry_point.rs index b9ad0c49da..b82e18f9d1 100644 --- a/crates/blockifier/src/execution/entry_point.rs +++ b/crates/blockifier/src/execution/entry_point.rs @@ -1,5 +1,6 @@ use std::cell::RefCell; use std::cmp::min; +use std::collections::HashMap; use std::sync::Arc; use cairo_vm::vm::runners::cairo_runner::{ExecutionResources, ResourceTracker, RunResources}; @@ -7,6 +8,7 @@ use num_traits::{Inv, Zero}; use serde::Serialize; use starknet_api::core::{ClassHash, ContractAddress, EntryPointSelector}; use starknet_api::deprecated_contract_class::EntryPointType; +use starknet_api::state::StorageKey; use starknet_api::transaction::{Calldata, TransactionVersion}; use starknet_types_core::felt::Felt; @@ -22,7 +24,7 @@ use crate::execution::errors::{ PreExecutionError, }; use crate::execution::execution_utils::execute_entry_point_call_wrapper; -use crate::state::state_api::State; +use crate::state::state_api::{State, StateResult}; use crate::transaction::objects::{HasRelatedFeeType, TransactionInfo}; use crate::transaction::transaction_types::TransactionType; use crate::utils::{u128_from_usize, usize_from_u128}; @@ -38,6 +40,43 @@ pub const FAULTY_CLASS_HASH: &str = pub type EntryPointExecutionResult = Result; pub type ConstructorEntryPointExecutionResult = Result; +/// Holds the the information required to revert the execution of an entry point. +#[derive(Debug)] +pub struct EntryPointRevertInfo { + // The contract address that the revert info applies to. + pub contract_address: ContractAddress, + /// The original class hash of the contract that was called. + pub original_class_hash: ClassHash, + /// The original storage values. + pub original_values: HashMap, + // The number of emitted events before the call. + n_emitted_events: usize, + // The number of sent messages to L1 before the call. + n_sent_messages_to_l1: usize, +} +impl EntryPointRevertInfo { + pub fn new( + contract_address: ContractAddress, + original_class_hash: ClassHash, + n_emitted_events: usize, + n_sent_messages_to_l1: usize, + ) -> Self { + Self { + contract_address, + original_class_hash, + original_values: HashMap::new(), + n_emitted_events, + n_sent_messages_to_l1, + } + } +} + +/// The ExecutionRevertInfo stores a vector of entry point revert infos. +/// We don't merge infos related same contract as doing it on every nesting level would +/// result in O(N^2) complexity. +#[derive(Default, Debug)] +pub struct ExecutionRevertInfo(pub Vec); + /// Represents a the type of the call (used for debugging). #[cfg_attr(feature = "transaction_serde", derive(serde::Deserialize))] #[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq, Serialize)] @@ -103,8 +142,37 @@ impl CallEntryPoint { self.class_hash = Some(class_hash); let contract_class = state.get_compiled_contract_class(class_hash)?; + context.revert_infos.0.push(EntryPointRevertInfo::new( + self.storage_address, + storage_class_hash, + context.n_emitted_events, + context.n_sent_messages_to_l1, + )); + execute_entry_point_call_wrapper(self, contract_class, state, resources, context) } + + /// Similar to `execute`, but returns an error if the outer call is reverted. + pub fn non_reverting_execute( + self, + state: &mut dyn State, + resources: &mut ExecutionResources, + context: &mut EntryPointExecutionContext, + ) -> EntryPointExecutionResult { + let execution_result = self.execute(state, resources, context); + if let Ok(call_info) = &execution_result { + // If the execution of the outer call failed, revert the transction. + if call_info.execution.failed { + let retdata = &call_info.execution.retdata.0; + + return Err(EntryPointExecutionError::ExecutionFailed { + error_data: retdata.clone(), + }); + } + } + + execution_result + } } pub struct ConstructorContext { @@ -133,6 +201,9 @@ pub struct EntryPointExecutionContext { pub execution_mode: ExecutionMode, // The call stack of tracked resources from the first entry point to the current. pub tracked_resource_stack: Vec, + + // Information for reverting the state (inludes the revert info of the callers). + pub revert_infos: ExecutionRevertInfo, } impl EntryPointExecutionContext { @@ -150,6 +221,7 @@ impl EntryPointExecutionContext { current_recursion_depth: Default::default(), execution_mode: mode, tracked_resource_stack: vec![], + revert_infos: ExecutionRevertInfo(vec![]), } } @@ -286,6 +358,24 @@ impl EntryPointExecutionContext { pub fn gas_costs(&self) -> &GasCosts { &self.versioned_constants().os_constants.gas_costs } + + /// Reverts the state back to the way it was when self.revert_infos.0['revert_idx'] was created. + pub fn revert(&mut self, revert_idx: usize, state: &mut dyn State) -> StateResult<()> { + for contract_revert_info in self.revert_infos.0.drain(revert_idx..).rev() { + for (key, value) in contract_revert_info.original_values.iter() { + state.set_storage_at(contract_revert_info.contract_address, *key, *value)?; + } + state.set_class_hash_at( + contract_revert_info.contract_address, + contract_revert_info.original_class_hash, + )?; + + self.n_emitted_events = contract_revert_info.n_emitted_events; + self.n_sent_messages_to_l1 = contract_revert_info.n_sent_messages_to_l1; + } + + Ok(()) + } } pub fn execute_constructor_entry_point( @@ -319,7 +409,7 @@ pub fn execute_constructor_entry_point( initial_gas: remaining_gas, }; - constructor_call.execute(state, resources, context).map_err(|error| { + constructor_call.non_reverting_execute(state, resources, context).map_err(|error| { ConstructorEntryPointExecutionError::new(error, &ctor_context, Some(constructor_selector)) }) } diff --git a/crates/blockifier/src/execution/entry_point_execution.rs b/crates/blockifier/src/execution/entry_point_execution.rs index bf11bed021..1464e80614 100644 --- a/crates/blockifier/src/execution/entry_point_execution.rs +++ b/crates/blockifier/src/execution/entry_point_execution.rs @@ -107,7 +107,7 @@ pub fn execute_entry_point_call( program_extra_data_length, tracked_resource, )?; - if call_info.execution.failed { + if call_info.execution.failed && !context.versioned_constants().enable_reverts { return Err(EntryPointExecutionError::ExecutionFailed { error_data: call_info.execution.retdata.0, }); @@ -372,7 +372,7 @@ fn maybe_fill_holes( pub fn finalize_execution( mut runner: CairoRunner, - syscall_handler: SyscallHintProcessor<'_>, + mut syscall_handler: SyscallHintProcessor<'_>, previous_resources: ExecutionResources, n_total_args: usize, program_extra_data_length: usize, @@ -413,6 +413,8 @@ pub fn finalize_execution( *syscall_handler.resources += &versioned_constants.get_additional_os_syscall_resources(&syscall_handler.syscall_counter); + syscall_handler.finalize(); + let full_call_resources = &*syscall_handler.resources - &previous_resources; Ok(CallInfo { call: syscall_handler.call, diff --git a/crates/blockifier/src/execution/stack_trace_test.rs b/crates/blockifier/src/execution/stack_trace_test.rs index 6befda1689..bcca1bcfe0 100644 --- a/crates/blockifier/src/execution/stack_trace_test.rs +++ b/crates/blockifier/src/execution/stack_trace_test.rs @@ -39,8 +39,6 @@ use crate::transaction::test_utils::{ use crate::transaction::transaction_types::TransactionType; use crate::transaction::transactions::ExecutableTransaction; -const INNER_CALL_CONTRACT_IN_CALL_CHAIN_OFFSET: usize = 117; - #[rstest] fn test_stack_trace_with_inner_error_msg(block_context: BlockContext) { let cairo_version = CairoVersion::Cairo0; @@ -212,19 +210,16 @@ An ASSERT_EQ instruction failed: 1 != 0. " ); - let expected_trace_cairo1 = format!( + let expected_trace_cairo1 = "Transaction execution has failed: -0: Error in the called contract (contract address: {account_address_felt:#064x}, class hash: \ - {account_contract_hash:#064x}, selector: {execute_selector_felt:#064x}): -Error at pc=0:767: -1: Error in the called contract (contract address: {test_contract_address_felt:#064x}, class hash: \ - {test_contract_hash:#064x}, selector: {external_entry_point_selector_felt:#064x}): -Error at pc=0:612: -2: Error in the called contract (contract address: {test_contract_address_2_felt:#064x}, class \ - hash: {test_contract_hash:#064x}, selector: {inner_entry_point_selector_felt:#064x}): -Execution failed. Failure reason: 0x6661696c ('fail'). +0: Error in the called contract (contract address: \ + 0x00000000000000000000000000000000000000000000000000000000c0020000, class hash: \ + 0x0000000000000000000000000000000000000000000000000000000080020000, selector: \ + 0x015d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad): +Execution failed. Failure reason: (0x6661696c ('fail'), 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED'), 0x454e545259504f494e545f4641494c4544 ('ENTRYPOINT_FAILED')). " - ); + .into(); let expected_trace = match cairo_version { CairoVersion::Cairo0 => expected_trace_cairo0, @@ -334,21 +329,13 @@ Unknown location (pc=0:{expected_pc1}) ) } CairoVersion::Cairo1 => { - let pc_location = entry_point_offset.0 + INNER_CALL_CONTRACT_IN_CALL_CHAIN_OFFSET; format!( "Transaction execution has failed: 0: Error in the called contract (contract address: {account_address_felt:#064x}, class hash: \ {account_contract_hash:#064x}, selector: {execute_selector_felt:#064x}): -Error at pc=0:767: -1: Error in the called contract (contract address: {contract_address_felt:#064x}, class hash: \ - {test_contract_hash:#064x}, selector: {invoke_call_chain_selector_felt:#064x}): -Error at pc=0:9631: -Cairo traceback (most recent call last): -Unknown location (pc=0:{pc_location}) - -2: Error in the called contract (contract address: {contract_address_felt:#064x}, class hash: \ - {test_contract_hash:#064x}, selector: {invoke_call_chain_selector_felt:#064x}): -Execution failed. Failure reason: {expected_error}. +Execution failed. Failure reason: ({expected_error}, 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED'), 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED')). " ) } @@ -490,27 +477,16 @@ Unknown location (pc=0:{expected_pc3}) ) } CairoVersion::Cairo1 => { - let pc_location = entry_point_offset.0 + INNER_CALL_CONTRACT_IN_CALL_CHAIN_OFFSET; - let (expected_pc0, expected_pc1, _, _) = expected_pcs; format!( "Transaction execution has failed: -0: Error in the called contract (contract address: {account_address_felt:#064x}, class hash: \ - {account_contract_hash:#064x}, selector: {execute_selector_felt:#064x}): -Error at pc=0:767: -1: Error in the called contract (contract address: {address_felt:#064x}, class hash: \ - {test_contract_hash:#064x}, selector: {invoke_call_chain_selector_felt:#064x}): -Error at pc=0:{expected_pc0}: -Cairo traceback (most recent call last): -Unknown location (pc=0:{pc_location}) - -2: Error in the called contract (contract address: {address_felt:#064x}, class hash: \ - {test_contract_hash:#064x}, selector: {invoke_call_chain_selector_felt:#064x}): -Error at pc=0:{expected_pc1}: -Cairo traceback (most recent call last): -Unknown location (pc=0:{pc_location}) - -3: {last_call_preamble}: -Execution failed. Failure reason: {expected_error}. +0: Error in the called contract (contract address: \ + 0x00000000000000000000000000000000000000000000000000000000c0020000, class hash: \ + 0x0000000000000000000000000000000000000000000000000000000080020000, selector: \ + 0x015d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad): +Execution failed. Failure reason: ({expected_error}, 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED'), 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED'), 0x454e545259504f494e545f4641494c4544 \ + ('ENTRYPOINT_FAILED')). " ) } @@ -607,14 +583,9 @@ An ASSERT_EQ instruction failed: 1 != 0. ", class_hash.0 ), - CairoVersion::Cairo1 => format!( - "Transaction validation has failed: -0: Error in the called contract (contract address: {contract_address:#064x}, class hash: {:#064x}, \ - selector: {selector:#064x}): -Execution failed. Failure reason: 0x496e76616c6964207363656e6172696f ('Invalid scenario'). -", - class_hash.0 - ), + CairoVersion::Cairo1 => "The `validate` entry point panicked with \ + 0x496e76616c6964207363656e6172696f ('Invalid scenario')." + .into(), }; // Clean pc locations from the trace. diff --git a/crates/blockifier/src/execution/syscalls/hint_processor.rs b/crates/blockifier/src/execution/syscalls/hint_processor.rs index 3753febac9..9a6764cd4e 100644 --- a/crates/blockifier/src/execution/syscalls/hint_processor.rs +++ b/crates/blockifier/src/execution/syscalls/hint_processor.rs @@ -1,5 +1,5 @@ use std::any::Any; -use std::collections::{HashMap, HashSet}; +use std::collections::{hash_map, HashMap, HashSet}; use cairo_lang_casm::hints::{Hint, StarknetHint}; use cairo_lang_casm::operand::{BinOpOperand, DerefOrImmediate, Operation, Register, ResOperand}; @@ -194,6 +194,9 @@ pub const OUT_OF_GAS_ERROR: &str = // "Block number out of range"; pub const BLOCK_NUMBER_OUT_OF_RANGE_ERROR: &str = "0x00000000000000426c6f636b206e756d626572206f7574206f662072616e6765"; +// "ENTRYPOINT_FAILED"; +pub const ENTRYPOINT_FAILED_ERROR: &str = + "0x000000000000000000000000000000454e545259504f494e545f4641494c4544"; // "Invalid input length"; pub const INVALID_INPUT_LENGTH_ERROR: &str = "0x000000000000000000000000496e76616c696420696e707574206c656e677468"; @@ -225,6 +228,10 @@ pub struct SyscallHintProcessor<'a> { pub read_values: Vec, pub accessed_keys: HashSet, + // The original storage value of the executed contract. + // Should be moved back `context.revert_info` before executing an inner call. + pub original_values: HashMap, + // Secp hint processors. pub secp256k1_hint_processor: SecpHintProcessor, pub secp256r1_hint_processor: SecpHintProcessor, @@ -247,6 +254,14 @@ impl<'a> SyscallHintProcessor<'a> { hints: &'a HashMap, read_only_segments: ReadOnlySegments, ) -> Self { + let original_values = std::mem::take( + &mut context + .revert_infos + .0 + .last_mut() + .expect("Missing contract revert info.") + .original_values, + ); SyscallHintProcessor { state, resources, @@ -260,6 +275,7 @@ impl<'a> SyscallHintProcessor<'a> { syscall_ptr: initial_syscall_ptr, read_values: vec![], accessed_keys: HashSet::new(), + original_values, hints, execution_info_ptr: None, secp256k1_hint_processor: SecpHintProcessor::default(), @@ -689,11 +705,29 @@ impl<'a> SyscallHintProcessor<'a> { key: StorageKey, value: Felt, ) -> SyscallResult { + let contract_address = self.storage_address(); + + match self.original_values.entry(key) { + hash_map::Entry::Vacant(entry) => { + entry.insert(self.state.get_storage_at(contract_address, key)?); + } + hash_map::Entry::Occupied(_) => {} + } + self.accessed_keys.insert(key); - self.state.set_storage_at(self.storage_address(), key, value)?; + self.state.set_storage_at(contract_address, key, value)?; Ok(StorageWriteResponse {}) } + + pub fn finalize(&mut self) { + self.context + .revert_infos + .0 + .last_mut() + .expect("Missing contract revert info.") + .original_values = std::mem::take(&mut self.original_values); + } } /// Retrieves a [Relocatable] from the VM given a [ResOperand]. @@ -791,22 +825,38 @@ pub fn execute_inner_call( syscall_handler: &mut SyscallHintProcessor<'_>, remaining_gas: &mut u64, ) -> SyscallResult { + let revert_idx = syscall_handler.context.revert_infos.0.len(); + let call_info = call.execute(syscall_handler.state, syscall_handler.resources, syscall_handler.context)?; - let raw_retdata = &call_info.execution.retdata.0; - - if call_info.execution.failed { - // TODO(spapini): Append an error word according to starknet spec if needed. - // Something like "EXECUTION_ERROR". - return Err(SyscallExecutionError::SyscallError { error_data: raw_retdata.clone() }); - } - let retdata_segment = create_retdata_segment(vm, syscall_handler, raw_retdata)?; + let mut raw_retdata = call_info.execution.retdata.0.clone(); update_remaining_gas(remaining_gas, &call_info); + let failed = call_info.execution.failed; syscall_handler.inner_calls.push(call_info); + if failed { + syscall_handler.context.revert(revert_idx, syscall_handler.state)?; + + // Delete events and l2_to_l1_messages from the reverted call. + let reverted_call = &mut syscall_handler.inner_calls.last_mut().unwrap(); + let mut stack: Vec<&mut CallInfo> = vec![reverted_call]; + while let Some(call_info) = stack.pop() { + call_info.execution.events.clear(); + call_info.execution.l2_to_l1_messages.clear(); + // Add inner calls that did not fail to the stack. + // The events and l2_to_l1_messages of the failed calls were already cleared. + stack.extend( + call_info.inner_calls.iter_mut().filter(|call_info| !call_info.execution.failed), + ); + } - Ok(retdata_segment) + raw_retdata + .push(Felt::from_hex(ENTRYPOINT_FAILED_ERROR).map_err(SyscallExecutionError::from)?); + return Err(SyscallExecutionError::SyscallError { error_data: raw_retdata }); + } + + create_retdata_segment(vm, syscall_handler, &raw_retdata) } pub fn create_retdata_segment( @@ -843,12 +893,14 @@ pub fn execute_library_call( initial_gas: *remaining_gas, }; - execute_inner_call(entry_point, vm, syscall_handler, remaining_gas).map_err(|error| { - error.as_lib_call_execution_error( + execute_inner_call(entry_point, vm, syscall_handler, remaining_gas).map_err(|error| match error + { + SyscallExecutionError::SyscallError { .. } => error, + _ => error.as_lib_call_execution_error( class_hash, syscall_handler.storage_address(), entry_point_selector, - ) + ), }) } diff --git a/crates/blockifier/src/execution/syscalls/mod.rs b/crates/blockifier/src/execution/syscalls/mod.rs index 9091f92ea1..8258da2f75 100644 --- a/crates/blockifier/src/execution/syscalls/mod.rs +++ b/crates/blockifier/src/execution/syscalls/mod.rs @@ -198,9 +198,11 @@ pub fn call_contract( call_type: CallType::Call, initial_gas: *remaining_gas, }; + let retdata_segment = execute_inner_call(entry_point, vm, syscall_handler, remaining_gas) - .map_err(|error| { - error.as_call_contract_execution_error(class_hash, storage_address, selector) + .map_err(|error| match error { + SyscallExecutionError::SyscallError { .. } => error, + _ => error.as_call_contract_execution_error(class_hash, storage_address, selector), })?; Ok(CallContractResponse { segment: retdata_segment }) diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/call_contract.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/call_contract.rs index f73b04027b..78f8236fb2 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/call_contract.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/call_contract.rs @@ -1,3 +1,5 @@ +use core::panic; + use pretty_assertions::assert_eq; use starknet_api::felt; use test_case::test_case; @@ -7,11 +9,49 @@ use crate::abi::abi_utils::selector_from_name; use crate::context::ChainInfo; use crate::execution::call_info::{CallExecution, Retdata}; use crate::execution::entry_point::CallEntryPoint; +use crate::execution::execution_utils::format_panic_data; use crate::retdata; +use crate::state::state_api::StateReader; use crate::test_utils::contracts::FeatureContract; use crate::test_utils::initial_test_state::test_state; use crate::test_utils::{create_calldata, trivial_external_entry_point_new, CairoVersion, BALANCE}; +#[test] +fn test_call_contract_that_panics() { + let test_contract = FeatureContract::TestContract(CairoVersion::Cairo1); + let empty_contract = FeatureContract::Empty(CairoVersion::Cairo1); + let chain_info = &ChainInfo::create_for_testing(); + let mut state = test_state(chain_info, BALANCE, &[(test_contract, 1), (empty_contract, 0)]); + + let new_class_hash = empty_contract.get_class_hash(); + let outer_entry_point_selector = selector_from_name("test_call_contract_revert"); + let calldata = create_calldata( + FeatureContract::TestContract(CairoVersion::Cairo1).get_instance_address(0), + "test_revert_helper", + &[new_class_hash.0], + ); + let entry_point_call = CallEntryPoint { + entry_point_selector: outer_entry_point_selector, + calldata, + ..trivial_external_entry_point_new(test_contract) + }; + + let res = entry_point_call.execute_directly(&mut state).unwrap(); + assert!(!res.execution.failed); + let [inner_call] = &res.inner_calls[..] else { + panic!("Expected one inner call, got {:?}", res.inner_calls); + }; + // The inner call should have failed. + assert!(inner_call.execution.failed); + assert_eq!(format_panic_data(&inner_call.execution.retdata.0), "\"test_revert_helper\""); + assert!(inner_call.execution.events.is_empty()); + assert!(inner_call.execution.l2_to_l1_messages.is_empty()); + assert_eq!( + state.get_class_hash_at(inner_call.call.storage_address).unwrap(), + test_contract.get_class_hash() + ); +} + #[test_case( FeatureContract::TestContract(CairoVersion::Cairo1), FeatureContract::TestContract(CairoVersion::Cairo1), diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/get_block_hash.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/get_block_hash.rs index cb3bdc85db..64acd45360 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/get_block_hash.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/get_block_hash.rs @@ -11,6 +11,7 @@ use crate::abi::constants; use crate::context::ChainInfo; use crate::execution::call_info::{CallExecution, Retdata}; use crate::execution::entry_point::CallEntryPoint; +use crate::execution::execution_utils::format_panic_data; use crate::state::cached_state::CachedState; use crate::state::state_api::State; use crate::test_utils::contracts::FeatureContract; @@ -92,6 +93,10 @@ fn negative_flow_block_number_out_of_range(test_contract: FeatureContract) { ..trivial_external_entry_point_new(test_contract) }; - let error = entry_point_call.execute_directly(&mut state).unwrap_err().to_string(); - assert!(error.contains("Block number out of range")); + let call_info = entry_point_call.execute_directly(&mut state).unwrap(); + assert!(call_info.execution.failed); + assert_eq!( + format_panic_data(&call_info.execution.retdata.0), + "0x426c6f636b206e756d626572206f7574206f662072616e6765 ('Block number out of range')" + ); } diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/library_call.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/library_call.rs index 21d162fc89..b5eb86a10a 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/library_call.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/library_call.rs @@ -13,6 +13,7 @@ use crate::abi::abi_utils::selector_from_name; use crate::context::ChainInfo; use crate::execution::call_info::{CallExecution, CallInfo, Retdata}; use crate::execution::entry_point::{CallEntryPoint, CallType}; +use crate::execution::execution_utils::format_panic_data; use crate::execution::syscalls::syscall_tests::constants::{ REQUIRED_GAS_LIBRARY_CALL_TEST, REQUIRED_GAS_STORAGE_READ_WRITE_TEST, @@ -79,8 +80,12 @@ fn test_library_call_assert_fails(test_contract: FeatureContract) { ..trivial_external_entry_point_new(test_contract) }; - let err = entry_point_call.execute_directly(&mut state).unwrap_err(); - assert!(err.to_string().contains("x != y")); + let call_info = entry_point_call.execute_directly(&mut state).unwrap(); + assert!(call_info.execution.failed); + assert_eq!( + format_panic_data(&call_info.execution.retdata.0), + "(0x7820213d2079 ('x != y'), 0x454e545259504f494e545f4641494c4544 ('ENTRYPOINT_FAILED'))" + ); } #[test_case(FeatureContract::TestContract(CairoVersion::Cairo1), 478110; "VM")] diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs index 9f7a9e7c1a..0b87c51b99 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/out_of_gas.rs @@ -5,6 +5,7 @@ use test_case::test_case; use crate::abi::abi_utils::selector_from_name; use crate::context::ChainInfo; use crate::execution::entry_point::CallEntryPoint; +use crate::execution::execution_utils::format_panic_data; use crate::execution::syscalls::syscall_tests::constants::REQUIRED_GAS_STORAGE_READ_WRITE_TEST; use crate::test_utils::contracts::FeatureContract; use crate::test_utils::initial_test_state::test_state; @@ -24,6 +25,10 @@ fn test_out_of_gas(test_contract: FeatureContract) { initial_gas: REQUIRED_GAS_STORAGE_READ_WRITE_TEST - 1, ..trivial_external_entry_point_new(test_contract) }; - let error = entry_point_call.execute_directly(&mut state).unwrap_err().to_string(); - assert!(error.contains("Out of gas")); + let call_info = entry_point_call.execute_directly(&mut state).unwrap(); + assert!(call_info.execution.failed); + assert_eq!( + format_panic_data(&call_info.execution.retdata.0), + "0x4f7574206f6620676173 ('Out of gas')" + ); } diff --git a/crates/blockifier/src/transaction/account_transaction.rs b/crates/blockifier/src/transaction/account_transaction.rs index 960a05856a..9062758e12 100644 --- a/crates/blockifier/src/transaction/account_transaction.rs +++ b/crates/blockifier/src/transaction/account_transaction.rs @@ -941,7 +941,6 @@ impl ValidatableTransaction for AccountTransaction { let expected_retdata = retdata![Felt::from_hex(constants::VALIDATE_RETDATA)?]; if validate_call_info.execution.failed { - // TODO(ilya): Add a test for this case. return Err(TransactionExecutionError::PanicInValidate { panic_reason: validate_call_info.execution.retdata, }); diff --git a/crates/blockifier/src/transaction/account_transactions_test.rs b/crates/blockifier/src/transaction/account_transactions_test.rs index fd1222bd5d..f42d594302 100644 --- a/crates/blockifier/src/transaction/account_transactions_test.rs +++ b/crates/blockifier/src/transaction/account_transactions_test.rs @@ -1504,3 +1504,55 @@ fn test_revert_in_execute( assert!(tx_execution_info.is_reverted()); assert!(tx_execution_info.revert_error.unwrap().contains("Failed to deserialize param #1")); } + +#[rstest] +#[case(true)] +#[case(false)] +fn test_call_contract_that_panics( + mut block_context: BlockContext, + max_l1_resource_bounds: ValidResourceBounds, + #[case] enable_reverts: bool, +) { + // Override enable reverts. + block_context.versioned_constants.enable_reverts = enable_reverts; + let test_contract = FeatureContract::TestContract(CairoVersion::Cairo1); + let account = FeatureContract::AccountWithoutValidations(CairoVersion::Cairo1); + let chain_info = &block_context.chain_info; + let state = &mut test_state(chain_info, BALANCE, &[(test_contract, 1), (account, 1)]); + let test_contract_address = test_contract.get_instance_address(0); + let account_address = account.get_instance_address(0); + let mut nonce_manager = NonceManager::default(); + + let new_class_hash = test_contract.get_class_hash(); + + let calldata = [ + *FeatureContract::TestContract(CairoVersion::Cairo1).get_instance_address(0).0.key(), + selector_from_name("test_revert_helper").0, + felt!(1_u8), + new_class_hash.0, + ]; + + // Invoke a function that changes the state and reverts. + let tx_args = invoke_tx_args! { + sender_address: account_address, + calldata: create_calldata( + test_contract_address, + "test_call_contract_revert", + &calldata + ), + nonce: nonce_manager.next(account_address) + }; + let tx_execution_info = run_invoke_tx( + state, + &block_context, + invoke_tx_args! { + resource_bounds: max_l1_resource_bounds, + ..tx_args + }, + ) + .unwrap(); + + // If reverts are enabled, `test_call_contract_revert` should catch it and ignore it. + // Otherwise, the transaction should revert. + assert_eq!(tx_execution_info.is_reverted(), !enable_reverts); +} diff --git a/crates/blockifier/src/transaction/transactions.rs b/crates/blockifier/src/transaction/transactions.rs index 696cbede62..6c451ae44a 100644 --- a/crates/blockifier/src/transaction/transactions.rs +++ b/crates/blockifier/src/transaction/transactions.rs @@ -534,14 +534,15 @@ impl Executable for InvokeTransaction { initial_gas: *remaining_gas, }; - let call_info = execute_call.execute(state, resources, context).map_err(|error| { - TransactionExecutionError::ExecutionError { - error, - class_hash, - storage_address, - selector: entry_point_selector, - } - })?; + let call_info = + execute_call.non_reverting_execute(state, resources, context).map_err(|error| { + TransactionExecutionError::ExecutionError { + error, + class_hash, + storage_address, + selector: entry_point_selector, + } + })?; update_remaining_gas(remaining_gas, &call_info); Ok(Some(call_info)) @@ -635,7 +636,7 @@ impl Executable for L1HandlerTransaction { initial_gas: *remaining_gas, }; - execute_call.execute(state, resources, context).map(Some).map_err(|error| { + execute_call.non_reverting_execute(state, resources, context).map(Some).map_err(|error| { TransactionExecutionError::ExecutionError { error, class_hash,