From 307867fe51ee98aa212138b7c99b2205177f6d1c Mon Sep 17 00:00:00 2001 From: IlyasRidhuan Date: Wed, 9 Jul 2025 15:59:01 +0000 Subject: [PATCH] feat(avm)!: mem aware ec_add --- barretenberg/cpp/pil/vm2/ecc_mem.pil | 182 +++++++++ barretenberg/cpp/pil/vm2/execution.pil | 2 +- .../vm2/common/instruction_spec.cpp | 10 + .../relations/address_derivation.test.cpp | 13 +- .../vm2/constraining/relations/ecc.test.cpp | 363 ++++++++++++++++-- .../barretenberg/vm2/generated/columns.hpp | 8 +- .../vm2/generated/flavor_variables.hpp | 14 +- .../vm2/generated/relations/ecc_mem.hpp | 90 +++++ .../generated/relations/lookups_ecc_mem.hpp | 142 +++++++ .../vm2/generated/relations/perms_ecc_mem.hpp | 44 +++ .../src/barretenberg/vm2/simulation/ecc.cpp | 44 +++ .../src/barretenberg/vm2/simulation/ecc.hpp | 24 +- .../barretenberg/vm2/simulation/ecc.test.cpp | 16 +- .../vm2/simulation/events/ecc_events.hpp | 16 + .../simulation/events/events_container.hpp | 1 + .../barretenberg/vm2/simulation/execution.cpp | 40 ++ .../barretenberg/vm2/simulation/execution.hpp | 12 + .../vm2/simulation/execution.test.cpp | 41 ++ .../vm2/simulation/testing/mock_ecc.hpp | 5 + .../barretenberg/vm2/simulation_helper.cpp | 5 +- .../barretenberg/vm2/tracegen/ecc_trace.cpp | 59 ++- .../barretenberg/vm2/tracegen/ecc_trace.hpp | 3 + .../vm2/tracegen/lib/instruction_spec.cpp | 2 + .../vm2/tracegen/poseidon2_trace.cpp | 1 - .../src/barretenberg/vm2/tracegen_helper.cpp | 6 + 25 files changed, 1100 insertions(+), 43 deletions(-) create mode 100644 barretenberg/cpp/pil/vm2/ecc_mem.pil create mode 100644 barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp create mode 100644 barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp create mode 100644 barretenberg/cpp/src/barretenberg/vm2/generated/relations/perms_ecc_mem.hpp diff --git a/barretenberg/cpp/pil/vm2/ecc_mem.pil b/barretenberg/cpp/pil/vm2/ecc_mem.pil new file mode 100644 index 000000000000..268fd77d54d8 --- /dev/null +++ b/barretenberg/cpp/pil/vm2/ecc_mem.pil @@ -0,0 +1,182 @@ +include "ecc.pil"; +include "gt.pil"; +include "execution.pil"; + +/** + * This handles the memory writes when the ECCADD opcode is executed by user code. + * The reads are handled by the registers in the execution trace. + * This trace writes the resulting embedded curve point to the addresses {dst, + * dst + 1, and dst + 2 }. Embedded curve points consist of the tuple of types + * {x: FF, y: FF, is_inf: U1 }. + * + * Opcode operands (relevant in EXECUTION when interacting with this gadget): + * - rop[0]: p_x_addr + * - rop[1]: p_y_addr + * - rop[2]: p_is_inf_addr + * - rop[3]: q_x_addr + * - rop[4]: q_y_addr + * - rop[5]: q_is_inf_addr + * - rop[6]: dst_addr + * + * Memory I/O: + * - register[0]: M[p_x_addr] aka p_x (x coordinate of point P - read from memory by EXECUTION) + * - p_x is tagged-checked by execution/registers to be FF based on instruction spec. + * - register[1]: M[p_y_addr] aka p_y (y coordinate of point P - read from memory by EXECUTION) + * - p_y is tagged-checked by execution/registers to be FF based on instruction spec. + * - register[2]: M[p_is_inf_addr] aka p_is_inf (boolean flag if P is the point at infinity - read from memory by EXECUTION) + * - p_is_inf is tagged-checked by execution/registers to be U1 based on instruction spec. + * - register[3]: M[q_x_addr] aka q_x (x coordinate of point Q - read from memory by EXECUTION) + * - q_x is tagged-checked by execution/registers to be FF based on instruction spec. + * - register[4]: M[q_y_addr] aka q_y (y coordinate of point Q - read from memory by EXECUTION) + * - q_y is tagged-checked by execution/registers to be FF based on instruction spec. + * - register[5]: M[q_is_inf_addr] aka q_is_inf (boolean flag if Q is the point at infinity - read from memory by EXECUTION) + * - q_is_inf is tagged-checked by execution/registers to be U1 based on instruction spec. + * - M[rop[6]]: M[dst_addr] aka res_x (x coordinate of the resulting point RES - written by this gadget) + * - guaranteed by this gadget to be FF. + * - M[rop[6]+1]: M[dst_offset+1] aka res_y (y coordinate of the resulting point RES - written by this gadget) + * - guaranteed by this gadget to be FF. + * - M[rop[6]+2]: M[dst_offset+2] aka res_is_inf (boolean flag if RES is the point at infinity - written by this gadget) + * - guaranteed by this gadget to be U1. +* + * ERROR HANDLING: + * A single error needs to be handled as part of this trace + * (1) DST_OUT_OF_BOUNDS_ACCESS: If the writes would access a memory address outside + * of the max AVM memory address (AVM_HIGHEST_MEM_ADDRESS). + * + * N.B This subtrace writes the values within a single row (i.e. 3 output columns) + * + * This subtrace is connected to the ECC subtrace via a lookup. ECC is used by + * other subtraces internally (e.g., address derivation) + */ + +namespace ecc_add_mem; + + pol commit sel; + + #[skippable_if] + sel = 0; + + pol commit execution_clk; + pol commit space_id; + pol commit dst_addr[3]; + + // dst_addr[0] constrained by the permutation to execution + #[WRITE_INCR_DST_ADDR] + dst_addr[1] = sel * (dst_addr[0] + 1); + dst_addr[2] = sel * (dst_addr[0] + 2); + + pol commit p_x, p_y, p_is_inf; + pol commit q_x, q_y, q_is_inf; + + //////////////////////////////////////////////// + // Error Handling - Out of Range Memory Access + //////////////////////////////////////////////// + pol commit sel_dst_out_of_range_err; + sel_dst_out_of_range_err * (1 - sel_dst_out_of_range_err) = 0; + + // Use the comparison gadget to check that the max addresses are within range + // The comparison gadget provides the ability to test GreaterThan so we check + // dst_addr[2] > max_mem_addr + pol commit max_mem_addr; // Column needed until we support constants in lookups + sel * (max_mem_addr - constants.AVM_HIGHEST_MEM_ADDRESS) = 0; + + #[CHECK_DST_ADDR_IN_RANGE] + sel { dst_addr[2], max_mem_addr, sel_dst_out_of_range_err } + in + gt.sel { gt.input_a, gt.input_b, gt.res }; + + //////////////////////////////////////////////// + // Dispatch from execution trace to ECC Add + //////////////////////////////////////////////// + #[DISPATCH_EXEC_ECC_ADD] + execution.sel_execute_ecc_add { + precomputed.clk, + execution.context_id, + // Point P + execution.register[0], + execution.register[1], + execution.register[2], + // Point Q + execution.register[3], + execution.register[4], + execution.register[5], + // Dst address + execution.rop[6], + // Error + execution.sel_opcode_error + } is + sel { + execution_clk, + space_id, + // Point P + p_x, + p_y, + p_is_inf, + // Point Q + q_x, + q_y, + q_is_inf, + // Dst address + dst_addr[0], + // Error + sel_dst_out_of_range_err + }; + + /////////////////////////////////////////////////////////////////////// + // Dispatch inputs to ecc add and retrieve outputs + /////////////////////////////////////////////////////////////////////// + pol commit res_x, res_y, res_is_inf; + pol commit sel_should_exec; + sel_should_exec = sel * (1 - sel_dst_out_of_range_err); + + #[INPUT_OUTPUT_ECC_ADD] + sel_should_exec { + p_x, p_y, p_is_inf, + q_x, q_y, q_is_inf, + res_x, res_y, res_is_inf + } in + ecc.sel { + ecc.p_x, ecc.p_y, ecc.p_is_inf, + ecc.q_x, ecc.q_y, ecc.q_is_inf, + ecc.r_x, ecc.r_y, ecc.r_is_inf + }; + + //////////////////////////////////////////////// + // Write output to memory + //////////////////////////////////////////////// + // TODO: These need to be changed to permutations once we have the custom permutation selectors impl + #[WRITE_MEM_0] + sel_should_exec { + execution_clk, dst_addr[0], + res_x, /*FF_mem_tag*/ precomputed.zero, + space_id, /*rw=1*/ sel_should_exec + } in + memory.sel { + memory.clk, memory.address, + memory.value, memory.tag, + memory.space_id, memory.rw + }; + + #[WRITE_MEM_1] + sel_should_exec { + execution_clk, dst_addr[1], + res_y, /*FF_mem_tag*/ precomputed.zero, + space_id, /*rw=1*/ sel_should_exec + } in + memory.sel { + memory.clk, memory.address, + memory.value, memory.tag, + memory.space_id, memory.rw + }; + + #[WRITE_MEM_2] + sel_should_exec { + execution_clk, dst_addr[2], + res_is_inf, /*U1_mem_tag=1*/ sel_should_exec, + space_id, /*rw=1*/ sel_should_exec + } in + memory.sel { + memory.clk, memory.address, + memory.value, memory.tag, + memory.space_id, memory.rw + }; diff --git a/barretenberg/cpp/pil/vm2/execution.pil b/barretenberg/cpp/pil/vm2/execution.pil index 1a3154147a54..d77cc5794165 100644 --- a/barretenberg/cpp/pil/vm2/execution.pil +++ b/barretenberg/cpp/pil/vm2/execution.pil @@ -5,7 +5,7 @@ include "memory.pil"; include "keccakf1600.pil"; include "precomputed.pil"; include "sha256.pil"; -include "ecc.pil"; +include "ecc_mem.pil"; include "poseidon2_mem.pil"; include "scalar_mul.pil"; include "to_radix.pil"; diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/instruction_spec.cpp b/barretenberg/cpp/src/barretenberg/vm2/common/instruction_spec.cpp index ded8a6a9af8f..99165e8c766f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/common/instruction_spec.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/common/instruction_spec.cpp @@ -606,6 +606,16 @@ const std::unordered_map EXEC_INSTRUCTION_ { ExecutionOpCode::POSEIDON2PERM, { .num_addresses = 2, .gas_cost = { .opcode_gas = AVM_POSEIDON2_BASE_L2_GAS, .base_da = 0, .dyn_l2 = 0, .dyn_da = 0 } } }, + { ExecutionOpCode::ECADD, + { .num_addresses = 7, + .gas_cost = { .opcode_gas = AVM_ECADD_BASE_L2_GAS, .base_da = 0, .dyn_l2 = 0, .dyn_da = 0 }, + .register_info = RegisterInfo().add_inputs({ /*p_x=*/ValueTag::FF, + /*p_y=*/ValueTag::FF, + /*p_inf*/ ValueTag::U1, + /*q_x*/ ValueTag::FF, + /*q_y*/ ValueTag::FF, + /*q_inf*/ ValueTag::U1 }) } }, + }; } // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/address_derivation.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/address_derivation.test.cpp index ce6c9fb8c6e7..f8d98800c27a 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/address_derivation.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/address_derivation.test.cpp @@ -39,6 +39,7 @@ using simulation::AddressDerivationEvent; using simulation::compute_contract_address; using simulation::Ecc; using simulation::EccAddEvent; +using simulation::EccAddMemoryEvent; using simulation::EventEmitter; using simulation::hash_public_keys; using simulation::MockExecutionIdManager; @@ -104,14 +105,12 @@ TEST(AddressDerivationConstrainingTest, WithInteractions) NoopEventEmitter to_radix_event_emitter; EventEmitter ecadd_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; EventEmitter hash_event_emitter; NoopEventEmitter perm_event_emitter; NoopEventEmitter perm_mem_event_emitter; EventEmitter address_derivation_event_emitter; - ToRadix to_radix_simulator(to_radix_event_emitter); - Ecc ecc_simulator(to_radix_simulator, ecadd_event_emitter, scalar_mul_event_emitter); - StrictMock mock_exec_id_manager; EXPECT_CALL(mock_exec_id_manager, get_execution_id) .WillRepeatedly(Return(0)); // Use a fixed execution ID for the test @@ -119,6 +118,14 @@ TEST(AddressDerivationConstrainingTest, WithInteractions) Poseidon2 poseidon2_simulator( mock_exec_id_manager, mock_gt, hash_event_emitter, perm_event_emitter, perm_mem_event_emitter); + ToRadix to_radix_simulator(to_radix_event_emitter); + Ecc ecc_simulator(mock_exec_id_manager, + mock_gt, + to_radix_simulator, + ecadd_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); + AddressDerivation address_derivation(poseidon2_simulator, ecc_simulator, address_derivation_event_emitter); TestTraceContainer trace = TestTraceContainer::from_rows({ diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/ecc.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/ecc.test.cpp index f212523d0c9b..cbf8a3f2b974 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/ecc.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/ecc.test.cpp @@ -1,6 +1,8 @@ #include #include +#include + #include "barretenberg/vm2/common/aztec_types.hpp" #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/constraining/flavor_settings.hpp" @@ -10,6 +12,12 @@ #include "barretenberg/vm2/simulation/ecc.hpp" #include "barretenberg/vm2/simulation/events/ecc_events.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" +#include "barretenberg/vm2/simulation/memory.hpp" +#include "barretenberg/vm2/simulation/testing/fakes/fake_gt.hpp" +#include "barretenberg/vm2/simulation/testing/mock_execution.hpp" +#include "barretenberg/vm2/simulation/testing/mock_execution_id_manager.hpp" +#include "barretenberg/vm2/simulation/testing/mock_gt.hpp" +#include "barretenberg/vm2/simulation/testing/mock_memory.hpp" #include "barretenberg/vm2/testing/fixtures.hpp" #include "barretenberg/vm2/testing/macros.hpp" #include "barretenberg/vm2/tracegen/ecc_trace.hpp" @@ -19,6 +27,9 @@ namespace bb::avm2::constraining { namespace { +using ::testing::Return; +using ::testing::StrictMock; + using tracegen::EccTraceBuilder; using tracegen::TestTraceContainer; using tracegen::ToRadixTraceBuilder; @@ -27,11 +38,18 @@ using FF = AvmFlavorSettings::FF; using C = Column; using ecc = bb::avm2::ecc; using scalar_mul = bb::avm2::scalar_mul; +using mem_aware_ecc = bb::avm2::ecc_mem; using EccSimulator = simulation::Ecc; using ToRadixSimulator = simulation::ToRadix; using simulation::EccAddEvent; +using simulation::EccAddMemoryEvent; using simulation::EventEmitter; +using simulation::FakeGreaterThan; +using simulation::MemoryStore; +using simulation::MockExecutionIdManager; +using simulation::MockGreaterThan; +using simulation::MockMemory; using simulation::NoopEventEmitter; using simulation::ScalarMulEvent; using simulation::ToRadixEvent; @@ -478,12 +496,22 @@ TEST(ScalarMulConstrainingTest, ScalarMulEmptyRow) TEST(ScalarMulConstrainingTest, MulByOne) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF(1); ecc_simulator.scalar_mul(p, scalar); @@ -492,7 +520,6 @@ TEST(ScalarMulConstrainingTest, MulByOne) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); EXPECT_EQ(trace.get_num_rows(), /*start_row=*/1 + 254); check_relation(trace); @@ -500,12 +527,22 @@ TEST(ScalarMulConstrainingTest, MulByOne) TEST(ScalarMulConstrainingTest, BasicMul) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -514,7 +551,6 @@ TEST(ScalarMulConstrainingTest, BasicMul) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); EXPECT_EQ(trace.get_num_rows(), /*start_row=*/1 + 254); check_relation(trace); @@ -522,12 +558,22 @@ TEST(ScalarMulConstrainingTest, BasicMul) TEST(ScalarMulConstrainingTest, MultipleInvocations) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); ecc_simulator.scalar_mul(p, FF("0x2b01df0ef6d941a826bea23bece8243cbcdc159d5e97fbaa2171f028e05ba9b6")); ecc_simulator.scalar_mul(q, FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09")); @@ -536,7 +582,6 @@ TEST(ScalarMulConstrainingTest, MultipleInvocations) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); EXPECT_EQ(trace.get_num_rows(), /*start_row=*/1 + (254) * 2); check_relation(trace); @@ -544,12 +589,22 @@ TEST(ScalarMulConstrainingTest, MultipleInvocations) TEST(ScalarMulConstrainingTest, MulInteractions) { + EccTraceBuilder builder; + EventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; EventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -558,7 +613,6 @@ TEST(ScalarMulConstrainingTest, MulInteractions) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; ToRadixTraceBuilder to_radix_builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); builder.process_add(ecc_add_event_emitter.dump_events(), trace); @@ -572,12 +626,22 @@ TEST(ScalarMulConstrainingTest, MulInteractions) TEST(ScalarMulConstrainingTest, MulAddInteractionsInfinity) { + EccTraceBuilder builder; + EventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); EmbeddedCurvePoint result = ecc_simulator.scalar_mul(EmbeddedCurvePoint::infinity(), FF(10)); ASSERT_TRUE(result.is_infinity()); @@ -586,7 +650,6 @@ TEST(ScalarMulConstrainingTest, MulAddInteractionsInfinity) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); builder.process_add(ecc_add_event_emitter.dump_events(), trace); @@ -598,12 +661,22 @@ TEST(ScalarMulConstrainingTest, MulAddInteractionsInfinity) TEST(ScalarMulConstrainingTest, NegativeMulAddInteractions) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -612,7 +685,6 @@ TEST(ScalarMulConstrainingTest, NegativeMulAddInteractions) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); EXPECT_THROW_WITH_MESSAGE((check_interaction(trace)), @@ -623,12 +695,22 @@ TEST(ScalarMulConstrainingTest, NegativeMulAddInteractions) TEST(ScalarMulConstrainingTest, NegativeMulRadixInteractions) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -637,7 +719,6 @@ TEST(ScalarMulConstrainingTest, NegativeMulRadixInteractions) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); EXPECT_THROW_WITH_MESSAGE((check_interaction(trace)), @@ -648,12 +729,22 @@ TEST(ScalarMulConstrainingTest, NegativeMulRadixInteractions) TEST(ScalarMulConstrainingTest, NegativeDisableSel) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -662,7 +753,6 @@ TEST(ScalarMulConstrainingTest, NegativeDisableSel) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Disable the selector in one of the rows between start and end trace.set(Column::scalar_mul_sel, 5, 0); @@ -672,12 +762,22 @@ TEST(ScalarMulConstrainingTest, NegativeDisableSel) TEST(ScalarMulConstrainingTest, NegativeEnableStartFirstRow) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -686,7 +786,6 @@ TEST(ScalarMulConstrainingTest, NegativeEnableStartFirstRow) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Enable the start in the first row trace.set(Column::scalar_mul_start, 0, 1); @@ -695,12 +794,22 @@ TEST(ScalarMulConstrainingTest, NegativeEnableStartFirstRow) TEST(ScalarMulConstrainingTest, NegativeMutateScalarOnEnd) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -709,7 +818,6 @@ TEST(ScalarMulConstrainingTest, NegativeMutateScalarOnEnd) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Mutate the scalar on the end row trace.set(Column::scalar_mul_scalar, 254, 27); @@ -719,12 +827,22 @@ TEST(ScalarMulConstrainingTest, NegativeMutateScalarOnEnd) TEST(ScalarMulConstrainingTest, NegativeMutatePointXOnEnd) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -733,7 +851,6 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointXOnEnd) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Mutate the point on the end row trace.set(Column::scalar_mul_point_x, 254, q.x()); @@ -744,12 +861,22 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointXOnEnd) TEST(ScalarMulConstrainingTest, NegativeMutatePointYOnEnd) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -758,7 +885,6 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointYOnEnd) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Mutate the point on the end row trace.set(Column::scalar_mul_point_y, 254, q.y()); @@ -769,12 +895,22 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointYOnEnd) TEST(ScalarMulConstrainingTest, NegativeMutatePointInfOnEnd) { + EccTraceBuilder builder; + NoopEventEmitter ecc_add_event_emitter; EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; NoopEventEmitter to_radix_event_emitter; + StrictMock execution_id_manager; + StrictMock gt; ToRadixSimulator to_radix_simulator(to_radix_event_emitter); - EccSimulator ecc_simulator(to_radix_simulator, ecc_add_event_emitter, scalar_mul_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); FF scalar = FF("0x0cc4c71e882bc62b7b3d1964a8540cb5211339dfcddd2e095fd444bf1aed4f09"); ecc_simulator.scalar_mul(p, scalar); @@ -783,7 +919,6 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointInfOnEnd) { .precomputed_first_row = 1 }, }); - EccTraceBuilder builder; builder.process_scalar_mul(scalar_mul_event_emitter.dump_events(), trace); // Mutate the point on the end row trace.set(Column::scalar_mul_point_inf, 254, 1); @@ -792,5 +927,181 @@ TEST(ScalarMulConstrainingTest, NegativeMutatePointInfOnEnd) "INPUT_CONSISTENCY_INF"); } +/////////////////////////// +// Memory Aware Ecc Add +/////////////////////////// + +TEST(EccAddMemoryConstrainingTest, EccAddMemoryEmptyRow) +{ + check_relation(testing::empty_trace()); +} + +TEST(EccAddMemoryConstrainingTest, EccAddMemory) +{ + + TestTraceContainer trace; + EccTraceBuilder builder; + MemoryStore memory; + + NoopEventEmitter ecc_add_event_emitter; + EventEmitter scalar_mul_event_emitter; + NoopEventEmitter ecc_add_memory_event_emitter; + NoopEventEmitter to_radix_event_emitter; + + StrictMock execution_id_manager; + EXPECT_CALL(execution_id_manager, get_execution_id) + .WillRepeatedly(Return(0)); // Use a fixed execution IDfor the test + FakeGreaterThan gt; + ToRadixSimulator to_radix_simulator(to_radix_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); + + MemoryAddress dst_address = 5; + ecc_simulator.add(memory, p, q, dst_address); + builder.process_add_with_memory(ecc_add_memory_event_emitter.dump_events(), trace); + builder.process_add(ecc_add_event_emitter.dump_events(), trace); + + check_relation(trace); +} + +TEST(EccAddMemoryConstrainingTest, EccAddMemoryInteractions) +{ + + EccTraceBuilder builder; + MemoryStore memory; + + EventEmitter ecc_add_event_emitter; + NoopEventEmitter scalar_mul_event_emitter; + EventEmitter ecc_add_memory_event_emitter; + NoopEventEmitter to_radix_event_emitter; + + StrictMock execution_id_manager; + EXPECT_CALL(execution_id_manager, get_execution_id) + .WillRepeatedly(Return(0)); // Use a fixed execution ID for the test + FakeGreaterThan gt; + ToRadixSimulator to_radix_simulator(to_radix_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); + + EmbeddedCurvePoint result = p + q; + + uint32_t dst_address = 0x1000; + // Set the execution and gt traces + TestTraceContainer trace = TestTraceContainer({ + // Row 0 + { + // Execution + { C::execution_sel, 1 }, + { C::execution_sel_execute_ecc_add, 1 }, + { C::execution_rop_6_, dst_address }, + { C::execution_register_0_, p.x() }, + { C::execution_register_1_, p.y() }, + { C::execution_register_2_, p.is_infinity() ? 1 : 0 }, + { C::execution_register_3_, q.x() }, + { C::execution_register_4_, q.y() }, + { C::execution_register_5_, q.is_infinity() ? 1 : 0 }, + // GT - dst out of range check + { C::gt_sel, 1 }, + { C::gt_input_a, dst_address + 2 }, // highest write address is dst_address + 2 + { C::gt_input_b, AVM_HIGHEST_MEM_ADDRESS }, + { C::gt_res, 0 }, + // Memory Writes + { C::memory_address, dst_address }, + { C::memory_value, result.x() }, + { C::memory_sel, 1 }, + { C::memory_rw, 1 }, // write + { C::memory_tag, static_cast(MemoryTag::FF) }, + }, + { + // Memory Writes + { C::memory_address, dst_address + 1 }, + { C::memory_value, result.y() }, + { C::memory_sel, 1 }, + { C::memory_rw, 1 }, // write + { C::memory_tag, static_cast(MemoryTag::FF) }, + }, + { + // Memory Writes + { C::memory_address, dst_address + 2 }, + { C::memory_value, result.is_infinity() }, + { C::memory_sel, 1 }, + { C::memory_rw, 1 }, // write + { C::memory_tag, static_cast(MemoryTag::U1) }, + }, + }); + + ecc_simulator.add(memory, p, q, dst_address); + + builder.process_add_with_memory(ecc_add_memory_event_emitter.dump_events(), trace); + builder.process_add(ecc_add_event_emitter.dump_events(), trace); + + check_all_interactions(trace); + check_relation(trace); +} + +TEST(EccAddMemoryConstrainingTest, EccAddMemoryInvalidDstRange) +{ + + EccTraceBuilder builder; + MemoryStore memory; + + NoopEventEmitter to_radix_event_emitter; + EventEmitter ecc_add_memory_event_emitter; + EventEmitter ecc_add_event_emitter; + NoopEventEmitter scalar_mul_event_emitter; + + StrictMock execution_id_manager; + EXPECT_CALL(execution_id_manager, get_execution_id) + .WillRepeatedly(Return(0)); // Use a fixed execution IDfor the test + FakeGreaterThan gt; + ToRadixSimulator to_radix_simulator(to_radix_event_emitter); + EccSimulator ecc_simulator(execution_id_manager, + gt, + to_radix_simulator, + ecc_add_event_emitter, + scalar_mul_event_emitter, + ecc_add_memory_event_emitter); + + uint32_t dst_address = AVM_HIGHEST_MEM_ADDRESS - 1; // Invalid address, will result in out of range error + // Set the execution and gt traces + TestTraceContainer trace = TestTraceContainer({ + // Row 0 + { + // Execution + { C::execution_sel, 1 }, + { C::execution_sel_execute_ecc_add, 1 }, + { C::execution_rop_6_, dst_address }, + { C::execution_register_0_, p.x() }, + { C::execution_register_1_, p.y() }, + { C::execution_register_2_, p.is_infinity() ? 1 : 0 }, + { C::execution_register_3_, q.x() }, + { C::execution_register_4_, q.y() }, + { C::execution_register_5_, q.is_infinity() ? 1 : 0 }, + { C::execution_sel_opcode_error, 1 }, + // GT - dst out of range check + { C::gt_sel, 1 }, + { C::gt_input_a, static_cast(dst_address) + 2 }, + { C::gt_input_b, AVM_HIGHEST_MEM_ADDRESS }, + { C::gt_res, 1 }, + }, + }); + + EXPECT_THROW_WITH_MESSAGE(ecc_simulator.add(memory, p, q, dst_address), "EccException.* dst address out of range"); + + builder.process_add_with_memory(ecc_add_memory_event_emitter.dump_events(), trace); + builder.process_add(ecc_add_event_emitter.dump_events(), trace); + + check_all_interactions(trace); + check_relation(trace); +} + } // namespace } // namespace bb::avm2::constraining diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp index 1fa846b581ba..2b6d6492977d 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp @@ -9,8 +9,8 @@ namespace bb::avm2 { // clang-format off #define AVM2_PRECOMPUTED_ENTITIES_E(e) e precomputed_addressing_gas, e precomputed_bitwise_input_a, e precomputed_bitwise_input_b, e precomputed_bitwise_op_id, e precomputed_bitwise_output, e precomputed_clk, e precomputed_dyn_gas_id, e precomputed_envvar_pi_row_idx, e precomputed_exec_opcode, e precomputed_exec_opcode_base_da_gas, e precomputed_exec_opcode_dynamic_da_gas, e precomputed_exec_opcode_dynamic_l2_gas, e precomputed_exec_opcode_opcode_gas, e precomputed_expected_tag_reg_0_, e precomputed_expected_tag_reg_1_, e precomputed_expected_tag_reg_2_, e precomputed_expected_tag_reg_3_, e precomputed_expected_tag_reg_4_, e precomputed_expected_tag_reg_5_, e precomputed_expected_tag_reg_6_, e precomputed_first_row, e precomputed_instr_size, e precomputed_invalid_envvar_enum, e precomputed_is_address, e precomputed_is_class_id, e precomputed_is_dagasleft, e precomputed_is_deployer, e precomputed_is_feeperl2gas, e precomputed_is_init_hash, e precomputed_is_isstaticcall, e precomputed_is_l2_l1_message_phase, e precomputed_is_l2gasleft, e precomputed_is_public_call_request_phase, e precomputed_is_revertible, e precomputed_is_sender, e precomputed_is_transactionfee, e precomputed_is_valid_member_enum, e precomputed_keccak_round_constant, e precomputed_next_phase_on_revert, e precomputed_opcode_out_of_range, e precomputed_out_tag, e precomputed_p_decomposition_limb, e precomputed_p_decomposition_limb_index, e precomputed_p_decomposition_radix, e precomputed_phase_value, e precomputed_power_of_2, e precomputed_read_public_input_length_offset, e precomputed_read_public_input_offset, e precomputed_rw_reg_0_, e precomputed_rw_reg_1_, e precomputed_rw_reg_2_, e precomputed_rw_reg_3_, e precomputed_rw_reg_4_, e precomputed_rw_reg_5_, e precomputed_rw_reg_6_, e precomputed_sel_addressing_gas, e precomputed_sel_bitwise, e precomputed_sel_collect_fee, e precomputed_sel_envvar_pi_lookup_col0, e precomputed_sel_envvar_pi_lookup_col1, e precomputed_sel_exec_spec, e precomputed_sel_has_tag, e precomputed_sel_keccak, e precomputed_sel_mem_op_reg_0_, e precomputed_sel_mem_op_reg_1_, e precomputed_sel_mem_op_reg_2_, e precomputed_sel_mem_op_reg_3_, e precomputed_sel_mem_op_reg_4_, e precomputed_sel_mem_op_reg_5_, e precomputed_sel_mem_op_reg_6_, e precomputed_sel_mem_tag_out_of_range, e precomputed_sel_non_revertible_append_note_hash, e precomputed_sel_non_revertible_append_nullifier, e precomputed_sel_op_dc_0, e precomputed_sel_op_dc_1, e precomputed_sel_op_dc_10, e precomputed_sel_op_dc_11, e precomputed_sel_op_dc_12, e precomputed_sel_op_dc_13, e precomputed_sel_op_dc_14, e precomputed_sel_op_dc_15, e precomputed_sel_op_dc_16, e precomputed_sel_op_dc_17, e precomputed_sel_op_dc_2, e precomputed_sel_op_dc_3, e precomputed_sel_op_dc_4, e precomputed_sel_op_dc_5, e precomputed_sel_op_dc_6, e precomputed_sel_op_dc_7, e precomputed_sel_op_dc_8, e precomputed_sel_op_dc_9, e precomputed_sel_op_is_address_0_, e precomputed_sel_op_is_address_1_, e precomputed_sel_op_is_address_2_, e precomputed_sel_op_is_address_3_, e precomputed_sel_op_is_address_4_, e precomputed_sel_op_is_address_5_, e precomputed_sel_op_is_address_6_, e precomputed_sel_p_decomposition, e precomputed_sel_phase, e precomputed_sel_range_16, e precomputed_sel_range_8, e precomputed_sel_revertible_append_note_hash, e precomputed_sel_revertible_append_nullifier, e precomputed_sel_sha256_compression, e precomputed_sel_tag_check_reg_0_, e precomputed_sel_tag_check_reg_1_, e precomputed_sel_tag_check_reg_2_, e precomputed_sel_tag_check_reg_3_, e precomputed_sel_tag_check_reg_4_, e precomputed_sel_tag_check_reg_5_, e precomputed_sel_tag_check_reg_6_, e precomputed_sel_tag_is_op2, e precomputed_sel_tag_parameters, e precomputed_sel_to_radix_safe_limbs, e precomputed_sha256_compression_round_constant, e precomputed_subtrace_id, e precomputed_subtrace_operation_id, e precomputed_tag_byte_length, e precomputed_tag_max_bits, e precomputed_tag_max_value, e precomputed_to_radix_safe_limbs, e precomputed_write_public_input_offset, e precomputed_zero, e public_inputs_sel -#define AVM2_WIRE_ENTITIES_E(e) e public_inputs_cols_0_, e public_inputs_cols_1_, e public_inputs_cols_2_, e public_inputs_cols_3_, e address_derivation_address, e address_derivation_address_y, e address_derivation_class_id, e address_derivation_deployer_addr, e address_derivation_g1_x, e address_derivation_g1_y, e address_derivation_incoming_viewing_key_x, e address_derivation_incoming_viewing_key_y, e address_derivation_init_hash, e address_derivation_nullifier_key_x, e address_derivation_nullifier_key_y, e address_derivation_outgoing_viewing_key_x, e address_derivation_outgoing_viewing_key_y, e address_derivation_partial_address, e address_derivation_partial_address_domain_separator, e address_derivation_preaddress, e address_derivation_preaddress_domain_separator, e address_derivation_preaddress_public_key_x, e address_derivation_preaddress_public_key_y, e address_derivation_public_keys_hash, e address_derivation_public_keys_hash_domain_separator, e address_derivation_salt, e address_derivation_salted_init_hash, e address_derivation_sel, e address_derivation_tagging_key_x, e address_derivation_tagging_key_y, e alu_ab_tags_diff_inv, e alu_cf, e alu_helper1, e alu_hi_128, e alu_ia, e alu_ia_tag, e alu_ib, e alu_ib_tag, e alu_ic, e alu_ic_tag, e alu_lo_128, e alu_lt_ops_input_a, e alu_lt_ops_input_b, e alu_lt_ops_result_c, e alu_max_bits, e alu_max_value, e alu_mid, e alu_mid_bits, e alu_op_id, e alu_sel, e alu_sel_ff_lt_ops, e alu_sel_int_lt_ops, e alu_sel_is_ff, e alu_sel_lt_ops, e alu_sel_op_add, e alu_sel_op_eq, e alu_sel_op_lt, e alu_sel_op_lte, e alu_sel_op_not, e alu_sel_op_shl, e alu_sel_op_shr, e alu_sel_op_truncate, e alu_sel_tag_err, e alu_sel_trunc_gte_128, e alu_sel_trunc_lt_128, e alu_sel_trunc_non_trivial, e alu_sel_trunc_trivial, e alu_tag_ff_diff_inv, e bc_decomposition_abs_diff, e bc_decomposition_bytes, e bc_decomposition_bytes_pc_plus_1, e bc_decomposition_bytes_pc_plus_10, e bc_decomposition_bytes_pc_plus_11, e bc_decomposition_bytes_pc_plus_12, e bc_decomposition_bytes_pc_plus_13, e bc_decomposition_bytes_pc_plus_14, e bc_decomposition_bytes_pc_plus_15, e bc_decomposition_bytes_pc_plus_16, e bc_decomposition_bytes_pc_plus_17, e bc_decomposition_bytes_pc_plus_18, e bc_decomposition_bytes_pc_plus_19, e bc_decomposition_bytes_pc_plus_2, e bc_decomposition_bytes_pc_plus_20, e bc_decomposition_bytes_pc_plus_21, e bc_decomposition_bytes_pc_plus_22, e bc_decomposition_bytes_pc_plus_23, e bc_decomposition_bytes_pc_plus_24, e bc_decomposition_bytes_pc_plus_25, e bc_decomposition_bytes_pc_plus_26, e bc_decomposition_bytes_pc_plus_27, e bc_decomposition_bytes_pc_plus_28, e bc_decomposition_bytes_pc_plus_29, e bc_decomposition_bytes_pc_plus_3, e bc_decomposition_bytes_pc_plus_30, e bc_decomposition_bytes_pc_plus_31, e bc_decomposition_bytes_pc_plus_32, e bc_decomposition_bytes_pc_plus_33, e bc_decomposition_bytes_pc_plus_34, e bc_decomposition_bytes_pc_plus_35, e bc_decomposition_bytes_pc_plus_36, e bc_decomposition_bytes_pc_plus_4, e bc_decomposition_bytes_pc_plus_5, e bc_decomposition_bytes_pc_plus_6, e bc_decomposition_bytes_pc_plus_7, e bc_decomposition_bytes_pc_plus_8, e bc_decomposition_bytes_pc_plus_9, e bc_decomposition_bytes_rem_inv, e bc_decomposition_bytes_rem_min_one_inv, e bc_decomposition_bytes_remaining, e bc_decomposition_bytes_to_read, e bc_decomposition_id, e bc_decomposition_last_of_contract, e bc_decomposition_packed_field, e bc_decomposition_pc, e bc_decomposition_sel, e bc_decomposition_sel_overflow_correction_needed, e bc_decomposition_sel_packed, e bc_hashing_bytecode_id, e bc_hashing_incremental_hash, e bc_hashing_latch, e bc_hashing_output_hash, e bc_hashing_packed_field, e bc_hashing_pc_index, e bc_hashing_sel, e bc_hashing_start, e bc_retrieval_address, e bc_retrieval_artifact_hash, e bc_retrieval_bytecode_id, e bc_retrieval_current_class_id, e bc_retrieval_error, e bc_retrieval_instance_exists, e bc_retrieval_nullifier_tree_root, e bc_retrieval_private_function_root, e bc_retrieval_public_bytecode_commitment, e bc_retrieval_public_data_tree_root, e bc_retrieval_sel, e bitwise_acc_ia, e bitwise_acc_ib, e bitwise_acc_ic, e bitwise_ctr, e bitwise_ctr_inv, e bitwise_ctr_min_one_inv, e bitwise_err, e bitwise_ia_byte, e bitwise_ib_byte, e bitwise_ic_byte, e bitwise_last, e bitwise_op_id, e bitwise_sel, e bitwise_sel_get_ctr, e bitwise_sel_tag_ff_err, e bitwise_sel_tag_mismatch_err, e bitwise_start, e bitwise_tag_a, e bitwise_tag_a_inv, e bitwise_tag_ab_diff_inv, e bitwise_tag_b, e bitwise_tag_c, e calldata_context_id, e calldata_index, e calldata_latch, e calldata_sel, e calldata_value, e cd_hashing_context_id, e cd_hashing_input_0_, e cd_hashing_input_1_, e cd_hashing_input_2_, e cd_hashing_latch, e cd_hashing_length_remaining, e cd_hashing_output_hash, e cd_hashing_sel, e class_id_derivation_artifact_hash, e class_id_derivation_class_id, e class_id_derivation_private_function_root, e class_id_derivation_public_bytecode_commitment, e class_id_derivation_sel, e class_id_derivation_temp_constant_for_lookup, e context_stack_context_id, e context_stack_context_id_inv, e context_stack_contract_address, e context_stack_entered_context_id, e context_stack_is_static, e context_stack_msg_sender, e context_stack_next_pc, e context_stack_parent_calldata_addr, e context_stack_parent_calldata_size, e context_stack_parent_da_gas_limit, e context_stack_parent_da_gas_used, e context_stack_parent_id, e context_stack_parent_l2_gas_limit, e context_stack_parent_l2_gas_used, e context_stack_sel, e contract_instance_retrieval_address, e contract_instance_retrieval_current_class_id, e contract_instance_retrieval_deployer_addr, e contract_instance_retrieval_deployer_protocol_contract_address, e contract_instance_retrieval_exists, e contract_instance_retrieval_incoming_viewing_key_x, e contract_instance_retrieval_incoming_viewing_key_y, e contract_instance_retrieval_init_hash, e contract_instance_retrieval_nullifier_key_x, e contract_instance_retrieval_nullifier_key_y, e contract_instance_retrieval_nullifier_tree_root, e contract_instance_retrieval_original_class_id, e contract_instance_retrieval_outgoing_viewing_key_x, e contract_instance_retrieval_outgoing_viewing_key_y, e contract_instance_retrieval_public_data_tree_root, e contract_instance_retrieval_salt, e contract_instance_retrieval_sel, e contract_instance_retrieval_tagging_key_x, e contract_instance_retrieval_tagging_key_y, e data_copy_abs_diff_max_read_index, e data_copy_abs_max_read_offset, e data_copy_abs_read_diff, e data_copy_abs_write_diff, e data_copy_cd_copy_col_read, e data_copy_clk, e data_copy_copy_size, e data_copy_dst_addr, e data_copy_dst_context_id, e data_copy_dst_out_of_range_err, e data_copy_err, e data_copy_is_top_level, e data_copy_offset, e data_copy_operation_id, e data_copy_padding, e data_copy_parent_id_inv, e data_copy_read_addr, e data_copy_reads_left, e data_copy_reads_left_inv, e data_copy_sel_cd_copy, e data_copy_sel_end, e data_copy_sel_mem_read, e data_copy_sel_mem_write, e data_copy_sel_offset_gt_max_read, e data_copy_sel_rd_copy, e data_copy_sel_start, e data_copy_sel_start_no_err, e data_copy_src_addr, e data_copy_src_context_id, e data_copy_src_data_size, e data_copy_src_data_size_is_lt, e data_copy_src_out_of_range_err, e data_copy_thirty_two, e data_copy_value, e data_copy_write_count_minus_one_inv, e ecc_add_op, e ecc_double_op, e ecc_inv_2_p_y, e ecc_inv_x_diff, e ecc_inv_y_diff, e ecc_lambda, e ecc_p_is_inf, e ecc_p_x, e ecc_p_y, e ecc_q_is_inf, e ecc_q_x, e ecc_q_y, e ecc_r_is_inf, e ecc_r_x, e ecc_r_y, e ecc_result_infinity, e ecc_sel, e ecc_use_computed_result, e ecc_x_match, e ecc_y_match, e execution_addressing_error_collection_inv, e execution_addressing_gas, e execution_base_address_tag, e execution_base_address_tag_diff_inv, e execution_base_address_val, e execution_base_da_gas, e execution_batched_tags_diff_inv, e execution_batched_tags_diff_inv_reg, e execution_bytecode_id, e execution_call_allocated_left_da_cmp_diff, e execution_call_allocated_left_l2_cmp_diff, e execution_call_is_da_gas_allocated_lt_left, e execution_call_is_l2_gas_allocated_lt_left, e execution_constant_32, e execution_constant_64, e execution_context_id, e execution_contract_address, e execution_da_gas_limit, e execution_da_gas_used, e execution_discard, e execution_dying_context_diff_inv, e execution_dying_context_id, e execution_dying_context_id_inv, e execution_dyn_gas_id, e execution_dynamic_da_gas, e execution_dynamic_da_gas_factor, e execution_dynamic_l2_gas, e execution_dynamic_l2_gas_factor, e execution_enqueued_call_end, e execution_enqueued_call_start, e execution_envvar_pi_row_idx, e execution_ex_opcode, e execution_expected_tag_reg_0_, e execution_expected_tag_reg_1_, e execution_expected_tag_reg_2_, e execution_expected_tag_reg_3_, e execution_expected_tag_reg_4_, e execution_expected_tag_reg_5_, e execution_expected_tag_reg_6_, e execution_has_parent_ctx, e execution_indirect, e execution_instr_length, e execution_internal_call_id, e execution_internal_call_return_id, e execution_internal_call_return_id_inv, e execution_is_address, e execution_is_dagasleft, e execution_is_dying_context, e execution_is_isstaticcall, e execution_is_l2gasleft, e execution_is_parent_id_inv, e execution_is_sender, e execution_is_static, e execution_is_transactionfee, e execution_l1_l2_tree_root, e execution_l1_l2_tree_size, e execution_l1_to_l2_msg_leaf_in_range, e execution_l1_to_l2_msg_tree_leaf_count, e execution_l2_gas_limit, e execution_l2_gas_used, e execution_last, e execution_last_child_returndata_addr, e execution_last_child_returndata_size, e execution_last_child_success, e execution_limit_used_da_cmp_diff, e execution_limit_used_l2_cmp_diff, e execution_max_data_writes_reached, e execution_mem_tag_reg_0_, e execution_mem_tag_reg_1_, e execution_mem_tag_reg_2_, e execution_mem_tag_reg_3_, e execution_mem_tag_reg_4_, e execution_mem_tag_reg_5_, e execution_mem_tag_reg_6_, e execution_msg_sender, e execution_nested_call_from_undiscarded_context, e execution_nested_exit_call, e execution_nested_return, e execution_next_context_id, e execution_next_internal_call_id, e execution_next_pc, e execution_note_hash_leaf_in_range, e execution_note_hash_tree_leaf_count, e execution_note_hash_tree_root, e execution_note_hash_tree_size, e execution_nullifier_tree_root, e execution_nullifier_tree_size, e execution_num_note_hashes_emitted, e execution_num_nullifiers_emitted, e execution_num_relative_operands_inv, e execution_op_0_, e execution_op_1_, e execution_op_2_, e execution_op_3_, e execution_op_4_, e execution_op_5_, e execution_op_6_, e execution_op_after_relative_0_, e execution_op_after_relative_1_, e execution_op_after_relative_2_, e execution_op_after_relative_3_, e execution_op_after_relative_4_, e execution_op_after_relative_5_, e execution_op_after_relative_6_, e execution_opcode_gas, e execution_out_of_gas_da, e execution_out_of_gas_l2, e execution_overflow_range_check_result_0_, e execution_overflow_range_check_result_1_, e execution_overflow_range_check_result_2_, e execution_overflow_range_check_result_3_, e execution_overflow_range_check_result_4_, e execution_overflow_range_check_result_5_, e execution_overflow_range_check_result_6_, e execution_parent_calldata_addr, e execution_parent_calldata_size, e execution_parent_da_gas_limit, e execution_parent_da_gas_used, e execution_parent_id, e execution_parent_l2_gas_limit, e execution_parent_l2_gas_used, e execution_pc, e execution_prev_da_gas_used, e execution_prev_l1_l2_tree_root, e execution_prev_l1_l2_tree_size, e execution_prev_l2_gas_used, e execution_prev_note_hash_tree_root, e execution_prev_note_hash_tree_size, e execution_prev_nullifier_tree_root, e execution_prev_nullifier_tree_size, e execution_prev_num_note_hashes_emitted, e execution_prev_num_nullifiers_emitted, e execution_prev_public_data_tree_root, e execution_prev_public_data_tree_size, e execution_prev_written_public_data_slots_tree_root, e execution_prev_written_public_data_slots_tree_size, e execution_propagate_discard, e execution_public_data_tree_root, e execution_public_data_tree_size, e execution_register_0_, e execution_register_1_, e execution_register_2_, e execution_register_3_, e execution_register_4_, e execution_register_5_, e execution_register_6_, e execution_remaining_data_writes_inv, e execution_remaining_note_hashes_inv, e execution_resolves_dying_context, e execution_rollback_context, e execution_rop_0_, e execution_rop_1_, e execution_rop_2_, e execution_rop_3_, e execution_rop_4_, e execution_rop_5_, e execution_rop_6_, e execution_rop_tag_0_, e execution_rop_tag_1_, e execution_rop_tag_2_, e execution_rop_tag_3_, e execution_rop_tag_4_, e execution_rop_tag_5_, e execution_rop_tag_6_, e execution_rw_reg_0_, e execution_rw_reg_1_, e execution_rw_reg_2_, e execution_rw_reg_3_, e execution_rw_reg_4_, e execution_rw_reg_5_, e execution_rw_reg_6_, e execution_sel, e execution_sel_addressing_error, e execution_sel_base_address_failure, e execution_sel_bytecode_retrieval_failure, e execution_sel_bytecode_retrieval_success, e execution_sel_do_base_check, e execution_sel_enter_call, e execution_sel_envvar_pi_lookup_col0, e execution_sel_envvar_pi_lookup_col1, e execution_sel_error, e execution_sel_execute_alu, e execution_sel_execute_bitwise, e execution_sel_execute_call, e execution_sel_execute_cast, e execution_sel_execute_data_copy, e execution_sel_execute_debug_log, e execution_sel_execute_ecc_add, e execution_sel_execute_emit_notehash, e execution_sel_execute_execution, e execution_sel_execute_get_contract_instance, e execution_sel_execute_get_env_var, e execution_sel_execute_internal_call, e execution_sel_execute_internal_return, e execution_sel_execute_jump, e execution_sel_execute_jumpi, e execution_sel_execute_keccakf1600, e execution_sel_execute_l1_to_l2_message_exists, e execution_sel_execute_mov, e execution_sel_execute_notehash_exists, e execution_sel_execute_nullifier_exists, e execution_sel_execute_poseidon2_perm, e execution_sel_execute_return, e execution_sel_execute_returndata_size, e execution_sel_execute_revert, e execution_sel_execute_set, e execution_sel_execute_sload, e execution_sel_execute_sstore, e execution_sel_execute_static_call, e execution_sel_execute_success_copy, e execution_sel_execute_to_radix, e execution_sel_exit_call, e execution_sel_failure, e execution_sel_first_row_in_context, e execution_sel_gas_bitwise, e execution_sel_gas_calldata_copy, e execution_sel_gas_emit_unencrypted_log, e execution_sel_gas_returndata_copy, e execution_sel_gas_sstore, e execution_sel_gas_to_radix, e execution_sel_instruction_fetching_failure, e execution_sel_instruction_fetching_success, e execution_sel_mem_op_reg_0_, e execution_sel_mem_op_reg_1_, e execution_sel_mem_op_reg_2_, e execution_sel_mem_op_reg_3_, e execution_sel_mem_op_reg_4_, e execution_sel_mem_op_reg_5_, e execution_sel_mem_op_reg_6_, e execution_sel_op_is_address_0_, e execution_sel_op_is_address_1_, e execution_sel_op_is_address_2_, e execution_sel_op_is_address_3_, e execution_sel_op_is_address_4_, e execution_sel_op_is_address_5_, e execution_sel_op_is_address_6_, e execution_sel_op_is_indirect_wire_0_, e execution_sel_op_is_indirect_wire_1_, e execution_sel_op_is_indirect_wire_2_, e execution_sel_op_is_indirect_wire_3_, e execution_sel_op_is_indirect_wire_4_, e execution_sel_op_is_indirect_wire_5_, e execution_sel_op_is_indirect_wire_6_, e execution_sel_op_is_indirect_wire_7_, e execution_sel_op_is_relative_effective_0_, e execution_sel_op_is_relative_effective_1_, e execution_sel_op_is_relative_effective_2_, e execution_sel_op_is_relative_effective_3_, e execution_sel_op_is_relative_effective_4_, e execution_sel_op_is_relative_effective_5_, e execution_sel_op_is_relative_effective_6_, e execution_sel_op_is_relative_wire_0_, e execution_sel_op_is_relative_wire_1_, e execution_sel_op_is_relative_wire_2_, e execution_sel_op_is_relative_wire_3_, e execution_sel_op_is_relative_wire_4_, e execution_sel_op_is_relative_wire_5_, e execution_sel_op_is_relative_wire_6_, e execution_sel_op_is_relative_wire_7_, e execution_sel_op_reg_effective_0_, e execution_sel_op_reg_effective_1_, e execution_sel_op_reg_effective_2_, e execution_sel_op_reg_effective_3_, e execution_sel_op_reg_effective_4_, e execution_sel_op_reg_effective_5_, e execution_sel_op_reg_effective_6_, e execution_sel_opcode_error, e execution_sel_opcode_failure, e execution_sel_out_of_gas, e execution_sel_register_read_error, e execution_sel_relative_overflow_0_, e execution_sel_relative_overflow_1_, e execution_sel_relative_overflow_2_, e execution_sel_relative_overflow_3_, e execution_sel_relative_overflow_4_, e execution_sel_relative_overflow_5_, e execution_sel_relative_overflow_6_, e execution_sel_should_apply_indirection_0_, e execution_sel_should_apply_indirection_1_, e execution_sel_should_apply_indirection_2_, e execution_sel_should_apply_indirection_3_, e execution_sel_should_apply_indirection_4_, e execution_sel_should_apply_indirection_5_, e execution_sel_should_apply_indirection_6_, e execution_sel_should_check_gas, e execution_sel_should_execute_opcode, e execution_sel_should_read_registers, e execution_sel_should_write_registers, e execution_sel_some_final_check_failed, e execution_sel_tag_check_reg_0_, e execution_sel_tag_check_reg_1_, e execution_sel_tag_check_reg_2_, e execution_sel_tag_check_reg_3_, e execution_sel_tag_check_reg_4_, e execution_sel_tag_check_reg_5_, e execution_sel_tag_check_reg_6_, e execution_sel_write_note_hash, e execution_sel_write_public_data, e execution_subtrace_id, e execution_subtrace_operation_id, e execution_transaction_fee, e execution_two_to_32, e execution_value_from_pi, e execution_written_public_data_slots_tree_root, e execution_written_public_data_slots_tree_size, e ff_gt_a, e ff_gt_a_hi, e ff_gt_a_lo, e ff_gt_b, e ff_gt_b_hi, e ff_gt_b_lo, e ff_gt_borrow, e ff_gt_cmp_rng_ctr, e ff_gt_cmp_rng_ctr_inv, e ff_gt_constant_128, e ff_gt_p_a_borrow, e ff_gt_p_b_borrow, e ff_gt_p_sub_a_hi, e ff_gt_p_sub_a_lo, e ff_gt_p_sub_b_hi, e ff_gt_p_sub_b_lo, e ff_gt_res_hi, e ff_gt_res_lo, e ff_gt_result, e ff_gt_sel, e ff_gt_sel_dec, e ff_gt_sel_gt, e ff_gt_sel_shift_rng, e get_contract_instance_clk, e get_contract_instance_contract_address, e get_contract_instance_dst_offset, e get_contract_instance_dst_offset_diff_max_inv, e get_contract_instance_exists_tag, e get_contract_instance_instance_exists, e get_contract_instance_is_class_id, e get_contract_instance_is_deployer, e get_contract_instance_is_init_hash, e get_contract_instance_is_valid_member_enum, e get_contract_instance_is_valid_writes_in_bounds, e get_contract_instance_member_enum, e get_contract_instance_member_tag, e get_contract_instance_member_write_offset, e get_contract_instance_nullifier_tree_root, e get_contract_instance_public_data_tree_root, e get_contract_instance_retrieved_class_id, e get_contract_instance_retrieved_deployer_addr, e get_contract_instance_retrieved_init_hash, e get_contract_instance_sel, e get_contract_instance_sel_error, e get_contract_instance_selected_member, e get_contract_instance_space_id, e gt_abs_diff, e gt_constant_128, e gt_input_a, e gt_input_b, e gt_res, e gt_sel, e instr_fetching_bd0, e instr_fetching_bd1, e instr_fetching_bd10, e instr_fetching_bd11, e instr_fetching_bd12, e instr_fetching_bd13, e instr_fetching_bd14, e instr_fetching_bd15, e instr_fetching_bd16, e instr_fetching_bd17, e instr_fetching_bd18, e instr_fetching_bd19, e instr_fetching_bd2, e instr_fetching_bd20, e instr_fetching_bd21, e instr_fetching_bd22, e instr_fetching_bd23, e instr_fetching_bd24, e instr_fetching_bd25, e instr_fetching_bd26, e instr_fetching_bd27, e instr_fetching_bd28, e instr_fetching_bd29, e instr_fetching_bd3, e instr_fetching_bd30, e instr_fetching_bd31, e instr_fetching_bd32, e instr_fetching_bd33, e instr_fetching_bd34, e instr_fetching_bd35, e instr_fetching_bd36, e instr_fetching_bd4, e instr_fetching_bd5, e instr_fetching_bd6, e instr_fetching_bd7, e instr_fetching_bd8, e instr_fetching_bd9, e instr_fetching_bytecode_id, e instr_fetching_bytecode_size, e instr_fetching_bytes_to_read, e instr_fetching_exec_opcode, e instr_fetching_indirect, e instr_fetching_instr_abs_diff, e instr_fetching_instr_out_of_range, e instr_fetching_instr_size, e instr_fetching_op1, e instr_fetching_op2, e instr_fetching_op3, e instr_fetching_op4, e instr_fetching_op5, e instr_fetching_op6, e instr_fetching_op7, e instr_fetching_opcode_out_of_range, e instr_fetching_pc, e instr_fetching_pc_abs_diff, e instr_fetching_pc_out_of_range, e instr_fetching_pc_size_in_bits, e instr_fetching_sel, e instr_fetching_sel_has_tag, e instr_fetching_sel_op_dc_0, e instr_fetching_sel_op_dc_1, e instr_fetching_sel_op_dc_10, e instr_fetching_sel_op_dc_11, e instr_fetching_sel_op_dc_12, e instr_fetching_sel_op_dc_13, e instr_fetching_sel_op_dc_14, e instr_fetching_sel_op_dc_15, e instr_fetching_sel_op_dc_16, e instr_fetching_sel_op_dc_2, e instr_fetching_sel_op_dc_3, e instr_fetching_sel_op_dc_4, e instr_fetching_sel_op_dc_5, e instr_fetching_sel_op_dc_6, e instr_fetching_sel_op_dc_7, e instr_fetching_sel_op_dc_8, e instr_fetching_sel_op_dc_9, e instr_fetching_sel_parsing_err, e instr_fetching_sel_pc_in_range, e instr_fetching_sel_tag_is_op2, e instr_fetching_tag_out_of_range, e instr_fetching_tag_value, e internal_call_stack_context_id, e internal_call_stack_entered_call_id, e internal_call_stack_id, e internal_call_stack_return_id, e internal_call_stack_return_pc, e internal_call_stack_sel, e keccak_memory_addr, e keccak_memory_clk, e keccak_memory_ctr, e keccak_memory_ctr_end, e keccak_memory_ctr_inv, e keccak_memory_ctr_min_state_size_inv, e keccak_memory_last, e keccak_memory_num_rounds, e keccak_memory_rw, e keccak_memory_sel, e keccak_memory_single_tag_error, e keccak_memory_space_id, e keccak_memory_start_read, e keccak_memory_start_write, e keccak_memory_tag, e keccak_memory_tag_error, e keccak_memory_tag_min_u64_inv, e keccak_memory_val00, e keccak_memory_val01, e keccak_memory_val02, e keccak_memory_val03, e keccak_memory_val04, e keccak_memory_val10, e keccak_memory_val11, e keccak_memory_val12, e keccak_memory_val13, e keccak_memory_val14, e keccak_memory_val20, e keccak_memory_val21, e keccak_memory_val22, e keccak_memory_val23, e keccak_memory_val24, e keccak_memory_val30, e keccak_memory_val31, e keccak_memory_val32, e keccak_memory_val33, e keccak_memory_val34, e keccak_memory_val40, e keccak_memory_val41, e keccak_memory_val42, e keccak_memory_val43, e keccak_memory_val44, e keccakf1600_bitwise_and_op_id, e keccakf1600_bitwise_xor_op_id, e keccakf1600_clk, e keccakf1600_dst_abs_diff, e keccakf1600_dst_addr, e keccakf1600_dst_out_of_range_error, e keccakf1600_error, e keccakf1600_last, e keccakf1600_rot_64_min_len_01, e keccakf1600_rot_64_min_len_03, e keccakf1600_rot_64_min_len_11, e keccakf1600_rot_64_min_len_13, e keccakf1600_rot_64_min_len_20, e keccakf1600_rot_64_min_len_22, e keccakf1600_rot_64_min_len_24, e keccakf1600_rot_64_min_len_31, e keccakf1600_rot_64_min_len_34, e keccakf1600_rot_64_min_len_42, e keccakf1600_rot_len_02, e keccakf1600_rot_len_04, e keccakf1600_rot_len_10, e keccakf1600_rot_len_12, e keccakf1600_rot_len_14, e keccakf1600_rot_len_21, e keccakf1600_rot_len_23, e keccakf1600_rot_len_30, e keccakf1600_rot_len_32, e keccakf1600_rot_len_33, e keccakf1600_rot_len_40, e keccakf1600_rot_len_41, e keccakf1600_rot_len_43, e keccakf1600_rot_len_44, e keccakf1600_round, e keccakf1600_round_cst, e keccakf1600_round_inv, e keccakf1600_sel, e keccakf1600_sel_no_error, e keccakf1600_sel_slice_read, e keccakf1600_sel_slice_write, e keccakf1600_space_id, e keccakf1600_src_abs_diff, e keccakf1600_src_addr, e keccakf1600_src_out_of_range_error, e keccakf1600_start, e keccakf1600_state_chi_00, e keccakf1600_state_chi_01, e keccakf1600_state_chi_02, e keccakf1600_state_chi_03, e keccakf1600_state_chi_04, e keccakf1600_state_chi_10, e keccakf1600_state_chi_11, e keccakf1600_state_chi_12, e keccakf1600_state_chi_13, e keccakf1600_state_chi_14, e keccakf1600_state_chi_20, e keccakf1600_state_chi_21, e keccakf1600_state_chi_22, e keccakf1600_state_chi_23, e keccakf1600_state_chi_24, e keccakf1600_state_chi_30, e keccakf1600_state_chi_31, e keccakf1600_state_chi_32, e keccakf1600_state_chi_33, e keccakf1600_state_chi_34, e keccakf1600_state_chi_40, e keccakf1600_state_chi_41, e keccakf1600_state_chi_42, e keccakf1600_state_chi_43, e keccakf1600_state_chi_44, e keccakf1600_state_in_00, e keccakf1600_state_in_01, e keccakf1600_state_in_02, e keccakf1600_state_in_03, e keccakf1600_state_in_04, e keccakf1600_state_in_10, e keccakf1600_state_in_11, e keccakf1600_state_in_12, e keccakf1600_state_in_13, e keccakf1600_state_in_14, e keccakf1600_state_in_20, e keccakf1600_state_in_21, e keccakf1600_state_in_22, e keccakf1600_state_in_23, e keccakf1600_state_in_24, e keccakf1600_state_in_30, e keccakf1600_state_in_31, e keccakf1600_state_in_32, e keccakf1600_state_in_33, e keccakf1600_state_in_34, e keccakf1600_state_in_40, e keccakf1600_state_in_41, e keccakf1600_state_in_42, e keccakf1600_state_in_43, e keccakf1600_state_in_44, e keccakf1600_state_iota_00, e keccakf1600_state_pi_and_00, e keccakf1600_state_pi_and_01, e keccakf1600_state_pi_and_02, e keccakf1600_state_pi_and_03, e keccakf1600_state_pi_and_04, e keccakf1600_state_pi_and_10, e keccakf1600_state_pi_and_11, e keccakf1600_state_pi_and_12, e keccakf1600_state_pi_and_13, e keccakf1600_state_pi_and_14, e keccakf1600_state_pi_and_20, e keccakf1600_state_pi_and_21, e keccakf1600_state_pi_and_22, e keccakf1600_state_pi_and_23, e keccakf1600_state_pi_and_24, e keccakf1600_state_pi_and_30, e keccakf1600_state_pi_and_31, e keccakf1600_state_pi_and_32, e keccakf1600_state_pi_and_33, e keccakf1600_state_pi_and_34, e keccakf1600_state_pi_and_40, e keccakf1600_state_pi_and_41, e keccakf1600_state_pi_and_42, e keccakf1600_state_pi_and_43, e keccakf1600_state_pi_and_44, e keccakf1600_state_pi_not_00, e keccakf1600_state_pi_not_01, e keccakf1600_state_pi_not_02, e keccakf1600_state_pi_not_03, e keccakf1600_state_pi_not_04, e keccakf1600_state_pi_not_10, e keccakf1600_state_pi_not_11, e keccakf1600_state_pi_not_12, e keccakf1600_state_pi_not_13, e keccakf1600_state_pi_not_14, e keccakf1600_state_pi_not_20, e keccakf1600_state_pi_not_21, e keccakf1600_state_pi_not_22, e keccakf1600_state_pi_not_23, e keccakf1600_state_pi_not_24, e keccakf1600_state_pi_not_30, e keccakf1600_state_pi_not_31, e keccakf1600_state_pi_not_32, e keccakf1600_state_pi_not_33, e keccakf1600_state_pi_not_34, e keccakf1600_state_pi_not_40, e keccakf1600_state_pi_not_41, e keccakf1600_state_pi_not_42, e keccakf1600_state_pi_not_43, e keccakf1600_state_pi_not_44, e keccakf1600_state_rho_01, e keccakf1600_state_rho_02, e keccakf1600_state_rho_03, e keccakf1600_state_rho_04, e keccakf1600_state_rho_10, e keccakf1600_state_rho_11, e keccakf1600_state_rho_12, e keccakf1600_state_rho_13, e keccakf1600_state_rho_14, e keccakf1600_state_rho_20, e keccakf1600_state_rho_21, e keccakf1600_state_rho_22, e keccakf1600_state_rho_23, e keccakf1600_state_rho_24, e keccakf1600_state_rho_30, e keccakf1600_state_rho_31, e keccakf1600_state_rho_32, e keccakf1600_state_rho_33, e keccakf1600_state_rho_34, e keccakf1600_state_rho_40, e keccakf1600_state_rho_41, e keccakf1600_state_rho_42, e keccakf1600_state_rho_43, e keccakf1600_state_rho_44, e keccakf1600_state_theta_00, e keccakf1600_state_theta_01, e keccakf1600_state_theta_02, e keccakf1600_state_theta_03, e keccakf1600_state_theta_04, e keccakf1600_state_theta_10, e keccakf1600_state_theta_11, e keccakf1600_state_theta_12, e keccakf1600_state_theta_13, e keccakf1600_state_theta_14, e keccakf1600_state_theta_20, e keccakf1600_state_theta_21, e keccakf1600_state_theta_22, e keccakf1600_state_theta_23, e keccakf1600_state_theta_24, e keccakf1600_state_theta_30, e keccakf1600_state_theta_31, e keccakf1600_state_theta_32, e keccakf1600_state_theta_33, e keccakf1600_state_theta_34, e keccakf1600_state_theta_40, e keccakf1600_state_theta_41, e keccakf1600_state_theta_42, e keccakf1600_state_theta_43, e keccakf1600_state_theta_44, e keccakf1600_state_theta_hi_01, e keccakf1600_state_theta_hi_02, e keccakf1600_state_theta_hi_03, e keccakf1600_state_theta_hi_04, e keccakf1600_state_theta_hi_10, e keccakf1600_state_theta_hi_11, e keccakf1600_state_theta_hi_12, e keccakf1600_state_theta_hi_13, e keccakf1600_state_theta_hi_14, e keccakf1600_state_theta_hi_20, e keccakf1600_state_theta_hi_21, e keccakf1600_state_theta_hi_22, e keccakf1600_state_theta_hi_23, e keccakf1600_state_theta_hi_24, e keccakf1600_state_theta_hi_30, e keccakf1600_state_theta_hi_31, e keccakf1600_state_theta_hi_32, e keccakf1600_state_theta_hi_33, e keccakf1600_state_theta_hi_34, e keccakf1600_state_theta_hi_40, e keccakf1600_state_theta_hi_41, e keccakf1600_state_theta_hi_42, e keccakf1600_state_theta_hi_43, e keccakf1600_state_theta_hi_44, e keccakf1600_state_theta_low_01, e keccakf1600_state_theta_low_02, e keccakf1600_state_theta_low_03, e keccakf1600_state_theta_low_04, e keccakf1600_state_theta_low_10, e keccakf1600_state_theta_low_11, e keccakf1600_state_theta_low_12, e keccakf1600_state_theta_low_13, e keccakf1600_state_theta_low_14, e keccakf1600_state_theta_low_20, e keccakf1600_state_theta_low_21, e keccakf1600_state_theta_low_22, e keccakf1600_state_theta_low_23, e keccakf1600_state_theta_low_24, e keccakf1600_state_theta_low_30, e keccakf1600_state_theta_low_31, e keccakf1600_state_theta_low_32, e keccakf1600_state_theta_low_33, e keccakf1600_state_theta_low_34, e keccakf1600_state_theta_low_40, e keccakf1600_state_theta_low_41, e keccakf1600_state_theta_low_42, e keccakf1600_state_theta_low_43, e keccakf1600_state_theta_low_44, e keccakf1600_tag_error, e keccakf1600_theta_combined_xor_0, e keccakf1600_theta_combined_xor_1, e keccakf1600_theta_combined_xor_2, e keccakf1600_theta_combined_xor_3, e keccakf1600_theta_combined_xor_4, e keccakf1600_theta_xor_01, e keccakf1600_theta_xor_02, e keccakf1600_theta_xor_03, e keccakf1600_theta_xor_11, e keccakf1600_theta_xor_12, e keccakf1600_theta_xor_13, e keccakf1600_theta_xor_21, e keccakf1600_theta_xor_22, e keccakf1600_theta_xor_23, e keccakf1600_theta_xor_31, e keccakf1600_theta_xor_32, e keccakf1600_theta_xor_33, e keccakf1600_theta_xor_41, e keccakf1600_theta_xor_42, e keccakf1600_theta_xor_43, e keccakf1600_theta_xor_row_0, e keccakf1600_theta_xor_row_1, e keccakf1600_theta_xor_row_2, e keccakf1600_theta_xor_row_3, e keccakf1600_theta_xor_row_4, e keccakf1600_theta_xor_row_low63_0, e keccakf1600_theta_xor_row_low63_1, e keccakf1600_theta_xor_row_low63_2, e keccakf1600_theta_xor_row_low63_3, e keccakf1600_theta_xor_row_low63_4, e keccakf1600_theta_xor_row_msb_0, e keccakf1600_theta_xor_row_msb_1, e keccakf1600_theta_xor_row_msb_2, e keccakf1600_theta_xor_row_msb_3, e keccakf1600_theta_xor_row_msb_4, e keccakf1600_theta_xor_row_rotl1_0, e keccakf1600_theta_xor_row_rotl1_1, e keccakf1600_theta_xor_row_rotl1_2, e keccakf1600_theta_xor_row_rotl1_3, e keccakf1600_theta_xor_row_rotl1_4, e keccakf1600_thirty_two, e l1_to_l2_message_tree_check_exists, e l1_to_l2_message_tree_check_l1_to_l2_message_tree_height, e l1_to_l2_message_tree_check_leaf_index, e l1_to_l2_message_tree_check_leaf_value, e l1_to_l2_message_tree_check_leaf_value_msg_hash_diff_inv, e l1_to_l2_message_tree_check_msg_hash, e l1_to_l2_message_tree_check_root, e l1_to_l2_message_tree_check_sel, e memory_address, e memory_clk, e memory_rw, e memory_sel, e memory_space_id, e memory_tag, e memory_value, e merkle_check_constant_2, e merkle_check_end, e merkle_check_index, e merkle_check_index_is_even, e merkle_check_path_len, e merkle_check_read_left_node, e merkle_check_read_node, e merkle_check_read_output_hash, e merkle_check_read_right_node, e merkle_check_read_root, e merkle_check_remaining_path_len_inv, e merkle_check_sel, e merkle_check_sibling, e merkle_check_start, e merkle_check_write, e merkle_check_write_left_node, e merkle_check_write_node, e merkle_check_write_output_hash, e merkle_check_write_right_node, e merkle_check_write_root, e note_hash_tree_check_address, e note_hash_tree_check_discard, e note_hash_tree_check_exists, e note_hash_tree_check_first_nullifier, e note_hash_tree_check_first_nullifier_pi_index, e note_hash_tree_check_leaf_index, e note_hash_tree_check_next_leaf_value, e note_hash_tree_check_next_root, e note_hash_tree_check_nonce, e note_hash_tree_check_nonce_separator, e note_hash_tree_check_note_hash, e note_hash_tree_check_note_hash_index, e note_hash_tree_check_note_hash_tree_height, e note_hash_tree_check_prev_leaf_value, e note_hash_tree_check_prev_leaf_value_unique_note_hash_diff_inv, e note_hash_tree_check_prev_root, e note_hash_tree_check_public_inputs_index, e note_hash_tree_check_sel, e note_hash_tree_check_should_silo, e note_hash_tree_check_should_unique, e note_hash_tree_check_should_write_to_public_inputs, e note_hash_tree_check_siloed_note_hash, e note_hash_tree_check_siloing_separator, e note_hash_tree_check_unique_note_hash, e note_hash_tree_check_unique_note_hash_separator, e note_hash_tree_check_write, e nullifier_check_address, e nullifier_check_discard, e nullifier_check_exists, e nullifier_check_intermediate_root, e nullifier_check_leaf_not_exists, e nullifier_check_low_leaf_hash, e nullifier_check_low_leaf_index, e nullifier_check_low_leaf_next_index, e nullifier_check_low_leaf_next_nullifier, e nullifier_check_low_leaf_nullifier, e nullifier_check_new_leaf_hash, e nullifier_check_next_nullifier_inv, e nullifier_check_next_nullifier_is_nonzero, e nullifier_check_nullifier, e nullifier_check_nullifier_index, e nullifier_check_nullifier_low_leaf_nullifier_diff_inv, e nullifier_check_public_inputs_index, e nullifier_check_root, e nullifier_check_sel, e nullifier_check_should_insert, e nullifier_check_should_silo, e nullifier_check_should_write_to_public_inputs, e nullifier_check_siloed_nullifier, e nullifier_check_siloing_separator, e nullifier_check_tree_height, e nullifier_check_tree_size_before_write, e nullifier_check_updated_low_leaf_hash, e nullifier_check_updated_low_leaf_next_index, e nullifier_check_updated_low_leaf_next_nullifier, e nullifier_check_write, e nullifier_check_write_root, e poseidon2_hash_a_0, e poseidon2_hash_a_1, e poseidon2_hash_a_2, e poseidon2_hash_a_3, e poseidon2_hash_b_0, e poseidon2_hash_b_1, e poseidon2_hash_b_2, e poseidon2_hash_b_3, e poseidon2_hash_end, e poseidon2_hash_input_0, e poseidon2_hash_input_1, e poseidon2_hash_input_2, e poseidon2_hash_input_len, e poseidon2_hash_num_perm_rounds_rem, e poseidon2_hash_num_perm_rounds_rem_inv, e poseidon2_hash_output, e poseidon2_hash_padding, e poseidon2_hash_sel, e poseidon2_hash_start, e poseidon2_perm_B_10_0, e poseidon2_perm_B_10_1, e poseidon2_perm_B_10_2, e poseidon2_perm_B_10_3, e poseidon2_perm_B_11_0, e poseidon2_perm_B_11_1, e poseidon2_perm_B_11_2, e poseidon2_perm_B_11_3, e poseidon2_perm_B_12_0, e poseidon2_perm_B_12_1, e poseidon2_perm_B_12_2, e poseidon2_perm_B_12_3, e poseidon2_perm_B_13_0, e poseidon2_perm_B_13_1, e poseidon2_perm_B_13_2, e poseidon2_perm_B_13_3, e poseidon2_perm_B_14_0, e poseidon2_perm_B_14_1, e poseidon2_perm_B_14_2, e poseidon2_perm_B_14_3, e poseidon2_perm_B_15_0, e poseidon2_perm_B_15_1, e poseidon2_perm_B_15_2, e poseidon2_perm_B_15_3, e poseidon2_perm_B_16_0, e poseidon2_perm_B_16_1, e poseidon2_perm_B_16_2, e poseidon2_perm_B_16_3, e poseidon2_perm_B_17_0, e poseidon2_perm_B_17_1, e poseidon2_perm_B_17_2, e poseidon2_perm_B_17_3, e poseidon2_perm_B_18_0, e poseidon2_perm_B_18_1, e poseidon2_perm_B_18_2, e poseidon2_perm_B_18_3, e poseidon2_perm_B_19_0, e poseidon2_perm_B_19_1, e poseidon2_perm_B_19_2, e poseidon2_perm_B_19_3, e poseidon2_perm_B_20_0, e poseidon2_perm_B_20_1, e poseidon2_perm_B_20_2, e poseidon2_perm_B_20_3, e poseidon2_perm_B_21_0, e poseidon2_perm_B_21_1, e poseidon2_perm_B_21_2, e poseidon2_perm_B_21_3, e poseidon2_perm_B_22_0, e poseidon2_perm_B_22_1, e poseidon2_perm_B_22_2, e poseidon2_perm_B_22_3, e poseidon2_perm_B_23_0, e poseidon2_perm_B_23_1, e poseidon2_perm_B_23_2, e poseidon2_perm_B_23_3, e poseidon2_perm_B_24_0, e poseidon2_perm_B_24_1, e poseidon2_perm_B_24_2, e poseidon2_perm_B_24_3, e poseidon2_perm_B_25_0, e poseidon2_perm_B_25_1, e poseidon2_perm_B_25_2, e poseidon2_perm_B_25_3, e poseidon2_perm_B_26_0, e poseidon2_perm_B_26_1, e poseidon2_perm_B_26_2, e poseidon2_perm_B_26_3, e poseidon2_perm_B_27_0, e poseidon2_perm_B_27_1, e poseidon2_perm_B_27_2, e poseidon2_perm_B_27_3, e poseidon2_perm_B_28_0, e poseidon2_perm_B_28_1, e poseidon2_perm_B_28_2, e poseidon2_perm_B_28_3, e poseidon2_perm_B_29_0, e poseidon2_perm_B_29_1, e poseidon2_perm_B_29_2, e poseidon2_perm_B_29_3, e poseidon2_perm_B_30_0, e poseidon2_perm_B_30_1, e poseidon2_perm_B_30_2, e poseidon2_perm_B_30_3, e poseidon2_perm_B_31_0, e poseidon2_perm_B_31_1, e poseidon2_perm_B_31_2, e poseidon2_perm_B_31_3, e poseidon2_perm_B_32_0, e poseidon2_perm_B_32_1, e poseidon2_perm_B_32_2, e poseidon2_perm_B_32_3, e poseidon2_perm_B_33_0, e poseidon2_perm_B_33_1, e poseidon2_perm_B_33_2, e poseidon2_perm_B_33_3, e poseidon2_perm_B_34_0, e poseidon2_perm_B_34_1, e poseidon2_perm_B_34_2, e poseidon2_perm_B_34_3, e poseidon2_perm_B_35_0, e poseidon2_perm_B_35_1, e poseidon2_perm_B_35_2, e poseidon2_perm_B_35_3, e poseidon2_perm_B_36_0, e poseidon2_perm_B_36_1, e poseidon2_perm_B_36_2, e poseidon2_perm_B_36_3, e poseidon2_perm_B_37_0, e poseidon2_perm_B_37_1, e poseidon2_perm_B_37_2, e poseidon2_perm_B_37_3, e poseidon2_perm_B_38_0, e poseidon2_perm_B_38_1, e poseidon2_perm_B_38_2, e poseidon2_perm_B_38_3, e poseidon2_perm_B_39_0, e poseidon2_perm_B_39_1, e poseidon2_perm_B_39_2, e poseidon2_perm_B_39_3, e poseidon2_perm_B_40_0, e poseidon2_perm_B_40_1, e poseidon2_perm_B_40_2, e poseidon2_perm_B_40_3, e poseidon2_perm_B_41_0, e poseidon2_perm_B_41_1, e poseidon2_perm_B_41_2, e poseidon2_perm_B_41_3, e poseidon2_perm_B_42_0, e poseidon2_perm_B_42_1, e poseidon2_perm_B_42_2, e poseidon2_perm_B_42_3, e poseidon2_perm_B_43_0, e poseidon2_perm_B_43_1, e poseidon2_perm_B_43_2, e poseidon2_perm_B_43_3, e poseidon2_perm_B_44_0, e poseidon2_perm_B_44_1, e poseidon2_perm_B_44_2, e poseidon2_perm_B_44_3, e poseidon2_perm_B_45_0, e poseidon2_perm_B_45_1, e poseidon2_perm_B_45_2, e poseidon2_perm_B_45_3, e poseidon2_perm_B_46_0, e poseidon2_perm_B_46_1, e poseidon2_perm_B_46_2, e poseidon2_perm_B_46_3, e poseidon2_perm_B_47_0, e poseidon2_perm_B_47_1, e poseidon2_perm_B_47_2, e poseidon2_perm_B_47_3, e poseidon2_perm_B_48_0, e poseidon2_perm_B_48_1, e poseidon2_perm_B_48_2, e poseidon2_perm_B_48_3, e poseidon2_perm_B_49_0, e poseidon2_perm_B_49_1, e poseidon2_perm_B_49_2, e poseidon2_perm_B_49_3, e poseidon2_perm_B_4_0, e poseidon2_perm_B_4_1, e poseidon2_perm_B_4_2, e poseidon2_perm_B_4_3, e poseidon2_perm_B_50_0, e poseidon2_perm_B_50_1, e poseidon2_perm_B_50_2, e poseidon2_perm_B_50_3, e poseidon2_perm_B_51_0, e poseidon2_perm_B_51_1, e poseidon2_perm_B_51_2, e poseidon2_perm_B_51_3, e poseidon2_perm_B_52_0, e poseidon2_perm_B_52_1, e poseidon2_perm_B_52_2, e poseidon2_perm_B_52_3, e poseidon2_perm_B_53_0, e poseidon2_perm_B_53_1, e poseidon2_perm_B_53_2, e poseidon2_perm_B_53_3, e poseidon2_perm_B_54_0, e poseidon2_perm_B_54_1, e poseidon2_perm_B_54_2, e poseidon2_perm_B_54_3, e poseidon2_perm_B_55_0, e poseidon2_perm_B_55_1, e poseidon2_perm_B_55_2, e poseidon2_perm_B_55_3, e poseidon2_perm_B_56_0, e poseidon2_perm_B_56_1, e poseidon2_perm_B_56_2, e poseidon2_perm_B_56_3, e poseidon2_perm_B_57_0, e poseidon2_perm_B_57_1, e poseidon2_perm_B_57_2, e poseidon2_perm_B_57_3, e poseidon2_perm_B_58_0, e poseidon2_perm_B_58_1, e poseidon2_perm_B_58_2, e poseidon2_perm_B_58_3, e poseidon2_perm_B_59_0, e poseidon2_perm_B_59_1, e poseidon2_perm_B_59_2, e poseidon2_perm_B_59_3, e poseidon2_perm_B_5_0, e poseidon2_perm_B_5_1, e poseidon2_perm_B_5_2, e poseidon2_perm_B_5_3, e poseidon2_perm_B_6_0, e poseidon2_perm_B_6_1, e poseidon2_perm_B_6_2, e poseidon2_perm_B_6_3, e poseidon2_perm_B_7_0, e poseidon2_perm_B_7_1, e poseidon2_perm_B_7_2, e poseidon2_perm_B_7_3, e poseidon2_perm_B_8_0, e poseidon2_perm_B_8_1, e poseidon2_perm_B_8_2, e poseidon2_perm_B_8_3, e poseidon2_perm_B_9_0, e poseidon2_perm_B_9_1, e poseidon2_perm_B_9_2, e poseidon2_perm_B_9_3, e poseidon2_perm_EXT_LAYER_4, e poseidon2_perm_EXT_LAYER_5, e poseidon2_perm_EXT_LAYER_6, e poseidon2_perm_EXT_LAYER_7, e poseidon2_perm_T_0_4, e poseidon2_perm_T_0_5, e poseidon2_perm_T_0_6, e poseidon2_perm_T_0_7, e poseidon2_perm_T_1_4, e poseidon2_perm_T_1_5, e poseidon2_perm_T_1_6, e poseidon2_perm_T_1_7, e poseidon2_perm_T_2_4, e poseidon2_perm_T_2_5, e poseidon2_perm_T_2_6, e poseidon2_perm_T_2_7, e poseidon2_perm_T_3_4, e poseidon2_perm_T_3_5, e poseidon2_perm_T_3_6, e poseidon2_perm_T_3_7, e poseidon2_perm_T_60_4, e poseidon2_perm_T_60_5, e poseidon2_perm_T_60_6, e poseidon2_perm_T_60_7, e poseidon2_perm_T_61_4, e poseidon2_perm_T_61_5, e poseidon2_perm_T_61_6, e poseidon2_perm_T_61_7, e poseidon2_perm_T_62_4, e poseidon2_perm_T_62_5, e poseidon2_perm_T_62_6, e poseidon2_perm_T_62_7, e poseidon2_perm_T_63_4, e poseidon2_perm_T_63_5, e poseidon2_perm_T_63_6, e poseidon2_perm_T_63_7, e poseidon2_perm_a_0, e poseidon2_perm_a_1, e poseidon2_perm_a_2, e poseidon2_perm_a_3, e poseidon2_perm_b_0, e poseidon2_perm_b_1, e poseidon2_perm_b_2, e poseidon2_perm_b_3, e poseidon2_perm_mem_batch_tag_inv, e poseidon2_perm_mem_err, e poseidon2_perm_mem_execution_clk, e poseidon2_perm_mem_input_0_, e poseidon2_perm_mem_input_1_, e poseidon2_perm_mem_input_2_, e poseidon2_perm_mem_input_3_, e poseidon2_perm_mem_input_tag_0_, e poseidon2_perm_mem_input_tag_1_, e poseidon2_perm_mem_input_tag_2_, e poseidon2_perm_mem_input_tag_3_, e poseidon2_perm_mem_max_mem_addr, e poseidon2_perm_mem_output_0_, e poseidon2_perm_mem_output_1_, e poseidon2_perm_mem_output_2_, e poseidon2_perm_mem_output_3_, e poseidon2_perm_mem_read_address_0_, e poseidon2_perm_mem_read_address_1_, e poseidon2_perm_mem_read_address_2_, e poseidon2_perm_mem_read_address_3_, e poseidon2_perm_mem_sel, e poseidon2_perm_mem_sel_dst_out_of_range_err, e poseidon2_perm_mem_sel_invalid_tag_err, e poseidon2_perm_mem_sel_should_exec, e poseidon2_perm_mem_sel_should_read_mem, e poseidon2_perm_mem_sel_src_out_of_range_err, e poseidon2_perm_mem_space_id, e poseidon2_perm_mem_write_address_0_, e poseidon2_perm_mem_write_address_1_, e poseidon2_perm_mem_write_address_2_, e poseidon2_perm_mem_write_address_3_, e poseidon2_perm_sel, e public_data_check_address, e public_data_check_clk, e public_data_check_clk_diff, e public_data_check_constant_32, e public_data_check_discard, e public_data_check_end, e public_data_check_intermediate_root, e public_data_check_leaf_not_exists, e public_data_check_leaf_slot, e public_data_check_leaf_slot_low_leaf_slot_diff_inv, e public_data_check_length_pi_idx, e public_data_check_low_leaf_hash, e public_data_check_low_leaf_index, e public_data_check_low_leaf_next_index, e public_data_check_low_leaf_next_slot, e public_data_check_low_leaf_slot, e public_data_check_low_leaf_value, e public_data_check_new_leaf_hash, e public_data_check_next_slot_inv, e public_data_check_next_slot_is_nonzero, e public_data_check_nondiscaded_write, e public_data_check_not_end, e public_data_check_public_data_writes_length, e public_data_check_root, e public_data_check_sel, e public_data_check_should_insert, e public_data_check_should_write_to_public_inputs, e public_data_check_siloing_separator, e public_data_check_slot, e public_data_check_tree_height, e public_data_check_tree_size_after_write, e public_data_check_tree_size_before_write, e public_data_check_updated_low_leaf_hash, e public_data_check_updated_low_leaf_next_index, e public_data_check_updated_low_leaf_next_slot, e public_data_check_updated_low_leaf_value, e public_data_check_value, e public_data_check_write, e public_data_check_write_idx, e public_data_check_write_root, e public_data_squash_check_clock, e public_data_squash_clk, e public_data_squash_clk_diff, e public_data_squash_constant_32, e public_data_squash_leaf_slot, e public_data_squash_leaf_slot_increase, e public_data_squash_sel, e public_data_squash_write_to_public_inputs, e range_check_dyn_diff, e range_check_dyn_rng_chk_bits, e range_check_dyn_rng_chk_pow_2, e range_check_is_lte_u112, e range_check_is_lte_u128, e range_check_is_lte_u16, e range_check_is_lte_u32, e range_check_is_lte_u48, e range_check_is_lte_u64, e range_check_is_lte_u80, e range_check_is_lte_u96, e range_check_rng_chk_bits, e range_check_sel, e range_check_sel_r0_16_bit_rng_lookup, e range_check_sel_r1_16_bit_rng_lookup, e range_check_sel_r2_16_bit_rng_lookup, e range_check_sel_r3_16_bit_rng_lookup, e range_check_sel_r4_16_bit_rng_lookup, e range_check_sel_r5_16_bit_rng_lookup, e range_check_sel_r6_16_bit_rng_lookup, e range_check_u16_r0, e range_check_u16_r1, e range_check_u16_r2, e range_check_u16_r3, e range_check_u16_r4, e range_check_u16_r5, e range_check_u16_r6, e range_check_u16_r7, e range_check_value, e scalar_mul_bit, e scalar_mul_bit_idx, e scalar_mul_bit_radix, e scalar_mul_end, e scalar_mul_not_end, e scalar_mul_point_inf, e scalar_mul_point_x, e scalar_mul_point_y, e scalar_mul_res_inf, e scalar_mul_res_x, e scalar_mul_res_y, e scalar_mul_scalar, e scalar_mul_sel, e scalar_mul_should_add, e scalar_mul_start, e scalar_mul_temp_inf, e scalar_mul_temp_x, e scalar_mul_temp_y, e sha256_a, e sha256_a_and_b, e sha256_a_and_b_xor_a_and_c, e sha256_a_and_c, e sha256_a_rotr_13, e sha256_a_rotr_2, e sha256_a_rotr_22, e sha256_a_rotr_2_xor_a_rotr_13, e sha256_and_sel, e sha256_b, e sha256_b_and_c, e sha256_c, e sha256_ch, e sha256_clk, e sha256_computed_w_lhs, e sha256_computed_w_rhs, e sha256_d, e sha256_e, e sha256_e_and_f, e sha256_e_rotr_11, e sha256_e_rotr_25, e sha256_e_rotr_6, e sha256_e_rotr_6_xor_e_rotr_11, e sha256_f, e sha256_g, e sha256_h, e sha256_helper_w0, e sha256_helper_w1, e sha256_helper_w10, e sha256_helper_w11, e sha256_helper_w12, e sha256_helper_w13, e sha256_helper_w14, e sha256_helper_w15, e sha256_helper_w2, e sha256_helper_w3, e sha256_helper_w4, e sha256_helper_w5, e sha256_helper_w6, e sha256_helper_w7, e sha256_helper_w8, e sha256_helper_w9, e sha256_init_a, e sha256_init_b, e sha256_init_c, e sha256_init_d, e sha256_init_e, e sha256_init_f, e sha256_init_g, e sha256_init_h, e sha256_input_offset, e sha256_is_input_round, e sha256_latch, e sha256_lhs_a_13, e sha256_lhs_a_2, e sha256_lhs_a_22, e sha256_lhs_e_11, e sha256_lhs_e_25, e sha256_lhs_e_6, e sha256_lhs_w_10, e sha256_lhs_w_17, e sha256_lhs_w_18, e sha256_lhs_w_19, e sha256_lhs_w_3, e sha256_lhs_w_7, e sha256_maj, e sha256_next_a_lhs, e sha256_next_a_rhs, e sha256_next_e_lhs, e sha256_next_e_rhs, e sha256_not_e, e sha256_not_e_and_g, e sha256_output_a_lhs, e sha256_output_a_rhs, e sha256_output_b_lhs, e sha256_output_b_rhs, e sha256_output_c_lhs, e sha256_output_c_rhs, e sha256_output_d_lhs, e sha256_output_d_rhs, e sha256_output_e_lhs, e sha256_output_e_rhs, e sha256_output_f_lhs, e sha256_output_f_rhs, e sha256_output_g_lhs, e sha256_output_g_rhs, e sha256_output_h_lhs, e sha256_output_h_rhs, e sha256_output_offset, e sha256_perform_round, e sha256_rhs_a_13, e sha256_rhs_a_2, e sha256_rhs_a_22, e sha256_rhs_e_11, e sha256_rhs_e_25, e sha256_rhs_e_6, e sha256_rhs_w_10, e sha256_rhs_w_17, e sha256_rhs_w_18, e sha256_rhs_w_19, e sha256_rhs_w_3, e sha256_rhs_w_7, e sha256_round_constant, e sha256_round_count, e sha256_rounds_remaining, e sha256_rounds_remaining_inv, e sha256_s_0, e sha256_s_1, e sha256_sel, e sha256_start, e sha256_state_offset, e sha256_w, e sha256_w_15_rotr_18, e sha256_w_15_rotr_7, e sha256_w_15_rotr_7_xor_w_15_rotr_18, e sha256_w_15_rshift_3, e sha256_w_2_rotr_17, e sha256_w_2_rotr_17_xor_w_2_rotr_19, e sha256_w_2_rotr_19, e sha256_w_2_rshift_10, e sha256_w_s_0, e sha256_w_s_1, e sha256_xor_sel, e to_radix_acc, e to_radix_acc_under_p, e to_radix_end, e to_radix_exponent, e to_radix_found, e to_radix_is_unsafe_limb, e to_radix_limb, e to_radix_limb_eq_p, e to_radix_limb_index, e to_radix_limb_lt_p, e to_radix_limb_p_diff, e to_radix_limb_radix_diff, e to_radix_not_end, e to_radix_not_padding_limb, e to_radix_p_limb, e to_radix_radix, e to_radix_rem_inverse, e to_radix_safe_limbs, e to_radix_safety_diff_inverse, e to_radix_sel, e to_radix_start, e to_radix_value, e tx_calldata_hash, e tx_context_id, e tx_contract_addr, e tx_da_gas_limit, e tx_discard, e tx_effective_fee_per_da_gas, e tx_effective_fee_per_l2_gas, e tx_end_gas_used_pi_offset, e tx_end_phase, e tx_fee, e tx_fee_juice_balance_slot, e tx_fee_juice_balances_slot, e tx_fee_juice_contract_address, e tx_fee_payer, e tx_fee_payer_balance, e tx_fee_payer_new_balance, e tx_fee_payer_pi_offset, e tx_is_collect_fee, e tx_is_l2_l1_msg_phase, e tx_is_padded, e tx_is_public_call_request, e tx_is_revertible, e tx_is_static, e tx_is_teardown_phase, e tx_is_tree_insert_phase, e tx_l2_gas_limit, e tx_l2_l1_msg_content, e tx_l2_l1_msg_contract_address, e tx_l2_l1_msg_recipient, e tx_leaf_value, e tx_msg_sender, e tx_next_context_id, e tx_next_da_gas_used, e tx_next_da_gas_used_sent_to_enqueued_call, e tx_next_l1_l2_tree_root, e tx_next_l1_l2_tree_size, e tx_next_l2_gas_used, e tx_next_l2_gas_used_sent_to_enqueued_call, e tx_next_note_hash_tree_root, e tx_next_note_hash_tree_size, e tx_next_nullifier_tree_root, e tx_next_nullifier_tree_size, e tx_next_num_note_hashes_emitted, e tx_next_num_nullifiers_emitted, e tx_next_public_data_tree_root, e tx_next_public_data_tree_size, e tx_next_written_public_data_slots_tree_root, e tx_next_written_public_data_slots_tree_size, e tx_num_l2_l1_msg_emitted, e tx_phase_value, e tx_prev_da_gas_used, e tx_prev_da_gas_used_sent_to_enqueued_call, e tx_prev_l1_l2_tree_root, e tx_prev_l1_l2_tree_size, e tx_prev_l2_gas_used, e tx_prev_l2_gas_used_sent_to_enqueued_call, e tx_prev_note_hash_tree_root, e tx_prev_note_hash_tree_size, e tx_prev_nullifier_tree_root, e tx_prev_nullifier_tree_size, e tx_prev_num_note_hashes_emitted, e tx_prev_num_nullifiers_emitted, e tx_prev_public_data_tree_root, e tx_prev_public_data_tree_size, e tx_prev_written_public_data_slots_tree_root, e tx_prev_written_public_data_slots_tree_size, e tx_read_pi_length_offset, e tx_read_pi_offset, e tx_remaining_phase_counter, e tx_remaining_phase_inv, e tx_remaining_phase_minus_one_inv, e tx_reverted, e tx_sel, e tx_sel_non_revertible_append_note_hash, e tx_sel_non_revertible_append_nullifier, e tx_sel_read_phase_length, e tx_sel_revertible_append_note_hash, e tx_sel_revertible_append_nullifier, e tx_should_note_hash_append, e tx_should_nullifier_append, e tx_start_phase, e tx_successful_msg_emit, e tx_uint32_max, e tx_write_pi_offset, e update_check_address, e update_check_current_class_id, e update_check_delayed_public_mutable_hash_slot, e update_check_delayed_public_mutable_slot, e update_check_deployer_protocol_contract_address, e update_check_hash_not_zero, e update_check_original_class_id, e update_check_public_data_tree_root, e update_check_public_leaf_index_domain_separator, e update_check_sel, e update_check_timestamp, e update_check_timestamp_is_lt_timestamp_of_change, e update_check_timestamp_of_change, e update_check_timestamp_of_change_bit_size, e update_check_timestamp_of_change_subtraction, e update_check_timestamp_pi_offset, e update_check_update_hash, e update_check_update_hash_inv, e update_check_update_hi_metadata, e update_check_update_hi_metadata_bit_size, e update_check_update_post_class_id_is_zero, e update_check_update_post_class_inv, e update_check_update_pre_class_id_is_zero, e update_check_update_pre_class_inv, e update_check_update_preimage_metadata, e update_check_update_preimage_post_class_id, e update_check_update_preimage_pre_class_id, e update_check_updated_class_ids_slot, e written_public_data_slots_tree_check_address, e written_public_data_slots_tree_check_intermediate_root, e written_public_data_slots_tree_check_leaf_not_exists, e written_public_data_slots_tree_check_leaf_slot, e written_public_data_slots_tree_check_low_leaf_hash, e written_public_data_slots_tree_check_low_leaf_index, e written_public_data_slots_tree_check_low_leaf_next_index, e written_public_data_slots_tree_check_low_leaf_next_slot, e written_public_data_slots_tree_check_low_leaf_slot, e written_public_data_slots_tree_check_new_leaf_hash, e written_public_data_slots_tree_check_next_slot_inv, e written_public_data_slots_tree_check_next_slot_is_nonzero, e written_public_data_slots_tree_check_root, e written_public_data_slots_tree_check_sel, e written_public_data_slots_tree_check_should_insert, e written_public_data_slots_tree_check_siloing_separator, e written_public_data_slots_tree_check_slot, e written_public_data_slots_tree_check_slot_low_leaf_slot_diff_inv, e written_public_data_slots_tree_check_tree_height, e written_public_data_slots_tree_check_tree_size_after_write, e written_public_data_slots_tree_check_tree_size_before_write, e written_public_data_slots_tree_check_updated_low_leaf_hash, e written_public_data_slots_tree_check_updated_low_leaf_next_index, e written_public_data_slots_tree_check_updated_low_leaf_next_slot, e written_public_data_slots_tree_check_write, e written_public_data_slots_tree_check_write_root, e lookup_range_check_dyn_rng_chk_pow_2_counts, e lookup_range_check_dyn_diff_is_u16_counts, e lookup_range_check_r0_is_u16_counts, e lookup_range_check_r1_is_u16_counts, e lookup_range_check_r2_is_u16_counts, e lookup_range_check_r3_is_u16_counts, e lookup_range_check_r4_is_u16_counts, e lookup_range_check_r5_is_u16_counts, e lookup_range_check_r6_is_u16_counts, e lookup_range_check_r7_is_u16_counts, e lookup_ff_gt_a_lo_range_counts, e lookup_ff_gt_a_hi_range_counts, e lookup_gt_gt_range_counts, e lookup_alu_register_tag_value_counts, e lookup_alu_tag_max_bits_value_counts, e lookup_alu_ff_gt_counts, e lookup_alu_int_gt_counts, e lookup_alu_exec_dispatching_cast_counts, e lookup_alu_exec_dispatching_set_counts, e lookup_alu_large_trunc_canonical_dec_counts, e lookup_alu_range_check_trunc_mid_counts, e lookup_bitwise_integral_tag_length_counts, e lookup_bitwise_byte_operations_counts, e lookup_bitwise_dispatch_exec_bitwise_counts, e lookup_keccak_memory_slice_to_mem_counts, e lookup_keccakf1600_theta_xor_01_counts, e lookup_keccakf1600_theta_xor_02_counts, e lookup_keccakf1600_theta_xor_03_counts, e lookup_keccakf1600_theta_xor_row_0_counts, e lookup_keccakf1600_theta_xor_11_counts, e lookup_keccakf1600_theta_xor_12_counts, e lookup_keccakf1600_theta_xor_13_counts, e lookup_keccakf1600_theta_xor_row_1_counts, e lookup_keccakf1600_theta_xor_21_counts, e lookup_keccakf1600_theta_xor_22_counts, e lookup_keccakf1600_theta_xor_23_counts, e lookup_keccakf1600_theta_xor_row_2_counts, e lookup_keccakf1600_theta_xor_31_counts, e lookup_keccakf1600_theta_xor_32_counts, e lookup_keccakf1600_theta_xor_33_counts, e lookup_keccakf1600_theta_xor_row_3_counts, e lookup_keccakf1600_theta_xor_41_counts, e lookup_keccakf1600_theta_xor_42_counts, e lookup_keccakf1600_theta_xor_43_counts, e lookup_keccakf1600_theta_xor_row_4_counts, e lookup_keccakf1600_theta_combined_xor_0_counts, e lookup_keccakf1600_theta_combined_xor_1_counts, e lookup_keccakf1600_theta_combined_xor_2_counts, e lookup_keccakf1600_theta_combined_xor_3_counts, e lookup_keccakf1600_theta_combined_xor_4_counts, e lookup_keccakf1600_state_theta_00_counts, e lookup_keccakf1600_state_theta_01_counts, e lookup_keccakf1600_state_theta_02_counts, e lookup_keccakf1600_state_theta_03_counts, e lookup_keccakf1600_state_theta_04_counts, e lookup_keccakf1600_state_theta_10_counts, e lookup_keccakf1600_state_theta_11_counts, e lookup_keccakf1600_state_theta_12_counts, e lookup_keccakf1600_state_theta_13_counts, e lookup_keccakf1600_state_theta_14_counts, e lookup_keccakf1600_state_theta_20_counts, e lookup_keccakf1600_state_theta_21_counts, e lookup_keccakf1600_state_theta_22_counts, e lookup_keccakf1600_state_theta_23_counts, e lookup_keccakf1600_state_theta_24_counts, e lookup_keccakf1600_state_theta_30_counts, e lookup_keccakf1600_state_theta_31_counts, e lookup_keccakf1600_state_theta_32_counts, e lookup_keccakf1600_state_theta_33_counts, e lookup_keccakf1600_state_theta_34_counts, e lookup_keccakf1600_state_theta_40_counts, e lookup_keccakf1600_state_theta_41_counts, e lookup_keccakf1600_state_theta_42_counts, e lookup_keccakf1600_state_theta_43_counts, e lookup_keccakf1600_state_theta_44_counts, e lookup_keccakf1600_theta_limb_02_range_counts, e lookup_keccakf1600_theta_limb_04_range_counts, e lookup_keccakf1600_theta_limb_10_range_counts, e lookup_keccakf1600_theta_limb_12_range_counts, e lookup_keccakf1600_theta_limb_14_range_counts, e lookup_keccakf1600_theta_limb_21_range_counts, e lookup_keccakf1600_theta_limb_23_range_counts, e lookup_keccakf1600_theta_limb_30_range_counts, e lookup_keccakf1600_theta_limb_32_range_counts, e lookup_keccakf1600_theta_limb_33_range_counts, e lookup_keccakf1600_theta_limb_40_range_counts, e lookup_keccakf1600_theta_limb_41_range_counts, e lookup_keccakf1600_theta_limb_43_range_counts, e lookup_keccakf1600_theta_limb_44_range_counts, e lookup_keccakf1600_theta_limb_01_range_counts, e lookup_keccakf1600_theta_limb_03_range_counts, e lookup_keccakf1600_theta_limb_11_range_counts, e lookup_keccakf1600_theta_limb_13_range_counts, e lookup_keccakf1600_theta_limb_20_range_counts, e lookup_keccakf1600_theta_limb_22_range_counts, e lookup_keccakf1600_theta_limb_24_range_counts, e lookup_keccakf1600_theta_limb_31_range_counts, e lookup_keccakf1600_theta_limb_34_range_counts, e lookup_keccakf1600_theta_limb_42_range_counts, e lookup_keccakf1600_state_pi_and_00_counts, e lookup_keccakf1600_state_pi_and_01_counts, e lookup_keccakf1600_state_pi_and_02_counts, e lookup_keccakf1600_state_pi_and_03_counts, e lookup_keccakf1600_state_pi_and_04_counts, e lookup_keccakf1600_state_pi_and_10_counts, e lookup_keccakf1600_state_pi_and_11_counts, e lookup_keccakf1600_state_pi_and_12_counts, e lookup_keccakf1600_state_pi_and_13_counts, e lookup_keccakf1600_state_pi_and_14_counts, e lookup_keccakf1600_state_pi_and_20_counts, e lookup_keccakf1600_state_pi_and_21_counts, e lookup_keccakf1600_state_pi_and_22_counts, e lookup_keccakf1600_state_pi_and_23_counts, e lookup_keccakf1600_state_pi_and_24_counts, e lookup_keccakf1600_state_pi_and_30_counts, e lookup_keccakf1600_state_pi_and_31_counts, e lookup_keccakf1600_state_pi_and_32_counts, e lookup_keccakf1600_state_pi_and_33_counts, e lookup_keccakf1600_state_pi_and_34_counts, e lookup_keccakf1600_state_pi_and_40_counts, e lookup_keccakf1600_state_pi_and_41_counts, e lookup_keccakf1600_state_pi_and_42_counts, e lookup_keccakf1600_state_pi_and_43_counts, e lookup_keccakf1600_state_pi_and_44_counts, e lookup_keccakf1600_state_chi_00_counts, e lookup_keccakf1600_state_chi_01_counts, e lookup_keccakf1600_state_chi_02_counts, e lookup_keccakf1600_state_chi_03_counts, e lookup_keccakf1600_state_chi_04_counts, e lookup_keccakf1600_state_chi_10_counts, e lookup_keccakf1600_state_chi_11_counts, e lookup_keccakf1600_state_chi_12_counts, e lookup_keccakf1600_state_chi_13_counts, e lookup_keccakf1600_state_chi_14_counts, e lookup_keccakf1600_state_chi_20_counts, e lookup_keccakf1600_state_chi_21_counts, e lookup_keccakf1600_state_chi_22_counts, e lookup_keccakf1600_state_chi_23_counts, e lookup_keccakf1600_state_chi_24_counts, e lookup_keccakf1600_state_chi_30_counts, e lookup_keccakf1600_state_chi_31_counts, e lookup_keccakf1600_state_chi_32_counts, e lookup_keccakf1600_state_chi_33_counts, e lookup_keccakf1600_state_chi_34_counts, e lookup_keccakf1600_state_chi_40_counts, e lookup_keccakf1600_state_chi_41_counts, e lookup_keccakf1600_state_chi_42_counts, e lookup_keccakf1600_state_chi_43_counts, e lookup_keccakf1600_state_chi_44_counts, e lookup_keccakf1600_round_cst_counts, e lookup_keccakf1600_state_iota_00_counts, e lookup_keccakf1600_src_abs_diff_positive_counts, e lookup_keccakf1600_dst_abs_diff_positive_counts, e lookup_sha256_round_constant_counts, e lookup_poseidon2_mem_check_src_addr_in_range_counts, e lookup_poseidon2_mem_check_dst_addr_in_range_counts, e lookup_poseidon2_mem_pos_read_mem_0_counts, e lookup_poseidon2_mem_pos_read_mem_1_counts, e lookup_poseidon2_mem_pos_read_mem_2_counts, e lookup_poseidon2_mem_pos_read_mem_3_counts, e lookup_poseidon2_mem_input_output_poseidon2_perm_counts, e lookup_poseidon2_mem_pos_write_mem_0_counts, e lookup_poseidon2_mem_pos_write_mem_1_counts, e lookup_poseidon2_mem_pos_write_mem_2_counts, e lookup_poseidon2_mem_pos_write_mem_3_counts, e lookup_to_radix_limb_range_counts, e lookup_to_radix_limb_less_than_radix_range_counts, e lookup_to_radix_fetch_safe_limbs_counts, e lookup_to_radix_fetch_p_limb_counts, e lookup_to_radix_limb_p_diff_range_counts, e lookup_scalar_mul_to_radix_counts, e lookup_scalar_mul_double_counts, e lookup_scalar_mul_add_counts, e lookup_context_ctx_stack_call_counts, e lookup_context_ctx_stack_rollback_counts, e lookup_context_ctx_stack_return_counts, e lookup_poseidon2_hash_poseidon2_perm_counts, e lookup_calldata_hashing_cd_hash_counts, e lookup_calldata_hashing_cd_hash_end_counts, e lookup_data_copy_range_max_read_size_diff_counts, e lookup_data_copy_range_read_counts, e lookup_data_copy_range_write_counts, e lookup_data_copy_range_reads_left_counts, e lookup_data_copy_mem_write_counts, e lookup_data_copy_mem_read_counts, e lookup_data_copy_col_read_counts, e lookup_addressing_base_address_from_memory_counts, e lookup_addressing_relative_overflow_range_0_counts, e lookup_addressing_relative_overflow_range_1_counts, e lookup_addressing_relative_overflow_range_2_counts, e lookup_addressing_relative_overflow_range_3_counts, e lookup_addressing_relative_overflow_range_4_counts, e lookup_addressing_relative_overflow_range_5_counts, e lookup_addressing_relative_overflow_range_6_counts, e lookup_addressing_indirect_from_memory_0_counts, e lookup_addressing_indirect_from_memory_1_counts, e lookup_addressing_indirect_from_memory_2_counts, e lookup_addressing_indirect_from_memory_3_counts, e lookup_addressing_indirect_from_memory_4_counts, e lookup_addressing_indirect_from_memory_5_counts, e lookup_addressing_indirect_from_memory_6_counts, e lookup_registers_mem_op_0_counts, e lookup_registers_mem_op_1_counts, e lookup_registers_mem_op_2_counts, e lookup_registers_mem_op_3_counts, e lookup_registers_mem_op_4_counts, e lookup_registers_mem_op_5_counts, e lookup_registers_mem_op_6_counts, e lookup_gas_addressing_gas_read_counts, e lookup_gas_limit_used_l2_range_counts, e lookup_gas_limit_used_da_range_counts, e lookup_merkle_check_merkle_poseidon2_read_counts, e lookup_merkle_check_merkle_poseidon2_write_counts, e lookup_nullifier_check_silo_poseidon2_counts, e lookup_nullifier_check_low_leaf_poseidon2_counts, e lookup_nullifier_check_updated_low_leaf_poseidon2_counts, e lookup_nullifier_check_low_leaf_merkle_check_counts, e lookup_nullifier_check_low_leaf_nullifier_validation_counts, e lookup_nullifier_check_low_leaf_next_nullifier_validation_counts, e lookup_nullifier_check_new_leaf_poseidon2_counts, e lookup_nullifier_check_new_leaf_merkle_check_counts, e lookup_nullifier_check_write_nullifier_to_public_inputs_counts, e lookup_public_data_check_silo_poseidon2_counts, e lookup_public_data_check_low_leaf_slot_validation_counts, e lookup_public_data_check_low_leaf_next_slot_validation_counts, e lookup_public_data_check_low_leaf_poseidon2_0_counts, e lookup_public_data_check_low_leaf_poseidon2_1_counts, e lookup_public_data_check_updated_low_leaf_poseidon2_0_counts, e lookup_public_data_check_updated_low_leaf_poseidon2_1_counts, e lookup_public_data_check_low_leaf_merkle_check_counts, e lookup_public_data_check_new_leaf_poseidon2_0_counts, e lookup_public_data_check_new_leaf_poseidon2_1_counts, e lookup_public_data_check_new_leaf_merkle_check_counts, e lookup_public_data_check_write_public_data_to_public_inputs_counts, e lookup_written_public_data_slots_tree_check_silo_poseidon2_counts, e lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_counts, e lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_counts, e lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_counts, e lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_counts, e lookup_l1_to_l2_message_tree_check_merkle_check_counts, e lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts, e lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts, e lookup_address_derivation_partial_address_poseidon2_counts, e lookup_address_derivation_public_keys_hash_poseidon2_0_counts, e lookup_address_derivation_public_keys_hash_poseidon2_1_counts, e lookup_address_derivation_public_keys_hash_poseidon2_2_counts, e lookup_address_derivation_public_keys_hash_poseidon2_3_counts, e lookup_address_derivation_public_keys_hash_poseidon2_4_counts, e lookup_address_derivation_preaddress_poseidon2_counts, e lookup_address_derivation_preaddress_scalar_mul_counts, e lookup_address_derivation_address_ecadd_counts, e lookup_bc_decomposition_bytes_are_bytes_counts, e lookup_bc_decomposition_abs_diff_is_u16_counts, e lookup_bc_hashing_get_packed_field_counts, e lookup_bc_hashing_iv_is_len_counts, e lookup_update_check_timestamp_from_public_inputs_counts, e lookup_update_check_delayed_public_mutable_slot_poseidon2_counts, e lookup_update_check_update_hash_public_data_read_counts, e lookup_update_check_update_hash_poseidon2_counts, e lookup_update_check_update_hi_metadata_range_counts, e lookup_update_check_update_lo_metadata_range_counts, e lookup_update_check_timestamp_of_change_cmp_range_counts, e lookup_contract_instance_retrieval_deployment_nullifier_read_counts, e lookup_contract_instance_retrieval_address_derivation_counts, e lookup_contract_instance_retrieval_update_check_counts, e lookup_bc_retrieval_contract_instance_retrieval_counts, e lookup_bc_retrieval_class_id_derivation_counts, e lookup_instr_fetching_pc_abs_diff_positive_counts, e lookup_instr_fetching_instr_abs_diff_positive_counts, e lookup_instr_fetching_tag_value_validation_counts, e lookup_instr_fetching_bytecode_size_from_bc_dec_counts, e lookup_instr_fetching_bytes_from_bc_dec_counts, e lookup_instr_fetching_wire_instruction_info_counts, e lookup_class_id_derivation_class_id_poseidon2_0_counts, e lookup_class_id_derivation_class_id_poseidon2_1_counts, e lookup_get_env_var_precomputed_info_counts, e lookup_get_env_var_read_from_public_inputs_col0_counts, e lookup_get_env_var_read_from_public_inputs_col1_counts, e lookup_get_contract_instance_precomputed_info_counts, e lookup_get_contract_instance_contract_instance_retrieval_counts, e lookup_get_contract_instance_mem_write_contract_instance_exists_counts, e lookup_get_contract_instance_mem_write_contract_instance_member_counts, e lookup_internal_call_push_call_stack_counts, e lookup_internal_call_unwind_call_stack_counts, e lookup_external_call_call_allocated_left_l2_range_counts, e lookup_external_call_call_allocated_left_da_range_counts, e lookup_sload_storage_read_counts, e lookup_sstore_record_written_storage_slot_counts, e lookup_sstore_storage_write_counts, e lookup_note_hash_tree_check_silo_poseidon2_counts, e lookup_note_hash_tree_check_read_first_nullifier_counts, e lookup_note_hash_tree_check_nonce_computation_poseidon2_counts, e lookup_note_hash_tree_check_unique_note_hash_poseidon2_counts, e lookup_note_hash_tree_check_merkle_check_counts, e lookup_note_hash_tree_check_write_note_hash_to_public_inputs_counts, e lookup_notehash_exists_note_hash_leaf_index_in_range_counts, e lookup_notehash_exists_note_hash_read_counts, e lookup_emit_notehash_notehash_tree_write_counts, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_counts, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_counts, e lookup_nullifier_exists_nullifier_exists_check_counts, e lookup_execution_bytecode_retrieval_result_counts, e lookup_execution_instruction_fetching_result_counts, e lookup_execution_instruction_fetching_body_counts, e lookup_execution_exec_spec_read_counts, e lookup_execution_dyn_l2_factor_bitwise_counts, e lookup_execution_check_written_storage_slot_counts, e lookup_tx_read_phase_table_counts, e lookup_tx_phase_jump_on_revert_counts, e lookup_tx_read_phase_length_counts, e lookup_tx_read_public_call_request_phase_counts, e lookup_tx_read_tree_insert_value_counts, e lookup_tx_note_hash_append_counts, e lookup_tx_nullifier_append_counts, e lookup_tx_read_l2_l1_msg_counts, e lookup_tx_write_l2_l1_msg_counts, e lookup_tx_read_effective_fee_public_inputs_counts, e lookup_tx_read_fee_payer_public_inputs_counts, e lookup_tx_balance_slot_poseidon2_counts, e lookup_tx_balance_validation_counts -#define AVM2_DERIVED_WITNESS_ENTITIES_E(e) e perm_keccakf1600_read_to_slice_inv, e perm_keccakf1600_write_to_slice_inv, e perm_poseidon2_mem_dispatch_exec_pos2_inv, e perm_public_data_check_squashing_inv, e perm_execution_dispatch_keccakf1600_inv, e perm_execution_dispatch_get_contract_instance_inv, e lookup_range_check_dyn_rng_chk_pow_2_inv, e lookup_range_check_dyn_diff_is_u16_inv, e lookup_range_check_r0_is_u16_inv, e lookup_range_check_r1_is_u16_inv, e lookup_range_check_r2_is_u16_inv, e lookup_range_check_r3_is_u16_inv, e lookup_range_check_r4_is_u16_inv, e lookup_range_check_r5_is_u16_inv, e lookup_range_check_r6_is_u16_inv, e lookup_range_check_r7_is_u16_inv, e lookup_ff_gt_a_lo_range_inv, e lookup_ff_gt_a_hi_range_inv, e lookup_gt_gt_range_inv, e lookup_alu_register_tag_value_inv, e lookup_alu_tag_max_bits_value_inv, e lookup_alu_ff_gt_inv, e lookup_alu_int_gt_inv, e lookup_alu_exec_dispatching_cast_inv, e lookup_alu_exec_dispatching_set_inv, e lookup_alu_large_trunc_canonical_dec_inv, e lookup_alu_range_check_trunc_mid_inv, e lookup_bitwise_integral_tag_length_inv, e lookup_bitwise_byte_operations_inv, e lookup_bitwise_dispatch_exec_bitwise_inv, e lookup_keccak_memory_slice_to_mem_inv, e lookup_keccakf1600_theta_xor_01_inv, e lookup_keccakf1600_theta_xor_02_inv, e lookup_keccakf1600_theta_xor_03_inv, e lookup_keccakf1600_theta_xor_row_0_inv, e lookup_keccakf1600_theta_xor_11_inv, e lookup_keccakf1600_theta_xor_12_inv, e lookup_keccakf1600_theta_xor_13_inv, e lookup_keccakf1600_theta_xor_row_1_inv, e lookup_keccakf1600_theta_xor_21_inv, e lookup_keccakf1600_theta_xor_22_inv, e lookup_keccakf1600_theta_xor_23_inv, e lookup_keccakf1600_theta_xor_row_2_inv, e lookup_keccakf1600_theta_xor_31_inv, e lookup_keccakf1600_theta_xor_32_inv, e lookup_keccakf1600_theta_xor_33_inv, e lookup_keccakf1600_theta_xor_row_3_inv, e lookup_keccakf1600_theta_xor_41_inv, e lookup_keccakf1600_theta_xor_42_inv, e lookup_keccakf1600_theta_xor_43_inv, e lookup_keccakf1600_theta_xor_row_4_inv, e lookup_keccakf1600_theta_combined_xor_0_inv, e lookup_keccakf1600_theta_combined_xor_1_inv, e lookup_keccakf1600_theta_combined_xor_2_inv, e lookup_keccakf1600_theta_combined_xor_3_inv, e lookup_keccakf1600_theta_combined_xor_4_inv, e lookup_keccakf1600_state_theta_00_inv, e lookup_keccakf1600_state_theta_01_inv, e lookup_keccakf1600_state_theta_02_inv, e lookup_keccakf1600_state_theta_03_inv, e lookup_keccakf1600_state_theta_04_inv, e lookup_keccakf1600_state_theta_10_inv, e lookup_keccakf1600_state_theta_11_inv, e lookup_keccakf1600_state_theta_12_inv, e lookup_keccakf1600_state_theta_13_inv, e lookup_keccakf1600_state_theta_14_inv, e lookup_keccakf1600_state_theta_20_inv, e lookup_keccakf1600_state_theta_21_inv, e lookup_keccakf1600_state_theta_22_inv, e lookup_keccakf1600_state_theta_23_inv, e lookup_keccakf1600_state_theta_24_inv, e lookup_keccakf1600_state_theta_30_inv, e lookup_keccakf1600_state_theta_31_inv, e lookup_keccakf1600_state_theta_32_inv, e lookup_keccakf1600_state_theta_33_inv, e lookup_keccakf1600_state_theta_34_inv, e lookup_keccakf1600_state_theta_40_inv, e lookup_keccakf1600_state_theta_41_inv, e lookup_keccakf1600_state_theta_42_inv, e lookup_keccakf1600_state_theta_43_inv, e lookup_keccakf1600_state_theta_44_inv, e lookup_keccakf1600_theta_limb_02_range_inv, e lookup_keccakf1600_theta_limb_04_range_inv, e lookup_keccakf1600_theta_limb_10_range_inv, e lookup_keccakf1600_theta_limb_12_range_inv, e lookup_keccakf1600_theta_limb_14_range_inv, e lookup_keccakf1600_theta_limb_21_range_inv, e lookup_keccakf1600_theta_limb_23_range_inv, e lookup_keccakf1600_theta_limb_30_range_inv, e lookup_keccakf1600_theta_limb_32_range_inv, e lookup_keccakf1600_theta_limb_33_range_inv, e lookup_keccakf1600_theta_limb_40_range_inv, e lookup_keccakf1600_theta_limb_41_range_inv, e lookup_keccakf1600_theta_limb_43_range_inv, e lookup_keccakf1600_theta_limb_44_range_inv, e lookup_keccakf1600_theta_limb_01_range_inv, e lookup_keccakf1600_theta_limb_03_range_inv, e lookup_keccakf1600_theta_limb_11_range_inv, e lookup_keccakf1600_theta_limb_13_range_inv, e lookup_keccakf1600_theta_limb_20_range_inv, e lookup_keccakf1600_theta_limb_22_range_inv, e lookup_keccakf1600_theta_limb_24_range_inv, e lookup_keccakf1600_theta_limb_31_range_inv, e lookup_keccakf1600_theta_limb_34_range_inv, e lookup_keccakf1600_theta_limb_42_range_inv, e lookup_keccakf1600_state_pi_and_00_inv, e lookup_keccakf1600_state_pi_and_01_inv, e lookup_keccakf1600_state_pi_and_02_inv, e lookup_keccakf1600_state_pi_and_03_inv, e lookup_keccakf1600_state_pi_and_04_inv, e lookup_keccakf1600_state_pi_and_10_inv, e lookup_keccakf1600_state_pi_and_11_inv, e lookup_keccakf1600_state_pi_and_12_inv, e lookup_keccakf1600_state_pi_and_13_inv, e lookup_keccakf1600_state_pi_and_14_inv, e lookup_keccakf1600_state_pi_and_20_inv, e lookup_keccakf1600_state_pi_and_21_inv, e lookup_keccakf1600_state_pi_and_22_inv, e lookup_keccakf1600_state_pi_and_23_inv, e lookup_keccakf1600_state_pi_and_24_inv, e lookup_keccakf1600_state_pi_and_30_inv, e lookup_keccakf1600_state_pi_and_31_inv, e lookup_keccakf1600_state_pi_and_32_inv, e lookup_keccakf1600_state_pi_and_33_inv, e lookup_keccakf1600_state_pi_and_34_inv, e lookup_keccakf1600_state_pi_and_40_inv, e lookup_keccakf1600_state_pi_and_41_inv, e lookup_keccakf1600_state_pi_and_42_inv, e lookup_keccakf1600_state_pi_and_43_inv, e lookup_keccakf1600_state_pi_and_44_inv, e lookup_keccakf1600_state_chi_00_inv, e lookup_keccakf1600_state_chi_01_inv, e lookup_keccakf1600_state_chi_02_inv, e lookup_keccakf1600_state_chi_03_inv, e lookup_keccakf1600_state_chi_04_inv, e lookup_keccakf1600_state_chi_10_inv, e lookup_keccakf1600_state_chi_11_inv, e lookup_keccakf1600_state_chi_12_inv, e lookup_keccakf1600_state_chi_13_inv, e lookup_keccakf1600_state_chi_14_inv, e lookup_keccakf1600_state_chi_20_inv, e lookup_keccakf1600_state_chi_21_inv, e lookup_keccakf1600_state_chi_22_inv, e lookup_keccakf1600_state_chi_23_inv, e lookup_keccakf1600_state_chi_24_inv, e lookup_keccakf1600_state_chi_30_inv, e lookup_keccakf1600_state_chi_31_inv, e lookup_keccakf1600_state_chi_32_inv, e lookup_keccakf1600_state_chi_33_inv, e lookup_keccakf1600_state_chi_34_inv, e lookup_keccakf1600_state_chi_40_inv, e lookup_keccakf1600_state_chi_41_inv, e lookup_keccakf1600_state_chi_42_inv, e lookup_keccakf1600_state_chi_43_inv, e lookup_keccakf1600_state_chi_44_inv, e lookup_keccakf1600_round_cst_inv, e lookup_keccakf1600_state_iota_00_inv, e lookup_keccakf1600_src_abs_diff_positive_inv, e lookup_keccakf1600_dst_abs_diff_positive_inv, e lookup_sha256_round_constant_inv, e lookup_poseidon2_mem_check_src_addr_in_range_inv, e lookup_poseidon2_mem_check_dst_addr_in_range_inv, e lookup_poseidon2_mem_pos_read_mem_0_inv, e lookup_poseidon2_mem_pos_read_mem_1_inv, e lookup_poseidon2_mem_pos_read_mem_2_inv, e lookup_poseidon2_mem_pos_read_mem_3_inv, e lookup_poseidon2_mem_input_output_poseidon2_perm_inv, e lookup_poseidon2_mem_pos_write_mem_0_inv, e lookup_poseidon2_mem_pos_write_mem_1_inv, e lookup_poseidon2_mem_pos_write_mem_2_inv, e lookup_poseidon2_mem_pos_write_mem_3_inv, e lookup_to_radix_limb_range_inv, e lookup_to_radix_limb_less_than_radix_range_inv, e lookup_to_radix_fetch_safe_limbs_inv, e lookup_to_radix_fetch_p_limb_inv, e lookup_to_radix_limb_p_diff_range_inv, e lookup_scalar_mul_to_radix_inv, e lookup_scalar_mul_double_inv, e lookup_scalar_mul_add_inv, e lookup_context_ctx_stack_call_inv, e lookup_context_ctx_stack_rollback_inv, e lookup_context_ctx_stack_return_inv, e lookup_poseidon2_hash_poseidon2_perm_inv, e lookup_calldata_hashing_cd_hash_inv, e lookup_calldata_hashing_cd_hash_end_inv, e lookup_data_copy_range_max_read_size_diff_inv, e lookup_data_copy_range_read_inv, e lookup_data_copy_range_write_inv, e lookup_data_copy_range_reads_left_inv, e lookup_data_copy_mem_write_inv, e lookup_data_copy_mem_read_inv, e lookup_data_copy_col_read_inv, e lookup_addressing_base_address_from_memory_inv, e lookup_addressing_relative_overflow_range_0_inv, e lookup_addressing_relative_overflow_range_1_inv, e lookup_addressing_relative_overflow_range_2_inv, e lookup_addressing_relative_overflow_range_3_inv, e lookup_addressing_relative_overflow_range_4_inv, e lookup_addressing_relative_overflow_range_5_inv, e lookup_addressing_relative_overflow_range_6_inv, e lookup_addressing_indirect_from_memory_0_inv, e lookup_addressing_indirect_from_memory_1_inv, e lookup_addressing_indirect_from_memory_2_inv, e lookup_addressing_indirect_from_memory_3_inv, e lookup_addressing_indirect_from_memory_4_inv, e lookup_addressing_indirect_from_memory_5_inv, e lookup_addressing_indirect_from_memory_6_inv, e lookup_registers_mem_op_0_inv, e lookup_registers_mem_op_1_inv, e lookup_registers_mem_op_2_inv, e lookup_registers_mem_op_3_inv, e lookup_registers_mem_op_4_inv, e lookup_registers_mem_op_5_inv, e lookup_registers_mem_op_6_inv, e lookup_gas_addressing_gas_read_inv, e lookup_gas_limit_used_l2_range_inv, e lookup_gas_limit_used_da_range_inv, e lookup_merkle_check_merkle_poseidon2_read_inv, e lookup_merkle_check_merkle_poseidon2_write_inv, e lookup_nullifier_check_silo_poseidon2_inv, e lookup_nullifier_check_low_leaf_poseidon2_inv, e lookup_nullifier_check_updated_low_leaf_poseidon2_inv, e lookup_nullifier_check_low_leaf_merkle_check_inv, e lookup_nullifier_check_low_leaf_nullifier_validation_inv, e lookup_nullifier_check_low_leaf_next_nullifier_validation_inv, e lookup_nullifier_check_new_leaf_poseidon2_inv, e lookup_nullifier_check_new_leaf_merkle_check_inv, e lookup_nullifier_check_write_nullifier_to_public_inputs_inv, e lookup_public_data_check_silo_poseidon2_inv, e lookup_public_data_check_low_leaf_slot_validation_inv, e lookup_public_data_check_low_leaf_next_slot_validation_inv, e lookup_public_data_check_low_leaf_poseidon2_0_inv, e lookup_public_data_check_low_leaf_poseidon2_1_inv, e lookup_public_data_check_updated_low_leaf_poseidon2_0_inv, e lookup_public_data_check_updated_low_leaf_poseidon2_1_inv, e lookup_public_data_check_low_leaf_merkle_check_inv, e lookup_public_data_check_new_leaf_poseidon2_0_inv, e lookup_public_data_check_new_leaf_poseidon2_1_inv, e lookup_public_data_check_new_leaf_merkle_check_inv, e lookup_public_data_check_write_public_data_to_public_inputs_inv, e lookup_written_public_data_slots_tree_check_silo_poseidon2_inv, e lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_inv, e lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_inv, e lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_inv, e lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_inv, e lookup_l1_to_l2_message_tree_check_merkle_check_inv, e lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv, e lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv, e lookup_address_derivation_partial_address_poseidon2_inv, e lookup_address_derivation_public_keys_hash_poseidon2_0_inv, e lookup_address_derivation_public_keys_hash_poseidon2_1_inv, e lookup_address_derivation_public_keys_hash_poseidon2_2_inv, e lookup_address_derivation_public_keys_hash_poseidon2_3_inv, e lookup_address_derivation_public_keys_hash_poseidon2_4_inv, e lookup_address_derivation_preaddress_poseidon2_inv, e lookup_address_derivation_preaddress_scalar_mul_inv, e lookup_address_derivation_address_ecadd_inv, e lookup_bc_decomposition_bytes_are_bytes_inv, e lookup_bc_decomposition_abs_diff_is_u16_inv, e lookup_bc_hashing_get_packed_field_inv, e lookup_bc_hashing_iv_is_len_inv, e lookup_update_check_timestamp_from_public_inputs_inv, e lookup_update_check_delayed_public_mutable_slot_poseidon2_inv, e lookup_update_check_update_hash_public_data_read_inv, e lookup_update_check_update_hash_poseidon2_inv, e lookup_update_check_update_hi_metadata_range_inv, e lookup_update_check_update_lo_metadata_range_inv, e lookup_update_check_timestamp_of_change_cmp_range_inv, e lookup_contract_instance_retrieval_deployment_nullifier_read_inv, e lookup_contract_instance_retrieval_address_derivation_inv, e lookup_contract_instance_retrieval_update_check_inv, e lookup_bc_retrieval_contract_instance_retrieval_inv, e lookup_bc_retrieval_class_id_derivation_inv, e lookup_instr_fetching_pc_abs_diff_positive_inv, e lookup_instr_fetching_instr_abs_diff_positive_inv, e lookup_instr_fetching_tag_value_validation_inv, e lookup_instr_fetching_bytecode_size_from_bc_dec_inv, e lookup_instr_fetching_bytes_from_bc_dec_inv, e lookup_instr_fetching_wire_instruction_info_inv, e lookup_class_id_derivation_class_id_poseidon2_0_inv, e lookup_class_id_derivation_class_id_poseidon2_1_inv, e lookup_get_env_var_precomputed_info_inv, e lookup_get_env_var_read_from_public_inputs_col0_inv, e lookup_get_env_var_read_from_public_inputs_col1_inv, e lookup_get_contract_instance_precomputed_info_inv, e lookup_get_contract_instance_contract_instance_retrieval_inv, e lookup_get_contract_instance_mem_write_contract_instance_exists_inv, e lookup_get_contract_instance_mem_write_contract_instance_member_inv, e lookup_internal_call_push_call_stack_inv, e lookup_internal_call_unwind_call_stack_inv, e lookup_external_call_call_allocated_left_l2_range_inv, e lookup_external_call_call_allocated_left_da_range_inv, e lookup_sload_storage_read_inv, e lookup_sstore_record_written_storage_slot_inv, e lookup_sstore_storage_write_inv, e lookup_note_hash_tree_check_silo_poseidon2_inv, e lookup_note_hash_tree_check_read_first_nullifier_inv, e lookup_note_hash_tree_check_nonce_computation_poseidon2_inv, e lookup_note_hash_tree_check_unique_note_hash_poseidon2_inv, e lookup_note_hash_tree_check_merkle_check_inv, e lookup_note_hash_tree_check_write_note_hash_to_public_inputs_inv, e lookup_notehash_exists_note_hash_leaf_index_in_range_inv, e lookup_notehash_exists_note_hash_read_inv, e lookup_emit_notehash_notehash_tree_write_inv, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_inv, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_inv, e lookup_nullifier_exists_nullifier_exists_check_inv, e lookup_execution_bytecode_retrieval_result_inv, e lookup_execution_instruction_fetching_result_inv, e lookup_execution_instruction_fetching_body_inv, e lookup_execution_exec_spec_read_inv, e lookup_execution_dyn_l2_factor_bitwise_inv, e lookup_execution_check_written_storage_slot_inv, e lookup_tx_read_phase_table_inv, e lookup_tx_phase_jump_on_revert_inv, e lookup_tx_read_phase_length_inv, e lookup_tx_read_public_call_request_phase_inv, e lookup_tx_read_tree_insert_value_inv, e lookup_tx_note_hash_append_inv, e lookup_tx_nullifier_append_inv, e lookup_tx_read_l2_l1_msg_inv, e lookup_tx_write_l2_l1_msg_inv, e lookup_tx_read_effective_fee_public_inputs_inv, e lookup_tx_read_fee_payer_public_inputs_inv, e lookup_tx_balance_slot_poseidon2_inv, e lookup_tx_balance_validation_inv +#define AVM2_WIRE_ENTITIES_E(e) e public_inputs_cols_0_, e public_inputs_cols_1_, e public_inputs_cols_2_, e public_inputs_cols_3_, e address_derivation_address, e address_derivation_address_y, e address_derivation_class_id, e address_derivation_deployer_addr, e address_derivation_g1_x, e address_derivation_g1_y, e address_derivation_incoming_viewing_key_x, e address_derivation_incoming_viewing_key_y, e address_derivation_init_hash, e address_derivation_nullifier_key_x, e address_derivation_nullifier_key_y, e address_derivation_outgoing_viewing_key_x, e address_derivation_outgoing_viewing_key_y, e address_derivation_partial_address, e address_derivation_partial_address_domain_separator, e address_derivation_preaddress, e address_derivation_preaddress_domain_separator, e address_derivation_preaddress_public_key_x, e address_derivation_preaddress_public_key_y, e address_derivation_public_keys_hash, e address_derivation_public_keys_hash_domain_separator, e address_derivation_salt, e address_derivation_salted_init_hash, e address_derivation_sel, e address_derivation_tagging_key_x, e address_derivation_tagging_key_y, e alu_ab_tags_diff_inv, e alu_cf, e alu_helper1, e alu_hi_128, e alu_ia, e alu_ia_tag, e alu_ib, e alu_ib_tag, e alu_ic, e alu_ic_tag, e alu_lo_128, e alu_lt_ops_input_a, e alu_lt_ops_input_b, e alu_lt_ops_result_c, e alu_max_bits, e alu_max_value, e alu_mid, e alu_mid_bits, e alu_op_id, e alu_sel, e alu_sel_ff_lt_ops, e alu_sel_int_lt_ops, e alu_sel_is_ff, e alu_sel_lt_ops, e alu_sel_op_add, e alu_sel_op_eq, e alu_sel_op_lt, e alu_sel_op_lte, e alu_sel_op_not, e alu_sel_op_shl, e alu_sel_op_shr, e alu_sel_op_truncate, e alu_sel_tag_err, e alu_sel_trunc_gte_128, e alu_sel_trunc_lt_128, e alu_sel_trunc_non_trivial, e alu_sel_trunc_trivial, e alu_tag_ff_diff_inv, e bc_decomposition_abs_diff, e bc_decomposition_bytes, e bc_decomposition_bytes_pc_plus_1, e bc_decomposition_bytes_pc_plus_10, e bc_decomposition_bytes_pc_plus_11, e bc_decomposition_bytes_pc_plus_12, e bc_decomposition_bytes_pc_plus_13, e bc_decomposition_bytes_pc_plus_14, e bc_decomposition_bytes_pc_plus_15, e bc_decomposition_bytes_pc_plus_16, e bc_decomposition_bytes_pc_plus_17, e bc_decomposition_bytes_pc_plus_18, e bc_decomposition_bytes_pc_plus_19, e bc_decomposition_bytes_pc_plus_2, e bc_decomposition_bytes_pc_plus_20, e bc_decomposition_bytes_pc_plus_21, e bc_decomposition_bytes_pc_plus_22, e bc_decomposition_bytes_pc_plus_23, e bc_decomposition_bytes_pc_plus_24, e bc_decomposition_bytes_pc_plus_25, e bc_decomposition_bytes_pc_plus_26, e bc_decomposition_bytes_pc_plus_27, e bc_decomposition_bytes_pc_plus_28, e bc_decomposition_bytes_pc_plus_29, e bc_decomposition_bytes_pc_plus_3, e bc_decomposition_bytes_pc_plus_30, e bc_decomposition_bytes_pc_plus_31, e bc_decomposition_bytes_pc_plus_32, e bc_decomposition_bytes_pc_plus_33, e bc_decomposition_bytes_pc_plus_34, e bc_decomposition_bytes_pc_plus_35, e bc_decomposition_bytes_pc_plus_36, e bc_decomposition_bytes_pc_plus_4, e bc_decomposition_bytes_pc_plus_5, e bc_decomposition_bytes_pc_plus_6, e bc_decomposition_bytes_pc_plus_7, e bc_decomposition_bytes_pc_plus_8, e bc_decomposition_bytes_pc_plus_9, e bc_decomposition_bytes_rem_inv, e bc_decomposition_bytes_rem_min_one_inv, e bc_decomposition_bytes_remaining, e bc_decomposition_bytes_to_read, e bc_decomposition_id, e bc_decomposition_last_of_contract, e bc_decomposition_packed_field, e bc_decomposition_pc, e bc_decomposition_sel, e bc_decomposition_sel_overflow_correction_needed, e bc_decomposition_sel_packed, e bc_hashing_bytecode_id, e bc_hashing_incremental_hash, e bc_hashing_latch, e bc_hashing_output_hash, e bc_hashing_packed_field, e bc_hashing_pc_index, e bc_hashing_sel, e bc_hashing_start, e bc_retrieval_address, e bc_retrieval_artifact_hash, e bc_retrieval_bytecode_id, e bc_retrieval_current_class_id, e bc_retrieval_error, e bc_retrieval_instance_exists, e bc_retrieval_nullifier_tree_root, e bc_retrieval_private_function_root, e bc_retrieval_public_bytecode_commitment, e bc_retrieval_public_data_tree_root, e bc_retrieval_sel, e bitwise_acc_ia, e bitwise_acc_ib, e bitwise_acc_ic, e bitwise_ctr, e bitwise_ctr_inv, e bitwise_ctr_min_one_inv, e bitwise_err, e bitwise_ia_byte, e bitwise_ib_byte, e bitwise_ic_byte, e bitwise_last, e bitwise_op_id, e bitwise_sel, e bitwise_sel_get_ctr, e bitwise_sel_tag_ff_err, e bitwise_sel_tag_mismatch_err, e bitwise_start, e bitwise_tag_a, e bitwise_tag_a_inv, e bitwise_tag_ab_diff_inv, e bitwise_tag_b, e bitwise_tag_c, e calldata_context_id, e calldata_index, e calldata_latch, e calldata_sel, e calldata_value, e cd_hashing_context_id, e cd_hashing_input_0_, e cd_hashing_input_1_, e cd_hashing_input_2_, e cd_hashing_latch, e cd_hashing_length_remaining, e cd_hashing_output_hash, e cd_hashing_sel, e class_id_derivation_artifact_hash, e class_id_derivation_class_id, e class_id_derivation_private_function_root, e class_id_derivation_public_bytecode_commitment, e class_id_derivation_sel, e class_id_derivation_temp_constant_for_lookup, e context_stack_context_id, e context_stack_context_id_inv, e context_stack_contract_address, e context_stack_entered_context_id, e context_stack_is_static, e context_stack_msg_sender, e context_stack_next_pc, e context_stack_parent_calldata_addr, e context_stack_parent_calldata_size, e context_stack_parent_da_gas_limit, e context_stack_parent_da_gas_used, e context_stack_parent_id, e context_stack_parent_l2_gas_limit, e context_stack_parent_l2_gas_used, e context_stack_sel, e contract_instance_retrieval_address, e contract_instance_retrieval_current_class_id, e contract_instance_retrieval_deployer_addr, e contract_instance_retrieval_deployer_protocol_contract_address, e contract_instance_retrieval_exists, e contract_instance_retrieval_incoming_viewing_key_x, e contract_instance_retrieval_incoming_viewing_key_y, e contract_instance_retrieval_init_hash, e contract_instance_retrieval_nullifier_key_x, e contract_instance_retrieval_nullifier_key_y, e contract_instance_retrieval_nullifier_tree_root, e contract_instance_retrieval_original_class_id, e contract_instance_retrieval_outgoing_viewing_key_x, e contract_instance_retrieval_outgoing_viewing_key_y, e contract_instance_retrieval_public_data_tree_root, e contract_instance_retrieval_salt, e contract_instance_retrieval_sel, e contract_instance_retrieval_tagging_key_x, e contract_instance_retrieval_tagging_key_y, e data_copy_abs_diff_max_read_index, e data_copy_abs_max_read_offset, e data_copy_abs_read_diff, e data_copy_abs_write_diff, e data_copy_cd_copy_col_read, e data_copy_clk, e data_copy_copy_size, e data_copy_dst_addr, e data_copy_dst_context_id, e data_copy_dst_out_of_range_err, e data_copy_err, e data_copy_is_top_level, e data_copy_offset, e data_copy_operation_id, e data_copy_padding, e data_copy_parent_id_inv, e data_copy_read_addr, e data_copy_reads_left, e data_copy_reads_left_inv, e data_copy_sel_cd_copy, e data_copy_sel_end, e data_copy_sel_mem_read, e data_copy_sel_mem_write, e data_copy_sel_offset_gt_max_read, e data_copy_sel_rd_copy, e data_copy_sel_start, e data_copy_sel_start_no_err, e data_copy_src_addr, e data_copy_src_context_id, e data_copy_src_data_size, e data_copy_src_data_size_is_lt, e data_copy_src_out_of_range_err, e data_copy_thirty_two, e data_copy_value, e data_copy_write_count_minus_one_inv, e ecc_add_mem_dst_addr_0_, e ecc_add_mem_dst_addr_1_, e ecc_add_mem_dst_addr_2_, e ecc_add_mem_execution_clk, e ecc_add_mem_max_mem_addr, e ecc_add_mem_p_is_inf, e ecc_add_mem_p_x, e ecc_add_mem_p_y, e ecc_add_mem_q_is_inf, e ecc_add_mem_q_x, e ecc_add_mem_q_y, e ecc_add_mem_res_is_inf, e ecc_add_mem_res_x, e ecc_add_mem_res_y, e ecc_add_mem_sel, e ecc_add_mem_sel_dst_out_of_range_err, e ecc_add_mem_sel_should_exec, e ecc_add_mem_space_id, e ecc_add_op, e ecc_double_op, e ecc_inv_2_p_y, e ecc_inv_x_diff, e ecc_inv_y_diff, e ecc_lambda, e ecc_p_is_inf, e ecc_p_x, e ecc_p_y, e ecc_q_is_inf, e ecc_q_x, e ecc_q_y, e ecc_r_is_inf, e ecc_r_x, e ecc_r_y, e ecc_result_infinity, e ecc_sel, e ecc_use_computed_result, e ecc_x_match, e ecc_y_match, e execution_addressing_error_collection_inv, e execution_addressing_gas, e execution_base_address_tag, e execution_base_address_tag_diff_inv, e execution_base_address_val, e execution_base_da_gas, e execution_batched_tags_diff_inv, e execution_batched_tags_diff_inv_reg, e execution_bytecode_id, e execution_call_allocated_left_da_cmp_diff, e execution_call_allocated_left_l2_cmp_diff, e execution_call_is_da_gas_allocated_lt_left, e execution_call_is_l2_gas_allocated_lt_left, e execution_constant_32, e execution_constant_64, e execution_context_id, e execution_contract_address, e execution_da_gas_limit, e execution_da_gas_used, e execution_discard, e execution_dying_context_diff_inv, e execution_dying_context_id, e execution_dying_context_id_inv, e execution_dyn_gas_id, e execution_dynamic_da_gas, e execution_dynamic_da_gas_factor, e execution_dynamic_l2_gas, e execution_dynamic_l2_gas_factor, e execution_enqueued_call_end, e execution_enqueued_call_start, e execution_envvar_pi_row_idx, e execution_ex_opcode, e execution_expected_tag_reg_0_, e execution_expected_tag_reg_1_, e execution_expected_tag_reg_2_, e execution_expected_tag_reg_3_, e execution_expected_tag_reg_4_, e execution_expected_tag_reg_5_, e execution_expected_tag_reg_6_, e execution_has_parent_ctx, e execution_indirect, e execution_instr_length, e execution_internal_call_id, e execution_internal_call_return_id, e execution_internal_call_return_id_inv, e execution_is_address, e execution_is_dagasleft, e execution_is_dying_context, e execution_is_isstaticcall, e execution_is_l2gasleft, e execution_is_parent_id_inv, e execution_is_sender, e execution_is_static, e execution_is_transactionfee, e execution_l1_l2_tree_root, e execution_l1_l2_tree_size, e execution_l1_to_l2_msg_leaf_in_range, e execution_l1_to_l2_msg_tree_leaf_count, e execution_l2_gas_limit, e execution_l2_gas_used, e execution_last, e execution_last_child_returndata_addr, e execution_last_child_returndata_size, e execution_last_child_success, e execution_limit_used_da_cmp_diff, e execution_limit_used_l2_cmp_diff, e execution_max_data_writes_reached, e execution_mem_tag_reg_0_, e execution_mem_tag_reg_1_, e execution_mem_tag_reg_2_, e execution_mem_tag_reg_3_, e execution_mem_tag_reg_4_, e execution_mem_tag_reg_5_, e execution_mem_tag_reg_6_, e execution_msg_sender, e execution_nested_call_from_undiscarded_context, e execution_nested_exit_call, e execution_nested_return, e execution_next_context_id, e execution_next_internal_call_id, e execution_next_pc, e execution_note_hash_leaf_in_range, e execution_note_hash_tree_leaf_count, e execution_note_hash_tree_root, e execution_note_hash_tree_size, e execution_nullifier_tree_root, e execution_nullifier_tree_size, e execution_num_note_hashes_emitted, e execution_num_nullifiers_emitted, e execution_num_relative_operands_inv, e execution_op_0_, e execution_op_1_, e execution_op_2_, e execution_op_3_, e execution_op_4_, e execution_op_5_, e execution_op_6_, e execution_op_after_relative_0_, e execution_op_after_relative_1_, e execution_op_after_relative_2_, e execution_op_after_relative_3_, e execution_op_after_relative_4_, e execution_op_after_relative_5_, e execution_op_after_relative_6_, e execution_opcode_gas, e execution_out_of_gas_da, e execution_out_of_gas_l2, e execution_overflow_range_check_result_0_, e execution_overflow_range_check_result_1_, e execution_overflow_range_check_result_2_, e execution_overflow_range_check_result_3_, e execution_overflow_range_check_result_4_, e execution_overflow_range_check_result_5_, e execution_overflow_range_check_result_6_, e execution_parent_calldata_addr, e execution_parent_calldata_size, e execution_parent_da_gas_limit, e execution_parent_da_gas_used, e execution_parent_id, e execution_parent_l2_gas_limit, e execution_parent_l2_gas_used, e execution_pc, e execution_prev_da_gas_used, e execution_prev_l1_l2_tree_root, e execution_prev_l1_l2_tree_size, e execution_prev_l2_gas_used, e execution_prev_note_hash_tree_root, e execution_prev_note_hash_tree_size, e execution_prev_nullifier_tree_root, e execution_prev_nullifier_tree_size, e execution_prev_num_note_hashes_emitted, e execution_prev_num_nullifiers_emitted, e execution_prev_public_data_tree_root, e execution_prev_public_data_tree_size, e execution_prev_written_public_data_slots_tree_root, e execution_prev_written_public_data_slots_tree_size, e execution_propagate_discard, e execution_public_data_tree_root, e execution_public_data_tree_size, e execution_register_0_, e execution_register_1_, e execution_register_2_, e execution_register_3_, e execution_register_4_, e execution_register_5_, e execution_register_6_, e execution_remaining_data_writes_inv, e execution_remaining_note_hashes_inv, e execution_resolves_dying_context, e execution_rollback_context, e execution_rop_0_, e execution_rop_1_, e execution_rop_2_, e execution_rop_3_, e execution_rop_4_, e execution_rop_5_, e execution_rop_6_, e execution_rop_tag_0_, e execution_rop_tag_1_, e execution_rop_tag_2_, e execution_rop_tag_3_, e execution_rop_tag_4_, e execution_rop_tag_5_, e execution_rop_tag_6_, e execution_rw_reg_0_, e execution_rw_reg_1_, e execution_rw_reg_2_, e execution_rw_reg_3_, e execution_rw_reg_4_, e execution_rw_reg_5_, e execution_rw_reg_6_, e execution_sel, e execution_sel_addressing_error, e execution_sel_base_address_failure, e execution_sel_bytecode_retrieval_failure, e execution_sel_bytecode_retrieval_success, e execution_sel_do_base_check, e execution_sel_enter_call, e execution_sel_envvar_pi_lookup_col0, e execution_sel_envvar_pi_lookup_col1, e execution_sel_error, e execution_sel_execute_alu, e execution_sel_execute_bitwise, e execution_sel_execute_call, e execution_sel_execute_cast, e execution_sel_execute_data_copy, e execution_sel_execute_debug_log, e execution_sel_execute_ecc_add, e execution_sel_execute_emit_notehash, e execution_sel_execute_execution, e execution_sel_execute_get_contract_instance, e execution_sel_execute_get_env_var, e execution_sel_execute_internal_call, e execution_sel_execute_internal_return, e execution_sel_execute_jump, e execution_sel_execute_jumpi, e execution_sel_execute_keccakf1600, e execution_sel_execute_l1_to_l2_message_exists, e execution_sel_execute_mov, e execution_sel_execute_notehash_exists, e execution_sel_execute_nullifier_exists, e execution_sel_execute_poseidon2_perm, e execution_sel_execute_return, e execution_sel_execute_returndata_size, e execution_sel_execute_revert, e execution_sel_execute_set, e execution_sel_execute_sload, e execution_sel_execute_sstore, e execution_sel_execute_static_call, e execution_sel_execute_success_copy, e execution_sel_execute_to_radix, e execution_sel_exit_call, e execution_sel_failure, e execution_sel_first_row_in_context, e execution_sel_gas_bitwise, e execution_sel_gas_calldata_copy, e execution_sel_gas_emit_unencrypted_log, e execution_sel_gas_returndata_copy, e execution_sel_gas_sstore, e execution_sel_gas_to_radix, e execution_sel_instruction_fetching_failure, e execution_sel_instruction_fetching_success, e execution_sel_mem_op_reg_0_, e execution_sel_mem_op_reg_1_, e execution_sel_mem_op_reg_2_, e execution_sel_mem_op_reg_3_, e execution_sel_mem_op_reg_4_, e execution_sel_mem_op_reg_5_, e execution_sel_mem_op_reg_6_, e execution_sel_op_is_address_0_, e execution_sel_op_is_address_1_, e execution_sel_op_is_address_2_, e execution_sel_op_is_address_3_, e execution_sel_op_is_address_4_, e execution_sel_op_is_address_5_, e execution_sel_op_is_address_6_, e execution_sel_op_is_indirect_wire_0_, e execution_sel_op_is_indirect_wire_1_, e execution_sel_op_is_indirect_wire_2_, e execution_sel_op_is_indirect_wire_3_, e execution_sel_op_is_indirect_wire_4_, e execution_sel_op_is_indirect_wire_5_, e execution_sel_op_is_indirect_wire_6_, e execution_sel_op_is_indirect_wire_7_, e execution_sel_op_is_relative_effective_0_, e execution_sel_op_is_relative_effective_1_, e execution_sel_op_is_relative_effective_2_, e execution_sel_op_is_relative_effective_3_, e execution_sel_op_is_relative_effective_4_, e execution_sel_op_is_relative_effective_5_, e execution_sel_op_is_relative_effective_6_, e execution_sel_op_is_relative_wire_0_, e execution_sel_op_is_relative_wire_1_, e execution_sel_op_is_relative_wire_2_, e execution_sel_op_is_relative_wire_3_, e execution_sel_op_is_relative_wire_4_, e execution_sel_op_is_relative_wire_5_, e execution_sel_op_is_relative_wire_6_, e execution_sel_op_is_relative_wire_7_, e execution_sel_op_reg_effective_0_, e execution_sel_op_reg_effective_1_, e execution_sel_op_reg_effective_2_, e execution_sel_op_reg_effective_3_, e execution_sel_op_reg_effective_4_, e execution_sel_op_reg_effective_5_, e execution_sel_op_reg_effective_6_, e execution_sel_opcode_error, e execution_sel_opcode_failure, e execution_sel_out_of_gas, e execution_sel_register_read_error, e execution_sel_relative_overflow_0_, e execution_sel_relative_overflow_1_, e execution_sel_relative_overflow_2_, e execution_sel_relative_overflow_3_, e execution_sel_relative_overflow_4_, e execution_sel_relative_overflow_5_, e execution_sel_relative_overflow_6_, e execution_sel_should_apply_indirection_0_, e execution_sel_should_apply_indirection_1_, e execution_sel_should_apply_indirection_2_, e execution_sel_should_apply_indirection_3_, e execution_sel_should_apply_indirection_4_, e execution_sel_should_apply_indirection_5_, e execution_sel_should_apply_indirection_6_, e execution_sel_should_check_gas, e execution_sel_should_execute_opcode, e execution_sel_should_read_registers, e execution_sel_should_write_registers, e execution_sel_some_final_check_failed, e execution_sel_tag_check_reg_0_, e execution_sel_tag_check_reg_1_, e execution_sel_tag_check_reg_2_, e execution_sel_tag_check_reg_3_, e execution_sel_tag_check_reg_4_, e execution_sel_tag_check_reg_5_, e execution_sel_tag_check_reg_6_, e execution_sel_write_note_hash, e execution_sel_write_public_data, e execution_subtrace_id, e execution_subtrace_operation_id, e execution_transaction_fee, e execution_two_to_32, e execution_value_from_pi, e execution_written_public_data_slots_tree_root, e execution_written_public_data_slots_tree_size, e ff_gt_a, e ff_gt_a_hi, e ff_gt_a_lo, e ff_gt_b, e ff_gt_b_hi, e ff_gt_b_lo, e ff_gt_borrow, e ff_gt_cmp_rng_ctr, e ff_gt_cmp_rng_ctr_inv, e ff_gt_constant_128, e ff_gt_p_a_borrow, e ff_gt_p_b_borrow, e ff_gt_p_sub_a_hi, e ff_gt_p_sub_a_lo, e ff_gt_p_sub_b_hi, e ff_gt_p_sub_b_lo, e ff_gt_res_hi, e ff_gt_res_lo, e ff_gt_result, e ff_gt_sel, e ff_gt_sel_dec, e ff_gt_sel_gt, e ff_gt_sel_shift_rng, e get_contract_instance_clk, e get_contract_instance_contract_address, e get_contract_instance_dst_offset, e get_contract_instance_dst_offset_diff_max_inv, e get_contract_instance_exists_tag, e get_contract_instance_instance_exists, e get_contract_instance_is_class_id, e get_contract_instance_is_deployer, e get_contract_instance_is_init_hash, e get_contract_instance_is_valid_member_enum, e get_contract_instance_is_valid_writes_in_bounds, e get_contract_instance_member_enum, e get_contract_instance_member_tag, e get_contract_instance_member_write_offset, e get_contract_instance_nullifier_tree_root, e get_contract_instance_public_data_tree_root, e get_contract_instance_retrieved_class_id, e get_contract_instance_retrieved_deployer_addr, e get_contract_instance_retrieved_init_hash, e get_contract_instance_sel, e get_contract_instance_sel_error, e get_contract_instance_selected_member, e get_contract_instance_space_id, e gt_abs_diff, e gt_constant_128, e gt_input_a, e gt_input_b, e gt_res, e gt_sel, e instr_fetching_bd0, e instr_fetching_bd1, e instr_fetching_bd10, e instr_fetching_bd11, e instr_fetching_bd12, e instr_fetching_bd13, e instr_fetching_bd14, e instr_fetching_bd15, e instr_fetching_bd16, e instr_fetching_bd17, e instr_fetching_bd18, e instr_fetching_bd19, e instr_fetching_bd2, e instr_fetching_bd20, e instr_fetching_bd21, e instr_fetching_bd22, e instr_fetching_bd23, e instr_fetching_bd24, e instr_fetching_bd25, e instr_fetching_bd26, e instr_fetching_bd27, e instr_fetching_bd28, e instr_fetching_bd29, e instr_fetching_bd3, e instr_fetching_bd30, e instr_fetching_bd31, e instr_fetching_bd32, e instr_fetching_bd33, e instr_fetching_bd34, e instr_fetching_bd35, e instr_fetching_bd36, e instr_fetching_bd4, e instr_fetching_bd5, e instr_fetching_bd6, e instr_fetching_bd7, e instr_fetching_bd8, e instr_fetching_bd9, e instr_fetching_bytecode_id, e instr_fetching_bytecode_size, e instr_fetching_bytes_to_read, e instr_fetching_exec_opcode, e instr_fetching_indirect, e instr_fetching_instr_abs_diff, e instr_fetching_instr_out_of_range, e instr_fetching_instr_size, e instr_fetching_op1, e instr_fetching_op2, e instr_fetching_op3, e instr_fetching_op4, e instr_fetching_op5, e instr_fetching_op6, e instr_fetching_op7, e instr_fetching_opcode_out_of_range, e instr_fetching_pc, e instr_fetching_pc_abs_diff, e instr_fetching_pc_out_of_range, e instr_fetching_pc_size_in_bits, e instr_fetching_sel, e instr_fetching_sel_has_tag, e instr_fetching_sel_op_dc_0, e instr_fetching_sel_op_dc_1, e instr_fetching_sel_op_dc_10, e instr_fetching_sel_op_dc_11, e instr_fetching_sel_op_dc_12, e instr_fetching_sel_op_dc_13, e instr_fetching_sel_op_dc_14, e instr_fetching_sel_op_dc_15, e instr_fetching_sel_op_dc_16, e instr_fetching_sel_op_dc_2, e instr_fetching_sel_op_dc_3, e instr_fetching_sel_op_dc_4, e instr_fetching_sel_op_dc_5, e instr_fetching_sel_op_dc_6, e instr_fetching_sel_op_dc_7, e instr_fetching_sel_op_dc_8, e instr_fetching_sel_op_dc_9, e instr_fetching_sel_parsing_err, e instr_fetching_sel_pc_in_range, e instr_fetching_sel_tag_is_op2, e instr_fetching_tag_out_of_range, e instr_fetching_tag_value, e internal_call_stack_context_id, e internal_call_stack_entered_call_id, e internal_call_stack_id, e internal_call_stack_return_id, e internal_call_stack_return_pc, e internal_call_stack_sel, e keccak_memory_addr, e keccak_memory_clk, e keccak_memory_ctr, e keccak_memory_ctr_end, e keccak_memory_ctr_inv, e keccak_memory_ctr_min_state_size_inv, e keccak_memory_last, e keccak_memory_num_rounds, e keccak_memory_rw, e keccak_memory_sel, e keccak_memory_single_tag_error, e keccak_memory_space_id, e keccak_memory_start_read, e keccak_memory_start_write, e keccak_memory_tag, e keccak_memory_tag_error, e keccak_memory_tag_min_u64_inv, e keccak_memory_val00, e keccak_memory_val01, e keccak_memory_val02, e keccak_memory_val03, e keccak_memory_val04, e keccak_memory_val10, e keccak_memory_val11, e keccak_memory_val12, e keccak_memory_val13, e keccak_memory_val14, e keccak_memory_val20, e keccak_memory_val21, e keccak_memory_val22, e keccak_memory_val23, e keccak_memory_val24, e keccak_memory_val30, e keccak_memory_val31, e keccak_memory_val32, e keccak_memory_val33, e keccak_memory_val34, e keccak_memory_val40, e keccak_memory_val41, e keccak_memory_val42, e keccak_memory_val43, e keccak_memory_val44, e keccakf1600_bitwise_and_op_id, e keccakf1600_bitwise_xor_op_id, e keccakf1600_clk, e keccakf1600_dst_abs_diff, e keccakf1600_dst_addr, e keccakf1600_dst_out_of_range_error, e keccakf1600_error, e keccakf1600_last, e keccakf1600_rot_64_min_len_01, e keccakf1600_rot_64_min_len_03, e keccakf1600_rot_64_min_len_11, e keccakf1600_rot_64_min_len_13, e keccakf1600_rot_64_min_len_20, e keccakf1600_rot_64_min_len_22, e keccakf1600_rot_64_min_len_24, e keccakf1600_rot_64_min_len_31, e keccakf1600_rot_64_min_len_34, e keccakf1600_rot_64_min_len_42, e keccakf1600_rot_len_02, e keccakf1600_rot_len_04, e keccakf1600_rot_len_10, e keccakf1600_rot_len_12, e keccakf1600_rot_len_14, e keccakf1600_rot_len_21, e keccakf1600_rot_len_23, e keccakf1600_rot_len_30, e keccakf1600_rot_len_32, e keccakf1600_rot_len_33, e keccakf1600_rot_len_40, e keccakf1600_rot_len_41, e keccakf1600_rot_len_43, e keccakf1600_rot_len_44, e keccakf1600_round, e keccakf1600_round_cst, e keccakf1600_round_inv, e keccakf1600_sel, e keccakf1600_sel_no_error, e keccakf1600_sel_slice_read, e keccakf1600_sel_slice_write, e keccakf1600_space_id, e keccakf1600_src_abs_diff, e keccakf1600_src_addr, e keccakf1600_src_out_of_range_error, e keccakf1600_start, e keccakf1600_state_chi_00, e keccakf1600_state_chi_01, e keccakf1600_state_chi_02, e keccakf1600_state_chi_03, e keccakf1600_state_chi_04, e keccakf1600_state_chi_10, e keccakf1600_state_chi_11, e keccakf1600_state_chi_12, e keccakf1600_state_chi_13, e keccakf1600_state_chi_14, e keccakf1600_state_chi_20, e keccakf1600_state_chi_21, e keccakf1600_state_chi_22, e keccakf1600_state_chi_23, e keccakf1600_state_chi_24, e keccakf1600_state_chi_30, e keccakf1600_state_chi_31, e keccakf1600_state_chi_32, e keccakf1600_state_chi_33, e keccakf1600_state_chi_34, e keccakf1600_state_chi_40, e keccakf1600_state_chi_41, e keccakf1600_state_chi_42, e keccakf1600_state_chi_43, e keccakf1600_state_chi_44, e keccakf1600_state_in_00, e keccakf1600_state_in_01, e keccakf1600_state_in_02, e keccakf1600_state_in_03, e keccakf1600_state_in_04, e keccakf1600_state_in_10, e keccakf1600_state_in_11, e keccakf1600_state_in_12, e keccakf1600_state_in_13, e keccakf1600_state_in_14, e keccakf1600_state_in_20, e keccakf1600_state_in_21, e keccakf1600_state_in_22, e keccakf1600_state_in_23, e keccakf1600_state_in_24, e keccakf1600_state_in_30, e keccakf1600_state_in_31, e keccakf1600_state_in_32, e keccakf1600_state_in_33, e keccakf1600_state_in_34, e keccakf1600_state_in_40, e keccakf1600_state_in_41, e keccakf1600_state_in_42, e keccakf1600_state_in_43, e keccakf1600_state_in_44, e keccakf1600_state_iota_00, e keccakf1600_state_pi_and_00, e keccakf1600_state_pi_and_01, e keccakf1600_state_pi_and_02, e keccakf1600_state_pi_and_03, e keccakf1600_state_pi_and_04, e keccakf1600_state_pi_and_10, e keccakf1600_state_pi_and_11, e keccakf1600_state_pi_and_12, e keccakf1600_state_pi_and_13, e keccakf1600_state_pi_and_14, e keccakf1600_state_pi_and_20, e keccakf1600_state_pi_and_21, e keccakf1600_state_pi_and_22, e keccakf1600_state_pi_and_23, e keccakf1600_state_pi_and_24, e keccakf1600_state_pi_and_30, e keccakf1600_state_pi_and_31, e keccakf1600_state_pi_and_32, e keccakf1600_state_pi_and_33, e keccakf1600_state_pi_and_34, e keccakf1600_state_pi_and_40, e keccakf1600_state_pi_and_41, e keccakf1600_state_pi_and_42, e keccakf1600_state_pi_and_43, e keccakf1600_state_pi_and_44, e keccakf1600_state_pi_not_00, e keccakf1600_state_pi_not_01, e keccakf1600_state_pi_not_02, e keccakf1600_state_pi_not_03, e keccakf1600_state_pi_not_04, e keccakf1600_state_pi_not_10, e keccakf1600_state_pi_not_11, e keccakf1600_state_pi_not_12, e keccakf1600_state_pi_not_13, e keccakf1600_state_pi_not_14, e keccakf1600_state_pi_not_20, e keccakf1600_state_pi_not_21, e keccakf1600_state_pi_not_22, e keccakf1600_state_pi_not_23, e keccakf1600_state_pi_not_24, e keccakf1600_state_pi_not_30, e keccakf1600_state_pi_not_31, e keccakf1600_state_pi_not_32, e keccakf1600_state_pi_not_33, e keccakf1600_state_pi_not_34, e keccakf1600_state_pi_not_40, e keccakf1600_state_pi_not_41, e keccakf1600_state_pi_not_42, e keccakf1600_state_pi_not_43, e keccakf1600_state_pi_not_44, e keccakf1600_state_rho_01, e keccakf1600_state_rho_02, e keccakf1600_state_rho_03, e keccakf1600_state_rho_04, e keccakf1600_state_rho_10, e keccakf1600_state_rho_11, e keccakf1600_state_rho_12, e keccakf1600_state_rho_13, e keccakf1600_state_rho_14, e keccakf1600_state_rho_20, e keccakf1600_state_rho_21, e keccakf1600_state_rho_22, e keccakf1600_state_rho_23, e keccakf1600_state_rho_24, e keccakf1600_state_rho_30, e keccakf1600_state_rho_31, e keccakf1600_state_rho_32, e keccakf1600_state_rho_33, e keccakf1600_state_rho_34, e keccakf1600_state_rho_40, e keccakf1600_state_rho_41, e keccakf1600_state_rho_42, e keccakf1600_state_rho_43, e keccakf1600_state_rho_44, e keccakf1600_state_theta_00, e keccakf1600_state_theta_01, e keccakf1600_state_theta_02, e keccakf1600_state_theta_03, e keccakf1600_state_theta_04, e keccakf1600_state_theta_10, e keccakf1600_state_theta_11, e keccakf1600_state_theta_12, e keccakf1600_state_theta_13, e keccakf1600_state_theta_14, e keccakf1600_state_theta_20, e keccakf1600_state_theta_21, e keccakf1600_state_theta_22, e keccakf1600_state_theta_23, e keccakf1600_state_theta_24, e keccakf1600_state_theta_30, e keccakf1600_state_theta_31, e keccakf1600_state_theta_32, e keccakf1600_state_theta_33, e keccakf1600_state_theta_34, e keccakf1600_state_theta_40, e keccakf1600_state_theta_41, e keccakf1600_state_theta_42, e keccakf1600_state_theta_43, e keccakf1600_state_theta_44, e keccakf1600_state_theta_hi_01, e keccakf1600_state_theta_hi_02, e keccakf1600_state_theta_hi_03, e keccakf1600_state_theta_hi_04, e keccakf1600_state_theta_hi_10, e keccakf1600_state_theta_hi_11, e keccakf1600_state_theta_hi_12, e keccakf1600_state_theta_hi_13, e keccakf1600_state_theta_hi_14, e keccakf1600_state_theta_hi_20, e keccakf1600_state_theta_hi_21, e keccakf1600_state_theta_hi_22, e keccakf1600_state_theta_hi_23, e keccakf1600_state_theta_hi_24, e keccakf1600_state_theta_hi_30, e keccakf1600_state_theta_hi_31, e keccakf1600_state_theta_hi_32, e keccakf1600_state_theta_hi_33, e keccakf1600_state_theta_hi_34, e keccakf1600_state_theta_hi_40, e keccakf1600_state_theta_hi_41, e keccakf1600_state_theta_hi_42, e keccakf1600_state_theta_hi_43, e keccakf1600_state_theta_hi_44, e keccakf1600_state_theta_low_01, e keccakf1600_state_theta_low_02, e keccakf1600_state_theta_low_03, e keccakf1600_state_theta_low_04, e keccakf1600_state_theta_low_10, e keccakf1600_state_theta_low_11, e keccakf1600_state_theta_low_12, e keccakf1600_state_theta_low_13, e keccakf1600_state_theta_low_14, e keccakf1600_state_theta_low_20, e keccakf1600_state_theta_low_21, e keccakf1600_state_theta_low_22, e keccakf1600_state_theta_low_23, e keccakf1600_state_theta_low_24, e keccakf1600_state_theta_low_30, e keccakf1600_state_theta_low_31, e keccakf1600_state_theta_low_32, e keccakf1600_state_theta_low_33, e keccakf1600_state_theta_low_34, e keccakf1600_state_theta_low_40, e keccakf1600_state_theta_low_41, e keccakf1600_state_theta_low_42, e keccakf1600_state_theta_low_43, e keccakf1600_state_theta_low_44, e keccakf1600_tag_error, e keccakf1600_theta_combined_xor_0, e keccakf1600_theta_combined_xor_1, e keccakf1600_theta_combined_xor_2, e keccakf1600_theta_combined_xor_3, e keccakf1600_theta_combined_xor_4, e keccakf1600_theta_xor_01, e keccakf1600_theta_xor_02, e keccakf1600_theta_xor_03, e keccakf1600_theta_xor_11, e keccakf1600_theta_xor_12, e keccakf1600_theta_xor_13, e keccakf1600_theta_xor_21, e keccakf1600_theta_xor_22, e keccakf1600_theta_xor_23, e keccakf1600_theta_xor_31, e keccakf1600_theta_xor_32, e keccakf1600_theta_xor_33, e keccakf1600_theta_xor_41, e keccakf1600_theta_xor_42, e keccakf1600_theta_xor_43, e keccakf1600_theta_xor_row_0, e keccakf1600_theta_xor_row_1, e keccakf1600_theta_xor_row_2, e keccakf1600_theta_xor_row_3, e keccakf1600_theta_xor_row_4, e keccakf1600_theta_xor_row_low63_0, e keccakf1600_theta_xor_row_low63_1, e keccakf1600_theta_xor_row_low63_2, e keccakf1600_theta_xor_row_low63_3, e keccakf1600_theta_xor_row_low63_4, e keccakf1600_theta_xor_row_msb_0, e keccakf1600_theta_xor_row_msb_1, e keccakf1600_theta_xor_row_msb_2, e keccakf1600_theta_xor_row_msb_3, e keccakf1600_theta_xor_row_msb_4, e keccakf1600_theta_xor_row_rotl1_0, e keccakf1600_theta_xor_row_rotl1_1, e keccakf1600_theta_xor_row_rotl1_2, e keccakf1600_theta_xor_row_rotl1_3, e keccakf1600_theta_xor_row_rotl1_4, e keccakf1600_thirty_two, e l1_to_l2_message_tree_check_exists, e l1_to_l2_message_tree_check_l1_to_l2_message_tree_height, e l1_to_l2_message_tree_check_leaf_index, e l1_to_l2_message_tree_check_leaf_value, e l1_to_l2_message_tree_check_leaf_value_msg_hash_diff_inv, e l1_to_l2_message_tree_check_msg_hash, e l1_to_l2_message_tree_check_root, e l1_to_l2_message_tree_check_sel, e memory_address, e memory_clk, e memory_rw, e memory_sel, e memory_space_id, e memory_tag, e memory_value, e merkle_check_constant_2, e merkle_check_end, e merkle_check_index, e merkle_check_index_is_even, e merkle_check_path_len, e merkle_check_read_left_node, e merkle_check_read_node, e merkle_check_read_output_hash, e merkle_check_read_right_node, e merkle_check_read_root, e merkle_check_remaining_path_len_inv, e merkle_check_sel, e merkle_check_sibling, e merkle_check_start, e merkle_check_write, e merkle_check_write_left_node, e merkle_check_write_node, e merkle_check_write_output_hash, e merkle_check_write_right_node, e merkle_check_write_root, e note_hash_tree_check_address, e note_hash_tree_check_discard, e note_hash_tree_check_exists, e note_hash_tree_check_first_nullifier, e note_hash_tree_check_first_nullifier_pi_index, e note_hash_tree_check_leaf_index, e note_hash_tree_check_next_leaf_value, e note_hash_tree_check_next_root, e note_hash_tree_check_nonce, e note_hash_tree_check_nonce_separator, e note_hash_tree_check_note_hash, e note_hash_tree_check_note_hash_index, e note_hash_tree_check_note_hash_tree_height, e note_hash_tree_check_prev_leaf_value, e note_hash_tree_check_prev_leaf_value_unique_note_hash_diff_inv, e note_hash_tree_check_prev_root, e note_hash_tree_check_public_inputs_index, e note_hash_tree_check_sel, e note_hash_tree_check_should_silo, e note_hash_tree_check_should_unique, e note_hash_tree_check_should_write_to_public_inputs, e note_hash_tree_check_siloed_note_hash, e note_hash_tree_check_siloing_separator, e note_hash_tree_check_unique_note_hash, e note_hash_tree_check_unique_note_hash_separator, e note_hash_tree_check_write, e nullifier_check_address, e nullifier_check_discard, e nullifier_check_exists, e nullifier_check_intermediate_root, e nullifier_check_leaf_not_exists, e nullifier_check_low_leaf_hash, e nullifier_check_low_leaf_index, e nullifier_check_low_leaf_next_index, e nullifier_check_low_leaf_next_nullifier, e nullifier_check_low_leaf_nullifier, e nullifier_check_new_leaf_hash, e nullifier_check_next_nullifier_inv, e nullifier_check_next_nullifier_is_nonzero, e nullifier_check_nullifier, e nullifier_check_nullifier_index, e nullifier_check_nullifier_low_leaf_nullifier_diff_inv, e nullifier_check_public_inputs_index, e nullifier_check_root, e nullifier_check_sel, e nullifier_check_should_insert, e nullifier_check_should_silo, e nullifier_check_should_write_to_public_inputs, e nullifier_check_siloed_nullifier, e nullifier_check_siloing_separator, e nullifier_check_tree_height, e nullifier_check_tree_size_before_write, e nullifier_check_updated_low_leaf_hash, e nullifier_check_updated_low_leaf_next_index, e nullifier_check_updated_low_leaf_next_nullifier, e nullifier_check_write, e nullifier_check_write_root, e poseidon2_hash_a_0, e poseidon2_hash_a_1, e poseidon2_hash_a_2, e poseidon2_hash_a_3, e poseidon2_hash_b_0, e poseidon2_hash_b_1, e poseidon2_hash_b_2, e poseidon2_hash_b_3, e poseidon2_hash_end, e poseidon2_hash_input_0, e poseidon2_hash_input_1, e poseidon2_hash_input_2, e poseidon2_hash_input_len, e poseidon2_hash_num_perm_rounds_rem, e poseidon2_hash_num_perm_rounds_rem_inv, e poseidon2_hash_output, e poseidon2_hash_padding, e poseidon2_hash_sel, e poseidon2_hash_start, e poseidon2_perm_B_10_0, e poseidon2_perm_B_10_1, e poseidon2_perm_B_10_2, e poseidon2_perm_B_10_3, e poseidon2_perm_B_11_0, e poseidon2_perm_B_11_1, e poseidon2_perm_B_11_2, e poseidon2_perm_B_11_3, e poseidon2_perm_B_12_0, e poseidon2_perm_B_12_1, e poseidon2_perm_B_12_2, e poseidon2_perm_B_12_3, e poseidon2_perm_B_13_0, e poseidon2_perm_B_13_1, e poseidon2_perm_B_13_2, e poseidon2_perm_B_13_3, e poseidon2_perm_B_14_0, e poseidon2_perm_B_14_1, e poseidon2_perm_B_14_2, e poseidon2_perm_B_14_3, e poseidon2_perm_B_15_0, e poseidon2_perm_B_15_1, e poseidon2_perm_B_15_2, e poseidon2_perm_B_15_3, e poseidon2_perm_B_16_0, e poseidon2_perm_B_16_1, e poseidon2_perm_B_16_2, e poseidon2_perm_B_16_3, e poseidon2_perm_B_17_0, e poseidon2_perm_B_17_1, e poseidon2_perm_B_17_2, e poseidon2_perm_B_17_3, e poseidon2_perm_B_18_0, e poseidon2_perm_B_18_1, e poseidon2_perm_B_18_2, e poseidon2_perm_B_18_3, e poseidon2_perm_B_19_0, e poseidon2_perm_B_19_1, e poseidon2_perm_B_19_2, e poseidon2_perm_B_19_3, e poseidon2_perm_B_20_0, e poseidon2_perm_B_20_1, e poseidon2_perm_B_20_2, e poseidon2_perm_B_20_3, e poseidon2_perm_B_21_0, e poseidon2_perm_B_21_1, e poseidon2_perm_B_21_2, e poseidon2_perm_B_21_3, e poseidon2_perm_B_22_0, e poseidon2_perm_B_22_1, e poseidon2_perm_B_22_2, e poseidon2_perm_B_22_3, e poseidon2_perm_B_23_0, e poseidon2_perm_B_23_1, e poseidon2_perm_B_23_2, e poseidon2_perm_B_23_3, e poseidon2_perm_B_24_0, e poseidon2_perm_B_24_1, e poseidon2_perm_B_24_2, e poseidon2_perm_B_24_3, e poseidon2_perm_B_25_0, e poseidon2_perm_B_25_1, e poseidon2_perm_B_25_2, e poseidon2_perm_B_25_3, e poseidon2_perm_B_26_0, e poseidon2_perm_B_26_1, e poseidon2_perm_B_26_2, e poseidon2_perm_B_26_3, e poseidon2_perm_B_27_0, e poseidon2_perm_B_27_1, e poseidon2_perm_B_27_2, e poseidon2_perm_B_27_3, e poseidon2_perm_B_28_0, e poseidon2_perm_B_28_1, e poseidon2_perm_B_28_2, e poseidon2_perm_B_28_3, e poseidon2_perm_B_29_0, e poseidon2_perm_B_29_1, e poseidon2_perm_B_29_2, e poseidon2_perm_B_29_3, e poseidon2_perm_B_30_0, e poseidon2_perm_B_30_1, e poseidon2_perm_B_30_2, e poseidon2_perm_B_30_3, e poseidon2_perm_B_31_0, e poseidon2_perm_B_31_1, e poseidon2_perm_B_31_2, e poseidon2_perm_B_31_3, e poseidon2_perm_B_32_0, e poseidon2_perm_B_32_1, e poseidon2_perm_B_32_2, e poseidon2_perm_B_32_3, e poseidon2_perm_B_33_0, e poseidon2_perm_B_33_1, e poseidon2_perm_B_33_2, e poseidon2_perm_B_33_3, e poseidon2_perm_B_34_0, e poseidon2_perm_B_34_1, e poseidon2_perm_B_34_2, e poseidon2_perm_B_34_3, e poseidon2_perm_B_35_0, e poseidon2_perm_B_35_1, e poseidon2_perm_B_35_2, e poseidon2_perm_B_35_3, e poseidon2_perm_B_36_0, e poseidon2_perm_B_36_1, e poseidon2_perm_B_36_2, e poseidon2_perm_B_36_3, e poseidon2_perm_B_37_0, e poseidon2_perm_B_37_1, e poseidon2_perm_B_37_2, e poseidon2_perm_B_37_3, e poseidon2_perm_B_38_0, e poseidon2_perm_B_38_1, e poseidon2_perm_B_38_2, e poseidon2_perm_B_38_3, e poseidon2_perm_B_39_0, e poseidon2_perm_B_39_1, e poseidon2_perm_B_39_2, e poseidon2_perm_B_39_3, e poseidon2_perm_B_40_0, e poseidon2_perm_B_40_1, e poseidon2_perm_B_40_2, e poseidon2_perm_B_40_3, e poseidon2_perm_B_41_0, e poseidon2_perm_B_41_1, e poseidon2_perm_B_41_2, e poseidon2_perm_B_41_3, e poseidon2_perm_B_42_0, e poseidon2_perm_B_42_1, e poseidon2_perm_B_42_2, e poseidon2_perm_B_42_3, e poseidon2_perm_B_43_0, e poseidon2_perm_B_43_1, e poseidon2_perm_B_43_2, e poseidon2_perm_B_43_3, e poseidon2_perm_B_44_0, e poseidon2_perm_B_44_1, e poseidon2_perm_B_44_2, e poseidon2_perm_B_44_3, e poseidon2_perm_B_45_0, e poseidon2_perm_B_45_1, e poseidon2_perm_B_45_2, e poseidon2_perm_B_45_3, e poseidon2_perm_B_46_0, e poseidon2_perm_B_46_1, e poseidon2_perm_B_46_2, e poseidon2_perm_B_46_3, e poseidon2_perm_B_47_0, e poseidon2_perm_B_47_1, e poseidon2_perm_B_47_2, e poseidon2_perm_B_47_3, e poseidon2_perm_B_48_0, e poseidon2_perm_B_48_1, e poseidon2_perm_B_48_2, e poseidon2_perm_B_48_3, e poseidon2_perm_B_49_0, e poseidon2_perm_B_49_1, e poseidon2_perm_B_49_2, e poseidon2_perm_B_49_3, e poseidon2_perm_B_4_0, e poseidon2_perm_B_4_1, e poseidon2_perm_B_4_2, e poseidon2_perm_B_4_3, e poseidon2_perm_B_50_0, e poseidon2_perm_B_50_1, e poseidon2_perm_B_50_2, e poseidon2_perm_B_50_3, e poseidon2_perm_B_51_0, e poseidon2_perm_B_51_1, e poseidon2_perm_B_51_2, e poseidon2_perm_B_51_3, e poseidon2_perm_B_52_0, e poseidon2_perm_B_52_1, e poseidon2_perm_B_52_2, e poseidon2_perm_B_52_3, e poseidon2_perm_B_53_0, e poseidon2_perm_B_53_1, e poseidon2_perm_B_53_2, e poseidon2_perm_B_53_3, e poseidon2_perm_B_54_0, e poseidon2_perm_B_54_1, e poseidon2_perm_B_54_2, e poseidon2_perm_B_54_3, e poseidon2_perm_B_55_0, e poseidon2_perm_B_55_1, e poseidon2_perm_B_55_2, e poseidon2_perm_B_55_3, e poseidon2_perm_B_56_0, e poseidon2_perm_B_56_1, e poseidon2_perm_B_56_2, e poseidon2_perm_B_56_3, e poseidon2_perm_B_57_0, e poseidon2_perm_B_57_1, e poseidon2_perm_B_57_2, e poseidon2_perm_B_57_3, e poseidon2_perm_B_58_0, e poseidon2_perm_B_58_1, e poseidon2_perm_B_58_2, e poseidon2_perm_B_58_3, e poseidon2_perm_B_59_0, e poseidon2_perm_B_59_1, e poseidon2_perm_B_59_2, e poseidon2_perm_B_59_3, e poseidon2_perm_B_5_0, e poseidon2_perm_B_5_1, e poseidon2_perm_B_5_2, e poseidon2_perm_B_5_3, e poseidon2_perm_B_6_0, e poseidon2_perm_B_6_1, e poseidon2_perm_B_6_2, e poseidon2_perm_B_6_3, e poseidon2_perm_B_7_0, e poseidon2_perm_B_7_1, e poseidon2_perm_B_7_2, e poseidon2_perm_B_7_3, e poseidon2_perm_B_8_0, e poseidon2_perm_B_8_1, e poseidon2_perm_B_8_2, e poseidon2_perm_B_8_3, e poseidon2_perm_B_9_0, e poseidon2_perm_B_9_1, e poseidon2_perm_B_9_2, e poseidon2_perm_B_9_3, e poseidon2_perm_EXT_LAYER_4, e poseidon2_perm_EXT_LAYER_5, e poseidon2_perm_EXT_LAYER_6, e poseidon2_perm_EXT_LAYER_7, e poseidon2_perm_T_0_4, e poseidon2_perm_T_0_5, e poseidon2_perm_T_0_6, e poseidon2_perm_T_0_7, e poseidon2_perm_T_1_4, e poseidon2_perm_T_1_5, e poseidon2_perm_T_1_6, e poseidon2_perm_T_1_7, e poseidon2_perm_T_2_4, e poseidon2_perm_T_2_5, e poseidon2_perm_T_2_6, e poseidon2_perm_T_2_7, e poseidon2_perm_T_3_4, e poseidon2_perm_T_3_5, e poseidon2_perm_T_3_6, e poseidon2_perm_T_3_7, e poseidon2_perm_T_60_4, e poseidon2_perm_T_60_5, e poseidon2_perm_T_60_6, e poseidon2_perm_T_60_7, e poseidon2_perm_T_61_4, e poseidon2_perm_T_61_5, e poseidon2_perm_T_61_6, e poseidon2_perm_T_61_7, e poseidon2_perm_T_62_4, e poseidon2_perm_T_62_5, e poseidon2_perm_T_62_6, e poseidon2_perm_T_62_7, e poseidon2_perm_T_63_4, e poseidon2_perm_T_63_5, e poseidon2_perm_T_63_6, e poseidon2_perm_T_63_7, e poseidon2_perm_a_0, e poseidon2_perm_a_1, e poseidon2_perm_a_2, e poseidon2_perm_a_3, e poseidon2_perm_b_0, e poseidon2_perm_b_1, e poseidon2_perm_b_2, e poseidon2_perm_b_3, e poseidon2_perm_mem_batch_tag_inv, e poseidon2_perm_mem_err, e poseidon2_perm_mem_execution_clk, e poseidon2_perm_mem_input_0_, e poseidon2_perm_mem_input_1_, e poseidon2_perm_mem_input_2_, e poseidon2_perm_mem_input_3_, e poseidon2_perm_mem_input_tag_0_, e poseidon2_perm_mem_input_tag_1_, e poseidon2_perm_mem_input_tag_2_, e poseidon2_perm_mem_input_tag_3_, e poseidon2_perm_mem_max_mem_addr, e poseidon2_perm_mem_output_0_, e poseidon2_perm_mem_output_1_, e poseidon2_perm_mem_output_2_, e poseidon2_perm_mem_output_3_, e poseidon2_perm_mem_read_address_0_, e poseidon2_perm_mem_read_address_1_, e poseidon2_perm_mem_read_address_2_, e poseidon2_perm_mem_read_address_3_, e poseidon2_perm_mem_sel, e poseidon2_perm_mem_sel_dst_out_of_range_err, e poseidon2_perm_mem_sel_invalid_tag_err, e poseidon2_perm_mem_sel_should_exec, e poseidon2_perm_mem_sel_should_read_mem, e poseidon2_perm_mem_sel_src_out_of_range_err, e poseidon2_perm_mem_space_id, e poseidon2_perm_mem_write_address_0_, e poseidon2_perm_mem_write_address_1_, e poseidon2_perm_mem_write_address_2_, e poseidon2_perm_mem_write_address_3_, e poseidon2_perm_sel, e public_data_check_address, e public_data_check_clk, e public_data_check_clk_diff, e public_data_check_constant_32, e public_data_check_discard, e public_data_check_end, e public_data_check_intermediate_root, e public_data_check_leaf_not_exists, e public_data_check_leaf_slot, e public_data_check_leaf_slot_low_leaf_slot_diff_inv, e public_data_check_length_pi_idx, e public_data_check_low_leaf_hash, e public_data_check_low_leaf_index, e public_data_check_low_leaf_next_index, e public_data_check_low_leaf_next_slot, e public_data_check_low_leaf_slot, e public_data_check_low_leaf_value, e public_data_check_new_leaf_hash, e public_data_check_next_slot_inv, e public_data_check_next_slot_is_nonzero, e public_data_check_nondiscaded_write, e public_data_check_not_end, e public_data_check_public_data_writes_length, e public_data_check_root, e public_data_check_sel, e public_data_check_should_insert, e public_data_check_should_write_to_public_inputs, e public_data_check_siloing_separator, e public_data_check_slot, e public_data_check_tree_height, e public_data_check_tree_size_after_write, e public_data_check_tree_size_before_write, e public_data_check_updated_low_leaf_hash, e public_data_check_updated_low_leaf_next_index, e public_data_check_updated_low_leaf_next_slot, e public_data_check_updated_low_leaf_value, e public_data_check_value, e public_data_check_write, e public_data_check_write_idx, e public_data_check_write_root, e public_data_squash_check_clock, e public_data_squash_clk, e public_data_squash_clk_diff, e public_data_squash_constant_32, e public_data_squash_leaf_slot, e public_data_squash_leaf_slot_increase, e public_data_squash_sel, e public_data_squash_write_to_public_inputs, e range_check_dyn_diff, e range_check_dyn_rng_chk_bits, e range_check_dyn_rng_chk_pow_2, e range_check_is_lte_u112, e range_check_is_lte_u128, e range_check_is_lte_u16, e range_check_is_lte_u32, e range_check_is_lte_u48, e range_check_is_lte_u64, e range_check_is_lte_u80, e range_check_is_lte_u96, e range_check_rng_chk_bits, e range_check_sel, e range_check_sel_r0_16_bit_rng_lookup, e range_check_sel_r1_16_bit_rng_lookup, e range_check_sel_r2_16_bit_rng_lookup, e range_check_sel_r3_16_bit_rng_lookup, e range_check_sel_r4_16_bit_rng_lookup, e range_check_sel_r5_16_bit_rng_lookup, e range_check_sel_r6_16_bit_rng_lookup, e range_check_u16_r0, e range_check_u16_r1, e range_check_u16_r2, e range_check_u16_r3, e range_check_u16_r4, e range_check_u16_r5, e range_check_u16_r6, e range_check_u16_r7, e range_check_value, e scalar_mul_bit, e scalar_mul_bit_idx, e scalar_mul_bit_radix, e scalar_mul_end, e scalar_mul_not_end, e scalar_mul_point_inf, e scalar_mul_point_x, e scalar_mul_point_y, e scalar_mul_res_inf, e scalar_mul_res_x, e scalar_mul_res_y, e scalar_mul_scalar, e scalar_mul_sel, e scalar_mul_should_add, e scalar_mul_start, e scalar_mul_temp_inf, e scalar_mul_temp_x, e scalar_mul_temp_y, e sha256_a, e sha256_a_and_b, e sha256_a_and_b_xor_a_and_c, e sha256_a_and_c, e sha256_a_rotr_13, e sha256_a_rotr_2, e sha256_a_rotr_22, e sha256_a_rotr_2_xor_a_rotr_13, e sha256_and_sel, e sha256_b, e sha256_b_and_c, e sha256_c, e sha256_ch, e sha256_clk, e sha256_computed_w_lhs, e sha256_computed_w_rhs, e sha256_d, e sha256_e, e sha256_e_and_f, e sha256_e_rotr_11, e sha256_e_rotr_25, e sha256_e_rotr_6, e sha256_e_rotr_6_xor_e_rotr_11, e sha256_f, e sha256_g, e sha256_h, e sha256_helper_w0, e sha256_helper_w1, e sha256_helper_w10, e sha256_helper_w11, e sha256_helper_w12, e sha256_helper_w13, e sha256_helper_w14, e sha256_helper_w15, e sha256_helper_w2, e sha256_helper_w3, e sha256_helper_w4, e sha256_helper_w5, e sha256_helper_w6, e sha256_helper_w7, e sha256_helper_w8, e sha256_helper_w9, e sha256_init_a, e sha256_init_b, e sha256_init_c, e sha256_init_d, e sha256_init_e, e sha256_init_f, e sha256_init_g, e sha256_init_h, e sha256_input_offset, e sha256_is_input_round, e sha256_latch, e sha256_lhs_a_13, e sha256_lhs_a_2, e sha256_lhs_a_22, e sha256_lhs_e_11, e sha256_lhs_e_25, e sha256_lhs_e_6, e sha256_lhs_w_10, e sha256_lhs_w_17, e sha256_lhs_w_18, e sha256_lhs_w_19, e sha256_lhs_w_3, e sha256_lhs_w_7, e sha256_maj, e sha256_next_a_lhs, e sha256_next_a_rhs, e sha256_next_e_lhs, e sha256_next_e_rhs, e sha256_not_e, e sha256_not_e_and_g, e sha256_output_a_lhs, e sha256_output_a_rhs, e sha256_output_b_lhs, e sha256_output_b_rhs, e sha256_output_c_lhs, e sha256_output_c_rhs, e sha256_output_d_lhs, e sha256_output_d_rhs, e sha256_output_e_lhs, e sha256_output_e_rhs, e sha256_output_f_lhs, e sha256_output_f_rhs, e sha256_output_g_lhs, e sha256_output_g_rhs, e sha256_output_h_lhs, e sha256_output_h_rhs, e sha256_output_offset, e sha256_perform_round, e sha256_rhs_a_13, e sha256_rhs_a_2, e sha256_rhs_a_22, e sha256_rhs_e_11, e sha256_rhs_e_25, e sha256_rhs_e_6, e sha256_rhs_w_10, e sha256_rhs_w_17, e sha256_rhs_w_18, e sha256_rhs_w_19, e sha256_rhs_w_3, e sha256_rhs_w_7, e sha256_round_constant, e sha256_round_count, e sha256_rounds_remaining, e sha256_rounds_remaining_inv, e sha256_s_0, e sha256_s_1, e sha256_sel, e sha256_start, e sha256_state_offset, e sha256_w, e sha256_w_15_rotr_18, e sha256_w_15_rotr_7, e sha256_w_15_rotr_7_xor_w_15_rotr_18, e sha256_w_15_rshift_3, e sha256_w_2_rotr_17, e sha256_w_2_rotr_17_xor_w_2_rotr_19, e sha256_w_2_rotr_19, e sha256_w_2_rshift_10, e sha256_w_s_0, e sha256_w_s_1, e sha256_xor_sel, e to_radix_acc, e to_radix_acc_under_p, e to_radix_end, e to_radix_exponent, e to_radix_found, e to_radix_is_unsafe_limb, e to_radix_limb, e to_radix_limb_eq_p, e to_radix_limb_index, e to_radix_limb_lt_p, e to_radix_limb_p_diff, e to_radix_limb_radix_diff, e to_radix_not_end, e to_radix_not_padding_limb, e to_radix_p_limb, e to_radix_radix, e to_radix_rem_inverse, e to_radix_safe_limbs, e to_radix_safety_diff_inverse, e to_radix_sel, e to_radix_start, e to_radix_value, e tx_calldata_hash, e tx_context_id, e tx_contract_addr, e tx_da_gas_limit, e tx_discard, e tx_effective_fee_per_da_gas, e tx_effective_fee_per_l2_gas, e tx_end_gas_used_pi_offset, e tx_end_phase, e tx_fee, e tx_fee_juice_balance_slot, e tx_fee_juice_balances_slot, e tx_fee_juice_contract_address, e tx_fee_payer, e tx_fee_payer_balance, e tx_fee_payer_new_balance, e tx_fee_payer_pi_offset, e tx_is_collect_fee, e tx_is_l2_l1_msg_phase, e tx_is_padded, e tx_is_public_call_request, e tx_is_revertible, e tx_is_static, e tx_is_teardown_phase, e tx_is_tree_insert_phase, e tx_l2_gas_limit, e tx_l2_l1_msg_content, e tx_l2_l1_msg_contract_address, e tx_l2_l1_msg_recipient, e tx_leaf_value, e tx_msg_sender, e tx_next_context_id, e tx_next_da_gas_used, e tx_next_da_gas_used_sent_to_enqueued_call, e tx_next_l1_l2_tree_root, e tx_next_l1_l2_tree_size, e tx_next_l2_gas_used, e tx_next_l2_gas_used_sent_to_enqueued_call, e tx_next_note_hash_tree_root, e tx_next_note_hash_tree_size, e tx_next_nullifier_tree_root, e tx_next_nullifier_tree_size, e tx_next_num_note_hashes_emitted, e tx_next_num_nullifiers_emitted, e tx_next_public_data_tree_root, e tx_next_public_data_tree_size, e tx_next_written_public_data_slots_tree_root, e tx_next_written_public_data_slots_tree_size, e tx_num_l2_l1_msg_emitted, e tx_phase_value, e tx_prev_da_gas_used, e tx_prev_da_gas_used_sent_to_enqueued_call, e tx_prev_l1_l2_tree_root, e tx_prev_l1_l2_tree_size, e tx_prev_l2_gas_used, e tx_prev_l2_gas_used_sent_to_enqueued_call, e tx_prev_note_hash_tree_root, e tx_prev_note_hash_tree_size, e tx_prev_nullifier_tree_root, e tx_prev_nullifier_tree_size, e tx_prev_num_note_hashes_emitted, e tx_prev_num_nullifiers_emitted, e tx_prev_public_data_tree_root, e tx_prev_public_data_tree_size, e tx_prev_written_public_data_slots_tree_root, e tx_prev_written_public_data_slots_tree_size, e tx_read_pi_length_offset, e tx_read_pi_offset, e tx_remaining_phase_counter, e tx_remaining_phase_inv, e tx_remaining_phase_minus_one_inv, e tx_reverted, e tx_sel, e tx_sel_non_revertible_append_note_hash, e tx_sel_non_revertible_append_nullifier, e tx_sel_read_phase_length, e tx_sel_revertible_append_note_hash, e tx_sel_revertible_append_nullifier, e tx_should_note_hash_append, e tx_should_nullifier_append, e tx_start_phase, e tx_successful_msg_emit, e tx_uint32_max, e tx_write_pi_offset, e update_check_address, e update_check_current_class_id, e update_check_delayed_public_mutable_hash_slot, e update_check_delayed_public_mutable_slot, e update_check_deployer_protocol_contract_address, e update_check_hash_not_zero, e update_check_original_class_id, e update_check_public_data_tree_root, e update_check_public_leaf_index_domain_separator, e update_check_sel, e update_check_timestamp, e update_check_timestamp_is_lt_timestamp_of_change, e update_check_timestamp_of_change, e update_check_timestamp_of_change_bit_size, e update_check_timestamp_of_change_subtraction, e update_check_timestamp_pi_offset, e update_check_update_hash, e update_check_update_hash_inv, e update_check_update_hi_metadata, e update_check_update_hi_metadata_bit_size, e update_check_update_post_class_id_is_zero, e update_check_update_post_class_inv, e update_check_update_pre_class_id_is_zero, e update_check_update_pre_class_inv, e update_check_update_preimage_metadata, e update_check_update_preimage_post_class_id, e update_check_update_preimage_pre_class_id, e update_check_updated_class_ids_slot, e written_public_data_slots_tree_check_address, e written_public_data_slots_tree_check_intermediate_root, e written_public_data_slots_tree_check_leaf_not_exists, e written_public_data_slots_tree_check_leaf_slot, e written_public_data_slots_tree_check_low_leaf_hash, e written_public_data_slots_tree_check_low_leaf_index, e written_public_data_slots_tree_check_low_leaf_next_index, e written_public_data_slots_tree_check_low_leaf_next_slot, e written_public_data_slots_tree_check_low_leaf_slot, e written_public_data_slots_tree_check_new_leaf_hash, e written_public_data_slots_tree_check_next_slot_inv, e written_public_data_slots_tree_check_next_slot_is_nonzero, e written_public_data_slots_tree_check_root, e written_public_data_slots_tree_check_sel, e written_public_data_slots_tree_check_should_insert, e written_public_data_slots_tree_check_siloing_separator, e written_public_data_slots_tree_check_slot, e written_public_data_slots_tree_check_slot_low_leaf_slot_diff_inv, e written_public_data_slots_tree_check_tree_height, e written_public_data_slots_tree_check_tree_size_after_write, e written_public_data_slots_tree_check_tree_size_before_write, e written_public_data_slots_tree_check_updated_low_leaf_hash, e written_public_data_slots_tree_check_updated_low_leaf_next_index, e written_public_data_slots_tree_check_updated_low_leaf_next_slot, e written_public_data_slots_tree_check_write, e written_public_data_slots_tree_check_write_root, e lookup_range_check_dyn_rng_chk_pow_2_counts, e lookup_range_check_dyn_diff_is_u16_counts, e lookup_range_check_r0_is_u16_counts, e lookup_range_check_r1_is_u16_counts, e lookup_range_check_r2_is_u16_counts, e lookup_range_check_r3_is_u16_counts, e lookup_range_check_r4_is_u16_counts, e lookup_range_check_r5_is_u16_counts, e lookup_range_check_r6_is_u16_counts, e lookup_range_check_r7_is_u16_counts, e lookup_ff_gt_a_lo_range_counts, e lookup_ff_gt_a_hi_range_counts, e lookup_gt_gt_range_counts, e lookup_alu_register_tag_value_counts, e lookup_alu_tag_max_bits_value_counts, e lookup_alu_ff_gt_counts, e lookup_alu_int_gt_counts, e lookup_alu_exec_dispatching_cast_counts, e lookup_alu_exec_dispatching_set_counts, e lookup_alu_large_trunc_canonical_dec_counts, e lookup_alu_range_check_trunc_mid_counts, e lookup_bitwise_integral_tag_length_counts, e lookup_bitwise_byte_operations_counts, e lookup_bitwise_dispatch_exec_bitwise_counts, e lookup_keccak_memory_slice_to_mem_counts, e lookup_keccakf1600_theta_xor_01_counts, e lookup_keccakf1600_theta_xor_02_counts, e lookup_keccakf1600_theta_xor_03_counts, e lookup_keccakf1600_theta_xor_row_0_counts, e lookup_keccakf1600_theta_xor_11_counts, e lookup_keccakf1600_theta_xor_12_counts, e lookup_keccakf1600_theta_xor_13_counts, e lookup_keccakf1600_theta_xor_row_1_counts, e lookup_keccakf1600_theta_xor_21_counts, e lookup_keccakf1600_theta_xor_22_counts, e lookup_keccakf1600_theta_xor_23_counts, e lookup_keccakf1600_theta_xor_row_2_counts, e lookup_keccakf1600_theta_xor_31_counts, e lookup_keccakf1600_theta_xor_32_counts, e lookup_keccakf1600_theta_xor_33_counts, e lookup_keccakf1600_theta_xor_row_3_counts, e lookup_keccakf1600_theta_xor_41_counts, e lookup_keccakf1600_theta_xor_42_counts, e lookup_keccakf1600_theta_xor_43_counts, e lookup_keccakf1600_theta_xor_row_4_counts, e lookup_keccakf1600_theta_combined_xor_0_counts, e lookup_keccakf1600_theta_combined_xor_1_counts, e lookup_keccakf1600_theta_combined_xor_2_counts, e lookup_keccakf1600_theta_combined_xor_3_counts, e lookup_keccakf1600_theta_combined_xor_4_counts, e lookup_keccakf1600_state_theta_00_counts, e lookup_keccakf1600_state_theta_01_counts, e lookup_keccakf1600_state_theta_02_counts, e lookup_keccakf1600_state_theta_03_counts, e lookup_keccakf1600_state_theta_04_counts, e lookup_keccakf1600_state_theta_10_counts, e lookup_keccakf1600_state_theta_11_counts, e lookup_keccakf1600_state_theta_12_counts, e lookup_keccakf1600_state_theta_13_counts, e lookup_keccakf1600_state_theta_14_counts, e lookup_keccakf1600_state_theta_20_counts, e lookup_keccakf1600_state_theta_21_counts, e lookup_keccakf1600_state_theta_22_counts, e lookup_keccakf1600_state_theta_23_counts, e lookup_keccakf1600_state_theta_24_counts, e lookup_keccakf1600_state_theta_30_counts, e lookup_keccakf1600_state_theta_31_counts, e lookup_keccakf1600_state_theta_32_counts, e lookup_keccakf1600_state_theta_33_counts, e lookup_keccakf1600_state_theta_34_counts, e lookup_keccakf1600_state_theta_40_counts, e lookup_keccakf1600_state_theta_41_counts, e lookup_keccakf1600_state_theta_42_counts, e lookup_keccakf1600_state_theta_43_counts, e lookup_keccakf1600_state_theta_44_counts, e lookup_keccakf1600_theta_limb_02_range_counts, e lookup_keccakf1600_theta_limb_04_range_counts, e lookup_keccakf1600_theta_limb_10_range_counts, e lookup_keccakf1600_theta_limb_12_range_counts, e lookup_keccakf1600_theta_limb_14_range_counts, e lookup_keccakf1600_theta_limb_21_range_counts, e lookup_keccakf1600_theta_limb_23_range_counts, e lookup_keccakf1600_theta_limb_30_range_counts, e lookup_keccakf1600_theta_limb_32_range_counts, e lookup_keccakf1600_theta_limb_33_range_counts, e lookup_keccakf1600_theta_limb_40_range_counts, e lookup_keccakf1600_theta_limb_41_range_counts, e lookup_keccakf1600_theta_limb_43_range_counts, e lookup_keccakf1600_theta_limb_44_range_counts, e lookup_keccakf1600_theta_limb_01_range_counts, e lookup_keccakf1600_theta_limb_03_range_counts, e lookup_keccakf1600_theta_limb_11_range_counts, e lookup_keccakf1600_theta_limb_13_range_counts, e lookup_keccakf1600_theta_limb_20_range_counts, e lookup_keccakf1600_theta_limb_22_range_counts, e lookup_keccakf1600_theta_limb_24_range_counts, e lookup_keccakf1600_theta_limb_31_range_counts, e lookup_keccakf1600_theta_limb_34_range_counts, e lookup_keccakf1600_theta_limb_42_range_counts, e lookup_keccakf1600_state_pi_and_00_counts, e lookup_keccakf1600_state_pi_and_01_counts, e lookup_keccakf1600_state_pi_and_02_counts, e lookup_keccakf1600_state_pi_and_03_counts, e lookup_keccakf1600_state_pi_and_04_counts, e lookup_keccakf1600_state_pi_and_10_counts, e lookup_keccakf1600_state_pi_and_11_counts, e lookup_keccakf1600_state_pi_and_12_counts, e lookup_keccakf1600_state_pi_and_13_counts, e lookup_keccakf1600_state_pi_and_14_counts, e lookup_keccakf1600_state_pi_and_20_counts, e lookup_keccakf1600_state_pi_and_21_counts, e lookup_keccakf1600_state_pi_and_22_counts, e lookup_keccakf1600_state_pi_and_23_counts, e lookup_keccakf1600_state_pi_and_24_counts, e lookup_keccakf1600_state_pi_and_30_counts, e lookup_keccakf1600_state_pi_and_31_counts, e lookup_keccakf1600_state_pi_and_32_counts, e lookup_keccakf1600_state_pi_and_33_counts, e lookup_keccakf1600_state_pi_and_34_counts, e lookup_keccakf1600_state_pi_and_40_counts, e lookup_keccakf1600_state_pi_and_41_counts, e lookup_keccakf1600_state_pi_and_42_counts, e lookup_keccakf1600_state_pi_and_43_counts, e lookup_keccakf1600_state_pi_and_44_counts, e lookup_keccakf1600_state_chi_00_counts, e lookup_keccakf1600_state_chi_01_counts, e lookup_keccakf1600_state_chi_02_counts, e lookup_keccakf1600_state_chi_03_counts, e lookup_keccakf1600_state_chi_04_counts, e lookup_keccakf1600_state_chi_10_counts, e lookup_keccakf1600_state_chi_11_counts, e lookup_keccakf1600_state_chi_12_counts, e lookup_keccakf1600_state_chi_13_counts, e lookup_keccakf1600_state_chi_14_counts, e lookup_keccakf1600_state_chi_20_counts, e lookup_keccakf1600_state_chi_21_counts, e lookup_keccakf1600_state_chi_22_counts, e lookup_keccakf1600_state_chi_23_counts, e lookup_keccakf1600_state_chi_24_counts, e lookup_keccakf1600_state_chi_30_counts, e lookup_keccakf1600_state_chi_31_counts, e lookup_keccakf1600_state_chi_32_counts, e lookup_keccakf1600_state_chi_33_counts, e lookup_keccakf1600_state_chi_34_counts, e lookup_keccakf1600_state_chi_40_counts, e lookup_keccakf1600_state_chi_41_counts, e lookup_keccakf1600_state_chi_42_counts, e lookup_keccakf1600_state_chi_43_counts, e lookup_keccakf1600_state_chi_44_counts, e lookup_keccakf1600_round_cst_counts, e lookup_keccakf1600_state_iota_00_counts, e lookup_keccakf1600_src_abs_diff_positive_counts, e lookup_keccakf1600_dst_abs_diff_positive_counts, e lookup_sha256_round_constant_counts, e lookup_ecc_mem_check_dst_addr_in_range_counts, e lookup_ecc_mem_input_output_ecc_add_counts, e lookup_ecc_mem_write_mem_0_counts, e lookup_ecc_mem_write_mem_1_counts, e lookup_ecc_mem_write_mem_2_counts, e lookup_poseidon2_mem_check_src_addr_in_range_counts, e lookup_poseidon2_mem_check_dst_addr_in_range_counts, e lookup_poseidon2_mem_pos_read_mem_0_counts, e lookup_poseidon2_mem_pos_read_mem_1_counts, e lookup_poseidon2_mem_pos_read_mem_2_counts, e lookup_poseidon2_mem_pos_read_mem_3_counts, e lookup_poseidon2_mem_input_output_poseidon2_perm_counts, e lookup_poseidon2_mem_pos_write_mem_0_counts, e lookup_poseidon2_mem_pos_write_mem_1_counts, e lookup_poseidon2_mem_pos_write_mem_2_counts, e lookup_poseidon2_mem_pos_write_mem_3_counts, e lookup_to_radix_limb_range_counts, e lookup_to_radix_limb_less_than_radix_range_counts, e lookup_to_radix_fetch_safe_limbs_counts, e lookup_to_radix_fetch_p_limb_counts, e lookup_to_radix_limb_p_diff_range_counts, e lookup_scalar_mul_to_radix_counts, e lookup_scalar_mul_double_counts, e lookup_scalar_mul_add_counts, e lookup_context_ctx_stack_call_counts, e lookup_context_ctx_stack_rollback_counts, e lookup_context_ctx_stack_return_counts, e lookup_poseidon2_hash_poseidon2_perm_counts, e lookup_calldata_hashing_cd_hash_counts, e lookup_calldata_hashing_cd_hash_end_counts, e lookup_data_copy_range_max_read_size_diff_counts, e lookup_data_copy_range_read_counts, e lookup_data_copy_range_write_counts, e lookup_data_copy_range_reads_left_counts, e lookup_data_copy_mem_write_counts, e lookup_data_copy_mem_read_counts, e lookup_data_copy_col_read_counts, e lookup_addressing_base_address_from_memory_counts, e lookup_addressing_relative_overflow_range_0_counts, e lookup_addressing_relative_overflow_range_1_counts, e lookup_addressing_relative_overflow_range_2_counts, e lookup_addressing_relative_overflow_range_3_counts, e lookup_addressing_relative_overflow_range_4_counts, e lookup_addressing_relative_overflow_range_5_counts, e lookup_addressing_relative_overflow_range_6_counts, e lookup_addressing_indirect_from_memory_0_counts, e lookup_addressing_indirect_from_memory_1_counts, e lookup_addressing_indirect_from_memory_2_counts, e lookup_addressing_indirect_from_memory_3_counts, e lookup_addressing_indirect_from_memory_4_counts, e lookup_addressing_indirect_from_memory_5_counts, e lookup_addressing_indirect_from_memory_6_counts, e lookup_registers_mem_op_0_counts, e lookup_registers_mem_op_1_counts, e lookup_registers_mem_op_2_counts, e lookup_registers_mem_op_3_counts, e lookup_registers_mem_op_4_counts, e lookup_registers_mem_op_5_counts, e lookup_registers_mem_op_6_counts, e lookup_gas_addressing_gas_read_counts, e lookup_gas_limit_used_l2_range_counts, e lookup_gas_limit_used_da_range_counts, e lookup_merkle_check_merkle_poseidon2_read_counts, e lookup_merkle_check_merkle_poseidon2_write_counts, e lookup_nullifier_check_silo_poseidon2_counts, e lookup_nullifier_check_low_leaf_poseidon2_counts, e lookup_nullifier_check_updated_low_leaf_poseidon2_counts, e lookup_nullifier_check_low_leaf_merkle_check_counts, e lookup_nullifier_check_low_leaf_nullifier_validation_counts, e lookup_nullifier_check_low_leaf_next_nullifier_validation_counts, e lookup_nullifier_check_new_leaf_poseidon2_counts, e lookup_nullifier_check_new_leaf_merkle_check_counts, e lookup_nullifier_check_write_nullifier_to_public_inputs_counts, e lookup_public_data_check_silo_poseidon2_counts, e lookup_public_data_check_low_leaf_slot_validation_counts, e lookup_public_data_check_low_leaf_next_slot_validation_counts, e lookup_public_data_check_low_leaf_poseidon2_0_counts, e lookup_public_data_check_low_leaf_poseidon2_1_counts, e lookup_public_data_check_updated_low_leaf_poseidon2_0_counts, e lookup_public_data_check_updated_low_leaf_poseidon2_1_counts, e lookup_public_data_check_low_leaf_merkle_check_counts, e lookup_public_data_check_new_leaf_poseidon2_0_counts, e lookup_public_data_check_new_leaf_poseidon2_1_counts, e lookup_public_data_check_new_leaf_merkle_check_counts, e lookup_public_data_check_write_public_data_to_public_inputs_counts, e lookup_written_public_data_slots_tree_check_silo_poseidon2_counts, e lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_counts, e lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_counts, e lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_counts, e lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_counts, e lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_counts, e lookup_l1_to_l2_message_tree_check_merkle_check_counts, e lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts, e lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts, e lookup_address_derivation_partial_address_poseidon2_counts, e lookup_address_derivation_public_keys_hash_poseidon2_0_counts, e lookup_address_derivation_public_keys_hash_poseidon2_1_counts, e lookup_address_derivation_public_keys_hash_poseidon2_2_counts, e lookup_address_derivation_public_keys_hash_poseidon2_3_counts, e lookup_address_derivation_public_keys_hash_poseidon2_4_counts, e lookup_address_derivation_preaddress_poseidon2_counts, e lookup_address_derivation_preaddress_scalar_mul_counts, e lookup_address_derivation_address_ecadd_counts, e lookup_bc_decomposition_bytes_are_bytes_counts, e lookup_bc_decomposition_abs_diff_is_u16_counts, e lookup_bc_hashing_get_packed_field_counts, e lookup_bc_hashing_iv_is_len_counts, e lookup_update_check_timestamp_from_public_inputs_counts, e lookup_update_check_delayed_public_mutable_slot_poseidon2_counts, e lookup_update_check_update_hash_public_data_read_counts, e lookup_update_check_update_hash_poseidon2_counts, e lookup_update_check_update_hi_metadata_range_counts, e lookup_update_check_update_lo_metadata_range_counts, e lookup_update_check_timestamp_of_change_cmp_range_counts, e lookup_contract_instance_retrieval_deployment_nullifier_read_counts, e lookup_contract_instance_retrieval_address_derivation_counts, e lookup_contract_instance_retrieval_update_check_counts, e lookup_bc_retrieval_contract_instance_retrieval_counts, e lookup_bc_retrieval_class_id_derivation_counts, e lookup_instr_fetching_pc_abs_diff_positive_counts, e lookup_instr_fetching_instr_abs_diff_positive_counts, e lookup_instr_fetching_tag_value_validation_counts, e lookup_instr_fetching_bytecode_size_from_bc_dec_counts, e lookup_instr_fetching_bytes_from_bc_dec_counts, e lookup_instr_fetching_wire_instruction_info_counts, e lookup_class_id_derivation_class_id_poseidon2_0_counts, e lookup_class_id_derivation_class_id_poseidon2_1_counts, e lookup_get_env_var_precomputed_info_counts, e lookup_get_env_var_read_from_public_inputs_col0_counts, e lookup_get_env_var_read_from_public_inputs_col1_counts, e lookup_get_contract_instance_precomputed_info_counts, e lookup_get_contract_instance_contract_instance_retrieval_counts, e lookup_get_contract_instance_mem_write_contract_instance_exists_counts, e lookup_get_contract_instance_mem_write_contract_instance_member_counts, e lookup_internal_call_push_call_stack_counts, e lookup_internal_call_unwind_call_stack_counts, e lookup_external_call_call_allocated_left_l2_range_counts, e lookup_external_call_call_allocated_left_da_range_counts, e lookup_sload_storage_read_counts, e lookup_sstore_record_written_storage_slot_counts, e lookup_sstore_storage_write_counts, e lookup_note_hash_tree_check_silo_poseidon2_counts, e lookup_note_hash_tree_check_read_first_nullifier_counts, e lookup_note_hash_tree_check_nonce_computation_poseidon2_counts, e lookup_note_hash_tree_check_unique_note_hash_poseidon2_counts, e lookup_note_hash_tree_check_merkle_check_counts, e lookup_note_hash_tree_check_write_note_hash_to_public_inputs_counts, e lookup_notehash_exists_note_hash_leaf_index_in_range_counts, e lookup_notehash_exists_note_hash_read_counts, e lookup_emit_notehash_notehash_tree_write_counts, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_counts, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_counts, e lookup_nullifier_exists_nullifier_exists_check_counts, e lookup_execution_bytecode_retrieval_result_counts, e lookup_execution_instruction_fetching_result_counts, e lookup_execution_instruction_fetching_body_counts, e lookup_execution_exec_spec_read_counts, e lookup_execution_dyn_l2_factor_bitwise_counts, e lookup_execution_check_written_storage_slot_counts, e lookup_tx_read_phase_table_counts, e lookup_tx_phase_jump_on_revert_counts, e lookup_tx_read_phase_length_counts, e lookup_tx_read_public_call_request_phase_counts, e lookup_tx_read_tree_insert_value_counts, e lookup_tx_note_hash_append_counts, e lookup_tx_nullifier_append_counts, e lookup_tx_read_l2_l1_msg_counts, e lookup_tx_write_l2_l1_msg_counts, e lookup_tx_read_effective_fee_public_inputs_counts, e lookup_tx_read_fee_payer_public_inputs_counts, e lookup_tx_balance_slot_poseidon2_counts, e lookup_tx_balance_validation_counts +#define AVM2_DERIVED_WITNESS_ENTITIES_E(e) e perm_keccakf1600_read_to_slice_inv, e perm_keccakf1600_write_to_slice_inv, e perm_ecc_mem_dispatch_exec_ecc_add_inv, e perm_poseidon2_mem_dispatch_exec_pos2_inv, e perm_public_data_check_squashing_inv, e perm_execution_dispatch_keccakf1600_inv, e perm_execution_dispatch_get_contract_instance_inv, e lookup_range_check_dyn_rng_chk_pow_2_inv, e lookup_range_check_dyn_diff_is_u16_inv, e lookup_range_check_r0_is_u16_inv, e lookup_range_check_r1_is_u16_inv, e lookup_range_check_r2_is_u16_inv, e lookup_range_check_r3_is_u16_inv, e lookup_range_check_r4_is_u16_inv, e lookup_range_check_r5_is_u16_inv, e lookup_range_check_r6_is_u16_inv, e lookup_range_check_r7_is_u16_inv, e lookup_ff_gt_a_lo_range_inv, e lookup_ff_gt_a_hi_range_inv, e lookup_gt_gt_range_inv, e lookup_alu_register_tag_value_inv, e lookup_alu_tag_max_bits_value_inv, e lookup_alu_ff_gt_inv, e lookup_alu_int_gt_inv, e lookup_alu_exec_dispatching_cast_inv, e lookup_alu_exec_dispatching_set_inv, e lookup_alu_large_trunc_canonical_dec_inv, e lookup_alu_range_check_trunc_mid_inv, e lookup_bitwise_integral_tag_length_inv, e lookup_bitwise_byte_operations_inv, e lookup_bitwise_dispatch_exec_bitwise_inv, e lookup_keccak_memory_slice_to_mem_inv, e lookup_keccakf1600_theta_xor_01_inv, e lookup_keccakf1600_theta_xor_02_inv, e lookup_keccakf1600_theta_xor_03_inv, e lookup_keccakf1600_theta_xor_row_0_inv, e lookup_keccakf1600_theta_xor_11_inv, e lookup_keccakf1600_theta_xor_12_inv, e lookup_keccakf1600_theta_xor_13_inv, e lookup_keccakf1600_theta_xor_row_1_inv, e lookup_keccakf1600_theta_xor_21_inv, e lookup_keccakf1600_theta_xor_22_inv, e lookup_keccakf1600_theta_xor_23_inv, e lookup_keccakf1600_theta_xor_row_2_inv, e lookup_keccakf1600_theta_xor_31_inv, e lookup_keccakf1600_theta_xor_32_inv, e lookup_keccakf1600_theta_xor_33_inv, e lookup_keccakf1600_theta_xor_row_3_inv, e lookup_keccakf1600_theta_xor_41_inv, e lookup_keccakf1600_theta_xor_42_inv, e lookup_keccakf1600_theta_xor_43_inv, e lookup_keccakf1600_theta_xor_row_4_inv, e lookup_keccakf1600_theta_combined_xor_0_inv, e lookup_keccakf1600_theta_combined_xor_1_inv, e lookup_keccakf1600_theta_combined_xor_2_inv, e lookup_keccakf1600_theta_combined_xor_3_inv, e lookup_keccakf1600_theta_combined_xor_4_inv, e lookup_keccakf1600_state_theta_00_inv, e lookup_keccakf1600_state_theta_01_inv, e lookup_keccakf1600_state_theta_02_inv, e lookup_keccakf1600_state_theta_03_inv, e lookup_keccakf1600_state_theta_04_inv, e lookup_keccakf1600_state_theta_10_inv, e lookup_keccakf1600_state_theta_11_inv, e lookup_keccakf1600_state_theta_12_inv, e lookup_keccakf1600_state_theta_13_inv, e lookup_keccakf1600_state_theta_14_inv, e lookup_keccakf1600_state_theta_20_inv, e lookup_keccakf1600_state_theta_21_inv, e lookup_keccakf1600_state_theta_22_inv, e lookup_keccakf1600_state_theta_23_inv, e lookup_keccakf1600_state_theta_24_inv, e lookup_keccakf1600_state_theta_30_inv, e lookup_keccakf1600_state_theta_31_inv, e lookup_keccakf1600_state_theta_32_inv, e lookup_keccakf1600_state_theta_33_inv, e lookup_keccakf1600_state_theta_34_inv, e lookup_keccakf1600_state_theta_40_inv, e lookup_keccakf1600_state_theta_41_inv, e lookup_keccakf1600_state_theta_42_inv, e lookup_keccakf1600_state_theta_43_inv, e lookup_keccakf1600_state_theta_44_inv, e lookup_keccakf1600_theta_limb_02_range_inv, e lookup_keccakf1600_theta_limb_04_range_inv, e lookup_keccakf1600_theta_limb_10_range_inv, e lookup_keccakf1600_theta_limb_12_range_inv, e lookup_keccakf1600_theta_limb_14_range_inv, e lookup_keccakf1600_theta_limb_21_range_inv, e lookup_keccakf1600_theta_limb_23_range_inv, e lookup_keccakf1600_theta_limb_30_range_inv, e lookup_keccakf1600_theta_limb_32_range_inv, e lookup_keccakf1600_theta_limb_33_range_inv, e lookup_keccakf1600_theta_limb_40_range_inv, e lookup_keccakf1600_theta_limb_41_range_inv, e lookup_keccakf1600_theta_limb_43_range_inv, e lookup_keccakf1600_theta_limb_44_range_inv, e lookup_keccakf1600_theta_limb_01_range_inv, e lookup_keccakf1600_theta_limb_03_range_inv, e lookup_keccakf1600_theta_limb_11_range_inv, e lookup_keccakf1600_theta_limb_13_range_inv, e lookup_keccakf1600_theta_limb_20_range_inv, e lookup_keccakf1600_theta_limb_22_range_inv, e lookup_keccakf1600_theta_limb_24_range_inv, e lookup_keccakf1600_theta_limb_31_range_inv, e lookup_keccakf1600_theta_limb_34_range_inv, e lookup_keccakf1600_theta_limb_42_range_inv, e lookup_keccakf1600_state_pi_and_00_inv, e lookup_keccakf1600_state_pi_and_01_inv, e lookup_keccakf1600_state_pi_and_02_inv, e lookup_keccakf1600_state_pi_and_03_inv, e lookup_keccakf1600_state_pi_and_04_inv, e lookup_keccakf1600_state_pi_and_10_inv, e lookup_keccakf1600_state_pi_and_11_inv, e lookup_keccakf1600_state_pi_and_12_inv, e lookup_keccakf1600_state_pi_and_13_inv, e lookup_keccakf1600_state_pi_and_14_inv, e lookup_keccakf1600_state_pi_and_20_inv, e lookup_keccakf1600_state_pi_and_21_inv, e lookup_keccakf1600_state_pi_and_22_inv, e lookup_keccakf1600_state_pi_and_23_inv, e lookup_keccakf1600_state_pi_and_24_inv, e lookup_keccakf1600_state_pi_and_30_inv, e lookup_keccakf1600_state_pi_and_31_inv, e lookup_keccakf1600_state_pi_and_32_inv, e lookup_keccakf1600_state_pi_and_33_inv, e lookup_keccakf1600_state_pi_and_34_inv, e lookup_keccakf1600_state_pi_and_40_inv, e lookup_keccakf1600_state_pi_and_41_inv, e lookup_keccakf1600_state_pi_and_42_inv, e lookup_keccakf1600_state_pi_and_43_inv, e lookup_keccakf1600_state_pi_and_44_inv, e lookup_keccakf1600_state_chi_00_inv, e lookup_keccakf1600_state_chi_01_inv, e lookup_keccakf1600_state_chi_02_inv, e lookup_keccakf1600_state_chi_03_inv, e lookup_keccakf1600_state_chi_04_inv, e lookup_keccakf1600_state_chi_10_inv, e lookup_keccakf1600_state_chi_11_inv, e lookup_keccakf1600_state_chi_12_inv, e lookup_keccakf1600_state_chi_13_inv, e lookup_keccakf1600_state_chi_14_inv, e lookup_keccakf1600_state_chi_20_inv, e lookup_keccakf1600_state_chi_21_inv, e lookup_keccakf1600_state_chi_22_inv, e lookup_keccakf1600_state_chi_23_inv, e lookup_keccakf1600_state_chi_24_inv, e lookup_keccakf1600_state_chi_30_inv, e lookup_keccakf1600_state_chi_31_inv, e lookup_keccakf1600_state_chi_32_inv, e lookup_keccakf1600_state_chi_33_inv, e lookup_keccakf1600_state_chi_34_inv, e lookup_keccakf1600_state_chi_40_inv, e lookup_keccakf1600_state_chi_41_inv, e lookup_keccakf1600_state_chi_42_inv, e lookup_keccakf1600_state_chi_43_inv, e lookup_keccakf1600_state_chi_44_inv, e lookup_keccakf1600_round_cst_inv, e lookup_keccakf1600_state_iota_00_inv, e lookup_keccakf1600_src_abs_diff_positive_inv, e lookup_keccakf1600_dst_abs_diff_positive_inv, e lookup_sha256_round_constant_inv, e lookup_ecc_mem_check_dst_addr_in_range_inv, e lookup_ecc_mem_input_output_ecc_add_inv, e lookup_ecc_mem_write_mem_0_inv, e lookup_ecc_mem_write_mem_1_inv, e lookup_ecc_mem_write_mem_2_inv, e lookup_poseidon2_mem_check_src_addr_in_range_inv, e lookup_poseidon2_mem_check_dst_addr_in_range_inv, e lookup_poseidon2_mem_pos_read_mem_0_inv, e lookup_poseidon2_mem_pos_read_mem_1_inv, e lookup_poseidon2_mem_pos_read_mem_2_inv, e lookup_poseidon2_mem_pos_read_mem_3_inv, e lookup_poseidon2_mem_input_output_poseidon2_perm_inv, e lookup_poseidon2_mem_pos_write_mem_0_inv, e lookup_poseidon2_mem_pos_write_mem_1_inv, e lookup_poseidon2_mem_pos_write_mem_2_inv, e lookup_poseidon2_mem_pos_write_mem_3_inv, e lookup_to_radix_limb_range_inv, e lookup_to_radix_limb_less_than_radix_range_inv, e lookup_to_radix_fetch_safe_limbs_inv, e lookup_to_radix_fetch_p_limb_inv, e lookup_to_radix_limb_p_diff_range_inv, e lookup_scalar_mul_to_radix_inv, e lookup_scalar_mul_double_inv, e lookup_scalar_mul_add_inv, e lookup_context_ctx_stack_call_inv, e lookup_context_ctx_stack_rollback_inv, e lookup_context_ctx_stack_return_inv, e lookup_poseidon2_hash_poseidon2_perm_inv, e lookup_calldata_hashing_cd_hash_inv, e lookup_calldata_hashing_cd_hash_end_inv, e lookup_data_copy_range_max_read_size_diff_inv, e lookup_data_copy_range_read_inv, e lookup_data_copy_range_write_inv, e lookup_data_copy_range_reads_left_inv, e lookup_data_copy_mem_write_inv, e lookup_data_copy_mem_read_inv, e lookup_data_copy_col_read_inv, e lookup_addressing_base_address_from_memory_inv, e lookup_addressing_relative_overflow_range_0_inv, e lookup_addressing_relative_overflow_range_1_inv, e lookup_addressing_relative_overflow_range_2_inv, e lookup_addressing_relative_overflow_range_3_inv, e lookup_addressing_relative_overflow_range_4_inv, e lookup_addressing_relative_overflow_range_5_inv, e lookup_addressing_relative_overflow_range_6_inv, e lookup_addressing_indirect_from_memory_0_inv, e lookup_addressing_indirect_from_memory_1_inv, e lookup_addressing_indirect_from_memory_2_inv, e lookup_addressing_indirect_from_memory_3_inv, e lookup_addressing_indirect_from_memory_4_inv, e lookup_addressing_indirect_from_memory_5_inv, e lookup_addressing_indirect_from_memory_6_inv, e lookup_registers_mem_op_0_inv, e lookup_registers_mem_op_1_inv, e lookup_registers_mem_op_2_inv, e lookup_registers_mem_op_3_inv, e lookup_registers_mem_op_4_inv, e lookup_registers_mem_op_5_inv, e lookup_registers_mem_op_6_inv, e lookup_gas_addressing_gas_read_inv, e lookup_gas_limit_used_l2_range_inv, e lookup_gas_limit_used_da_range_inv, e lookup_merkle_check_merkle_poseidon2_read_inv, e lookup_merkle_check_merkle_poseidon2_write_inv, e lookup_nullifier_check_silo_poseidon2_inv, e lookup_nullifier_check_low_leaf_poseidon2_inv, e lookup_nullifier_check_updated_low_leaf_poseidon2_inv, e lookup_nullifier_check_low_leaf_merkle_check_inv, e lookup_nullifier_check_low_leaf_nullifier_validation_inv, e lookup_nullifier_check_low_leaf_next_nullifier_validation_inv, e lookup_nullifier_check_new_leaf_poseidon2_inv, e lookup_nullifier_check_new_leaf_merkle_check_inv, e lookup_nullifier_check_write_nullifier_to_public_inputs_inv, e lookup_public_data_check_silo_poseidon2_inv, e lookup_public_data_check_low_leaf_slot_validation_inv, e lookup_public_data_check_low_leaf_next_slot_validation_inv, e lookup_public_data_check_low_leaf_poseidon2_0_inv, e lookup_public_data_check_low_leaf_poseidon2_1_inv, e lookup_public_data_check_updated_low_leaf_poseidon2_0_inv, e lookup_public_data_check_updated_low_leaf_poseidon2_1_inv, e lookup_public_data_check_low_leaf_merkle_check_inv, e lookup_public_data_check_new_leaf_poseidon2_0_inv, e lookup_public_data_check_new_leaf_poseidon2_1_inv, e lookup_public_data_check_new_leaf_merkle_check_inv, e lookup_public_data_check_write_public_data_to_public_inputs_inv, e lookup_written_public_data_slots_tree_check_silo_poseidon2_inv, e lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_inv, e lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_inv, e lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_inv, e lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_inv, e lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_inv, e lookup_l1_to_l2_message_tree_check_merkle_check_inv, e lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv, e lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv, e lookup_address_derivation_partial_address_poseidon2_inv, e lookup_address_derivation_public_keys_hash_poseidon2_0_inv, e lookup_address_derivation_public_keys_hash_poseidon2_1_inv, e lookup_address_derivation_public_keys_hash_poseidon2_2_inv, e lookup_address_derivation_public_keys_hash_poseidon2_3_inv, e lookup_address_derivation_public_keys_hash_poseidon2_4_inv, e lookup_address_derivation_preaddress_poseidon2_inv, e lookup_address_derivation_preaddress_scalar_mul_inv, e lookup_address_derivation_address_ecadd_inv, e lookup_bc_decomposition_bytes_are_bytes_inv, e lookup_bc_decomposition_abs_diff_is_u16_inv, e lookup_bc_hashing_get_packed_field_inv, e lookup_bc_hashing_iv_is_len_inv, e lookup_update_check_timestamp_from_public_inputs_inv, e lookup_update_check_delayed_public_mutable_slot_poseidon2_inv, e lookup_update_check_update_hash_public_data_read_inv, e lookup_update_check_update_hash_poseidon2_inv, e lookup_update_check_update_hi_metadata_range_inv, e lookup_update_check_update_lo_metadata_range_inv, e lookup_update_check_timestamp_of_change_cmp_range_inv, e lookup_contract_instance_retrieval_deployment_nullifier_read_inv, e lookup_contract_instance_retrieval_address_derivation_inv, e lookup_contract_instance_retrieval_update_check_inv, e lookup_bc_retrieval_contract_instance_retrieval_inv, e lookup_bc_retrieval_class_id_derivation_inv, e lookup_instr_fetching_pc_abs_diff_positive_inv, e lookup_instr_fetching_instr_abs_diff_positive_inv, e lookup_instr_fetching_tag_value_validation_inv, e lookup_instr_fetching_bytecode_size_from_bc_dec_inv, e lookup_instr_fetching_bytes_from_bc_dec_inv, e lookup_instr_fetching_wire_instruction_info_inv, e lookup_class_id_derivation_class_id_poseidon2_0_inv, e lookup_class_id_derivation_class_id_poseidon2_1_inv, e lookup_get_env_var_precomputed_info_inv, e lookup_get_env_var_read_from_public_inputs_col0_inv, e lookup_get_env_var_read_from_public_inputs_col1_inv, e lookup_get_contract_instance_precomputed_info_inv, e lookup_get_contract_instance_contract_instance_retrieval_inv, e lookup_get_contract_instance_mem_write_contract_instance_exists_inv, e lookup_get_contract_instance_mem_write_contract_instance_member_inv, e lookup_internal_call_push_call_stack_inv, e lookup_internal_call_unwind_call_stack_inv, e lookup_external_call_call_allocated_left_l2_range_inv, e lookup_external_call_call_allocated_left_da_range_inv, e lookup_sload_storage_read_inv, e lookup_sstore_record_written_storage_slot_inv, e lookup_sstore_storage_write_inv, e lookup_note_hash_tree_check_silo_poseidon2_inv, e lookup_note_hash_tree_check_read_first_nullifier_inv, e lookup_note_hash_tree_check_nonce_computation_poseidon2_inv, e lookup_note_hash_tree_check_unique_note_hash_poseidon2_inv, e lookup_note_hash_tree_check_merkle_check_inv, e lookup_note_hash_tree_check_write_note_hash_to_public_inputs_inv, e lookup_notehash_exists_note_hash_leaf_index_in_range_inv, e lookup_notehash_exists_note_hash_read_inv, e lookup_emit_notehash_notehash_tree_write_inv, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_inv, e lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_inv, e lookup_nullifier_exists_nullifier_exists_check_inv, e lookup_execution_bytecode_retrieval_result_inv, e lookup_execution_instruction_fetching_result_inv, e lookup_execution_instruction_fetching_body_inv, e lookup_execution_exec_spec_read_inv, e lookup_execution_dyn_l2_factor_bitwise_inv, e lookup_execution_check_written_storage_slot_inv, e lookup_tx_read_phase_table_inv, e lookup_tx_phase_jump_on_revert_inv, e lookup_tx_read_phase_length_inv, e lookup_tx_read_public_call_request_phase_inv, e lookup_tx_read_tree_insert_value_inv, e lookup_tx_note_hash_append_inv, e lookup_tx_nullifier_append_inv, e lookup_tx_read_l2_l1_msg_inv, e lookup_tx_write_l2_l1_msg_inv, e lookup_tx_read_effective_fee_public_inputs_inv, e lookup_tx_read_fee_payer_public_inputs_inv, e lookup_tx_balance_slot_poseidon2_inv, e lookup_tx_balance_validation_inv #define AVM2_SHIFTED_ENTITIES_E(e) e bc_decomposition_bytes_shift, e bc_decomposition_bytes_pc_plus_1_shift, e bc_decomposition_bytes_pc_plus_10_shift, e bc_decomposition_bytes_pc_plus_11_shift, e bc_decomposition_bytes_pc_plus_12_shift, e bc_decomposition_bytes_pc_plus_13_shift, e bc_decomposition_bytes_pc_plus_14_shift, e bc_decomposition_bytes_pc_plus_15_shift, e bc_decomposition_bytes_pc_plus_16_shift, e bc_decomposition_bytes_pc_plus_17_shift, e bc_decomposition_bytes_pc_plus_18_shift, e bc_decomposition_bytes_pc_plus_19_shift, e bc_decomposition_bytes_pc_plus_2_shift, e bc_decomposition_bytes_pc_plus_20_shift, e bc_decomposition_bytes_pc_plus_21_shift, e bc_decomposition_bytes_pc_plus_22_shift, e bc_decomposition_bytes_pc_plus_23_shift, e bc_decomposition_bytes_pc_plus_24_shift, e bc_decomposition_bytes_pc_plus_25_shift, e bc_decomposition_bytes_pc_plus_26_shift, e bc_decomposition_bytes_pc_plus_27_shift, e bc_decomposition_bytes_pc_plus_28_shift, e bc_decomposition_bytes_pc_plus_29_shift, e bc_decomposition_bytes_pc_plus_3_shift, e bc_decomposition_bytes_pc_plus_30_shift, e bc_decomposition_bytes_pc_plus_31_shift, e bc_decomposition_bytes_pc_plus_32_shift, e bc_decomposition_bytes_pc_plus_33_shift, e bc_decomposition_bytes_pc_plus_34_shift, e bc_decomposition_bytes_pc_plus_35_shift, e bc_decomposition_bytes_pc_plus_4_shift, e bc_decomposition_bytes_pc_plus_5_shift, e bc_decomposition_bytes_pc_plus_6_shift, e bc_decomposition_bytes_pc_plus_7_shift, e bc_decomposition_bytes_pc_plus_8_shift, e bc_decomposition_bytes_pc_plus_9_shift, e bc_decomposition_bytes_remaining_shift, e bc_decomposition_id_shift, e bc_decomposition_pc_shift, e bc_decomposition_sel_shift, e bc_hashing_bytecode_id_shift, e bc_hashing_incremental_hash_shift, e bc_hashing_pc_index_shift, e bc_hashing_sel_shift, e bc_hashing_start_shift, e bc_retrieval_bytecode_id_shift, e bc_retrieval_sel_shift, e bitwise_acc_ia_shift, e bitwise_acc_ib_shift, e bitwise_acc_ic_shift, e bitwise_ctr_shift, e bitwise_op_id_shift, e calldata_context_id_shift, e calldata_index_shift, e calldata_sel_shift, e cd_hashing_sel_shift, e data_copy_copy_size_shift, e data_copy_dst_addr_shift, e data_copy_read_addr_shift, e data_copy_reads_left_shift, e data_copy_sel_cd_copy_shift, e data_copy_sel_rd_copy_shift, e data_copy_sel_start_shift, e execution_context_id_shift, e execution_contract_address_shift, e execution_da_gas_limit_shift, e execution_discard_shift, e execution_dying_context_id_shift, e execution_enqueued_call_start_shift, e execution_internal_call_id_shift, e execution_internal_call_return_id_shift, e execution_is_static_shift, e execution_l2_gas_limit_shift, e execution_last_child_returndata_addr_shift, e execution_last_child_returndata_size_shift, e execution_msg_sender_shift, e execution_next_context_id_shift, e execution_next_internal_call_id_shift, e execution_parent_calldata_addr_shift, e execution_parent_calldata_size_shift, e execution_parent_da_gas_limit_shift, e execution_parent_da_gas_used_shift, e execution_parent_id_shift, e execution_parent_l2_gas_limit_shift, e execution_parent_l2_gas_used_shift, e execution_pc_shift, e execution_prev_da_gas_used_shift, e execution_prev_l2_gas_used_shift, e execution_sel_shift, e execution_sel_first_row_in_context_shift, e execution_transaction_fee_shift, e ff_gt_a_hi_shift, e ff_gt_a_lo_shift, e ff_gt_b_hi_shift, e ff_gt_b_lo_shift, e ff_gt_cmp_rng_ctr_shift, e ff_gt_p_sub_a_hi_shift, e ff_gt_p_sub_a_lo_shift, e ff_gt_p_sub_b_hi_shift, e ff_gt_p_sub_b_lo_shift, e ff_gt_sel_shift, e ff_gt_sel_dec_shift, e ff_gt_sel_gt_shift, e keccak_memory_addr_shift, e keccak_memory_clk_shift, e keccak_memory_ctr_shift, e keccak_memory_rw_shift, e keccak_memory_space_id_shift, e keccak_memory_tag_error_shift, e keccak_memory_val00_shift, e keccak_memory_val01_shift, e keccak_memory_val02_shift, e keccak_memory_val03_shift, e keccak_memory_val04_shift, e keccak_memory_val10_shift, e keccak_memory_val11_shift, e keccak_memory_val12_shift, e keccak_memory_val13_shift, e keccak_memory_val14_shift, e keccak_memory_val20_shift, e keccak_memory_val21_shift, e keccak_memory_val22_shift, e keccak_memory_val23_shift, e keccak_memory_val24_shift, e keccak_memory_val30_shift, e keccak_memory_val31_shift, e keccak_memory_val32_shift, e keccak_memory_val33_shift, e keccak_memory_val34_shift, e keccak_memory_val40_shift, e keccak_memory_val41_shift, e keccak_memory_val42_shift, e keccak_memory_val43_shift, e keccakf1600_clk_shift, e keccakf1600_dst_addr_shift, e keccakf1600_round_shift, e keccakf1600_sel_no_error_shift, e keccakf1600_space_id_shift, e keccakf1600_state_in_00_shift, e keccakf1600_state_in_01_shift, e keccakf1600_state_in_02_shift, e keccakf1600_state_in_03_shift, e keccakf1600_state_in_04_shift, e keccakf1600_state_in_10_shift, e keccakf1600_state_in_11_shift, e keccakf1600_state_in_12_shift, e keccakf1600_state_in_13_shift, e keccakf1600_state_in_14_shift, e keccakf1600_state_in_20_shift, e keccakf1600_state_in_21_shift, e keccakf1600_state_in_22_shift, e keccakf1600_state_in_23_shift, e keccakf1600_state_in_24_shift, e keccakf1600_state_in_30_shift, e keccakf1600_state_in_31_shift, e keccakf1600_state_in_32_shift, e keccakf1600_state_in_33_shift, e keccakf1600_state_in_34_shift, e keccakf1600_state_in_40_shift, e keccakf1600_state_in_41_shift, e keccakf1600_state_in_42_shift, e keccakf1600_state_in_43_shift, e keccakf1600_state_in_44_shift, e merkle_check_index_shift, e merkle_check_path_len_shift, e merkle_check_read_node_shift, e merkle_check_read_root_shift, e merkle_check_sel_shift, e merkle_check_start_shift, e merkle_check_write_shift, e merkle_check_write_node_shift, e merkle_check_write_root_shift, e poseidon2_hash_a_0_shift, e poseidon2_hash_a_1_shift, e poseidon2_hash_a_2_shift, e poseidon2_hash_a_3_shift, e poseidon2_hash_input_0_shift, e poseidon2_hash_input_1_shift, e poseidon2_hash_input_2_shift, e poseidon2_hash_num_perm_rounds_rem_shift, e poseidon2_hash_output_shift, e poseidon2_hash_sel_shift, e poseidon2_hash_start_shift, e public_data_check_clk_shift, e public_data_check_sel_shift, e public_data_check_write_idx_shift, e public_data_squash_clk_shift, e public_data_squash_leaf_slot_shift, e public_data_squash_sel_shift, e scalar_mul_bit_idx_shift, e scalar_mul_point_inf_shift, e scalar_mul_point_x_shift, e scalar_mul_point_y_shift, e scalar_mul_res_inf_shift, e scalar_mul_res_x_shift, e scalar_mul_res_y_shift, e scalar_mul_scalar_shift, e scalar_mul_sel_shift, e scalar_mul_start_shift, e scalar_mul_temp_inf_shift, e scalar_mul_temp_x_shift, e scalar_mul_temp_y_shift, e sha256_a_shift, e sha256_b_shift, e sha256_c_shift, e sha256_d_shift, e sha256_e_shift, e sha256_f_shift, e sha256_g_shift, e sha256_h_shift, e sha256_helper_w0_shift, e sha256_helper_w1_shift, e sha256_helper_w10_shift, e sha256_helper_w11_shift, e sha256_helper_w12_shift, e sha256_helper_w13_shift, e sha256_helper_w14_shift, e sha256_helper_w15_shift, e sha256_helper_w2_shift, e sha256_helper_w3_shift, e sha256_helper_w4_shift, e sha256_helper_w5_shift, e sha256_helper_w6_shift, e sha256_helper_w7_shift, e sha256_helper_w8_shift, e sha256_helper_w9_shift, e sha256_rounds_remaining_shift, e sha256_sel_shift, e sha256_start_shift, e to_radix_acc_shift, e to_radix_acc_under_p_shift, e to_radix_exponent_shift, e to_radix_limb_shift, e to_radix_limb_eq_p_shift, e to_radix_limb_index_shift, e to_radix_limb_lt_p_shift, e to_radix_not_padding_limb_shift, e to_radix_radix_shift, e to_radix_safe_limbs_shift, e to_radix_sel_shift, e to_radix_start_shift, e to_radix_value_shift, e tx_fee_shift, e tx_phase_value_shift, e tx_prev_da_gas_used_shift, e tx_prev_l2_gas_used_shift, e tx_read_pi_offset_shift, e tx_remaining_phase_counter_shift, e tx_sel_shift, e tx_start_phase_shift #define AVM2_TO_BE_SHIFTED_E(e) e bc_decomposition_bytes, e bc_decomposition_bytes_pc_plus_1, e bc_decomposition_bytes_pc_plus_10, e bc_decomposition_bytes_pc_plus_11, e bc_decomposition_bytes_pc_plus_12, e bc_decomposition_bytes_pc_plus_13, e bc_decomposition_bytes_pc_plus_14, e bc_decomposition_bytes_pc_plus_15, e bc_decomposition_bytes_pc_plus_16, e bc_decomposition_bytes_pc_plus_17, e bc_decomposition_bytes_pc_plus_18, e bc_decomposition_bytes_pc_plus_19, e bc_decomposition_bytes_pc_plus_2, e bc_decomposition_bytes_pc_plus_20, e bc_decomposition_bytes_pc_plus_21, e bc_decomposition_bytes_pc_plus_22, e bc_decomposition_bytes_pc_plus_23, e bc_decomposition_bytes_pc_plus_24, e bc_decomposition_bytes_pc_plus_25, e bc_decomposition_bytes_pc_plus_26, e bc_decomposition_bytes_pc_plus_27, e bc_decomposition_bytes_pc_plus_28, e bc_decomposition_bytes_pc_plus_29, e bc_decomposition_bytes_pc_plus_3, e bc_decomposition_bytes_pc_plus_30, e bc_decomposition_bytes_pc_plus_31, e bc_decomposition_bytes_pc_plus_32, e bc_decomposition_bytes_pc_plus_33, e bc_decomposition_bytes_pc_plus_34, e bc_decomposition_bytes_pc_plus_35, e bc_decomposition_bytes_pc_plus_4, e bc_decomposition_bytes_pc_plus_5, e bc_decomposition_bytes_pc_plus_6, e bc_decomposition_bytes_pc_plus_7, e bc_decomposition_bytes_pc_plus_8, e bc_decomposition_bytes_pc_plus_9, e bc_decomposition_bytes_remaining, e bc_decomposition_id, e bc_decomposition_pc, e bc_decomposition_sel, e bc_hashing_bytecode_id, e bc_hashing_incremental_hash, e bc_hashing_pc_index, e bc_hashing_sel, e bc_hashing_start, e bc_retrieval_bytecode_id, e bc_retrieval_sel, e bitwise_acc_ia, e bitwise_acc_ib, e bitwise_acc_ic, e bitwise_ctr, e bitwise_op_id, e calldata_context_id, e calldata_index, e calldata_sel, e cd_hashing_sel, e data_copy_copy_size, e data_copy_dst_addr, e data_copy_read_addr, e data_copy_reads_left, e data_copy_sel_cd_copy, e data_copy_sel_rd_copy, e data_copy_sel_start, e execution_context_id, e execution_contract_address, e execution_da_gas_limit, e execution_discard, e execution_dying_context_id, e execution_enqueued_call_start, e execution_internal_call_id, e execution_internal_call_return_id, e execution_is_static, e execution_l2_gas_limit, e execution_last_child_returndata_addr, e execution_last_child_returndata_size, e execution_msg_sender, e execution_next_context_id, e execution_next_internal_call_id, e execution_parent_calldata_addr, e execution_parent_calldata_size, e execution_parent_da_gas_limit, e execution_parent_da_gas_used, e execution_parent_id, e execution_parent_l2_gas_limit, e execution_parent_l2_gas_used, e execution_pc, e execution_prev_da_gas_used, e execution_prev_l2_gas_used, e execution_sel, e execution_sel_first_row_in_context, e execution_transaction_fee, e ff_gt_a_hi, e ff_gt_a_lo, e ff_gt_b_hi, e ff_gt_b_lo, e ff_gt_cmp_rng_ctr, e ff_gt_p_sub_a_hi, e ff_gt_p_sub_a_lo, e ff_gt_p_sub_b_hi, e ff_gt_p_sub_b_lo, e ff_gt_sel, e ff_gt_sel_dec, e ff_gt_sel_gt, e keccak_memory_addr, e keccak_memory_clk, e keccak_memory_ctr, e keccak_memory_rw, e keccak_memory_space_id, e keccak_memory_tag_error, e keccak_memory_val00, e keccak_memory_val01, e keccak_memory_val02, e keccak_memory_val03, e keccak_memory_val04, e keccak_memory_val10, e keccak_memory_val11, e keccak_memory_val12, e keccak_memory_val13, e keccak_memory_val14, e keccak_memory_val20, e keccak_memory_val21, e keccak_memory_val22, e keccak_memory_val23, e keccak_memory_val24, e keccak_memory_val30, e keccak_memory_val31, e keccak_memory_val32, e keccak_memory_val33, e keccak_memory_val34, e keccak_memory_val40, e keccak_memory_val41, e keccak_memory_val42, e keccak_memory_val43, e keccakf1600_clk, e keccakf1600_dst_addr, e keccakf1600_round, e keccakf1600_sel_no_error, e keccakf1600_space_id, e keccakf1600_state_in_00, e keccakf1600_state_in_01, e keccakf1600_state_in_02, e keccakf1600_state_in_03, e keccakf1600_state_in_04, e keccakf1600_state_in_10, e keccakf1600_state_in_11, e keccakf1600_state_in_12, e keccakf1600_state_in_13, e keccakf1600_state_in_14, e keccakf1600_state_in_20, e keccakf1600_state_in_21, e keccakf1600_state_in_22, e keccakf1600_state_in_23, e keccakf1600_state_in_24, e keccakf1600_state_in_30, e keccakf1600_state_in_31, e keccakf1600_state_in_32, e keccakf1600_state_in_33, e keccakf1600_state_in_34, e keccakf1600_state_in_40, e keccakf1600_state_in_41, e keccakf1600_state_in_42, e keccakf1600_state_in_43, e keccakf1600_state_in_44, e merkle_check_index, e merkle_check_path_len, e merkle_check_read_node, e merkle_check_read_root, e merkle_check_sel, e merkle_check_start, e merkle_check_write, e merkle_check_write_node, e merkle_check_write_root, e poseidon2_hash_a_0, e poseidon2_hash_a_1, e poseidon2_hash_a_2, e poseidon2_hash_a_3, e poseidon2_hash_input_0, e poseidon2_hash_input_1, e poseidon2_hash_input_2, e poseidon2_hash_num_perm_rounds_rem, e poseidon2_hash_output, e poseidon2_hash_sel, e poseidon2_hash_start, e public_data_check_clk, e public_data_check_sel, e public_data_check_write_idx, e public_data_squash_clk, e public_data_squash_leaf_slot, e public_data_squash_sel, e scalar_mul_bit_idx, e scalar_mul_point_inf, e scalar_mul_point_x, e scalar_mul_point_y, e scalar_mul_res_inf, e scalar_mul_res_x, e scalar_mul_res_y, e scalar_mul_scalar, e scalar_mul_sel, e scalar_mul_start, e scalar_mul_temp_inf, e scalar_mul_temp_x, e scalar_mul_temp_y, e sha256_a, e sha256_b, e sha256_c, e sha256_d, e sha256_e, e sha256_f, e sha256_g, e sha256_h, e sha256_helper_w0, e sha256_helper_w1, e sha256_helper_w10, e sha256_helper_w11, e sha256_helper_w12, e sha256_helper_w13, e sha256_helper_w14, e sha256_helper_w15, e sha256_helper_w2, e sha256_helper_w3, e sha256_helper_w4, e sha256_helper_w5, e sha256_helper_w6, e sha256_helper_w7, e sha256_helper_w8, e sha256_helper_w9, e sha256_rounds_remaining, e sha256_sel, e sha256_start, e to_radix_acc, e to_radix_acc_under_p, e to_radix_exponent, e to_radix_limb, e to_radix_limb_eq_p, e to_radix_limb_index, e to_radix_limb_lt_p, e to_radix_not_padding_limb, e to_radix_radix, e to_radix_safe_limbs, e to_radix_sel, e to_radix_start, e to_radix_value, e tx_fee, e tx_phase_value, e tx_prev_da_gas_used, e tx_prev_l2_gas_used, e tx_read_pi_offset, e tx_remaining_phase_counter, e tx_sel, e tx_start_phase #define AVM2_ALL_ENTITIES_E(e) AVM2_PRECOMPUTED_ENTITIES_E(e), AVM2_WIRE_ENTITIES_E(e), AVM2_DERIVED_WITNESS_ENTITIES_E(e), AVM2_SHIFTED_ENTITIES_E(e) @@ -37,8 +37,8 @@ enum class ColumnAndShifts { SENTINEL_DO_NOT_USE, }; -constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2852; -constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2602; +constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2881; +constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2631; constexpr auto TO_BE_SHIFTED_COLUMNS_ARRAY = []() { return std::array{ AVM2_TO_BE_SHIFTED_COLUMNS }; }(); constexpr auto SHIFTED_COLUMNS_ARRAY = []() { return std::array{ AVM2_SHIFTED_COLUMNS }; }(); static_assert(TO_BE_SHIFTED_COLUMNS_ARRAY.size() == SHIFTED_COLUMNS_ARRAY.size()); diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp index d8a0e0327236..4f28fb8a1e72 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp @@ -18,6 +18,7 @@ #include "relations/data_copy.hpp" #include "relations/discard.hpp" #include "relations/ecc.hpp" +#include "relations/ecc_mem.hpp" #include "relations/emit_notehash.hpp" #include "relations/execution.hpp" #include "relations/external_call.hpp" @@ -68,6 +69,7 @@ #include "relations/lookups_context.hpp" #include "relations/lookups_contract_instance_retrieval.hpp" #include "relations/lookups_data_copy.hpp" +#include "relations/lookups_ecc_mem.hpp" #include "relations/lookups_emit_notehash.hpp" #include "relations/lookups_execution.hpp" #include "relations/lookups_external_call.hpp" @@ -100,6 +102,7 @@ #include "relations/lookups_tx.hpp" #include "relations/lookups_update_check.hpp" #include "relations/lookups_written_public_data_slots_tree_check.hpp" +#include "relations/perms_ecc_mem.hpp" #include "relations/perms_execution.hpp" #include "relations/perms_keccakf1600.hpp" #include "relations/perms_poseidon2_mem.hpp" @@ -109,10 +112,10 @@ namespace bb::avm2 { struct AvmFlavorVariables { static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 125; - static constexpr size_t NUM_WITNESS_ENTITIES = 2477; + static constexpr size_t NUM_WITNESS_ENTITIES = 2506; static constexpr size_t NUM_SHIFTED_ENTITIES = 250; static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; - static constexpr size_t NUM_ALL_ENTITIES = 2852; + static constexpr size_t NUM_ALL_ENTITIES = 2881; // Need to be templated for recursive verifier template @@ -134,6 +137,7 @@ struct AvmFlavorVariables { avm2::data_copy, avm2::discard, avm2::ecc, + avm2::ecc_mem, avm2::emit_notehash, avm2::execution, avm2::external_call, @@ -235,6 +239,11 @@ struct AvmFlavorVariables { lookup_data_copy_range_read_relation, lookup_data_copy_range_reads_left_relation, lookup_data_copy_range_write_relation, + lookup_ecc_mem_check_dst_addr_in_range_relation, + lookup_ecc_mem_input_output_ecc_add_relation, + lookup_ecc_mem_write_mem_0_relation, + lookup_ecc_mem_write_mem_1_relation, + lookup_ecc_mem_write_mem_2_relation, lookup_emit_notehash_notehash_tree_write_relation, lookup_execution_bytecode_retrieval_result_relation, lookup_execution_check_written_storage_slot_relation, @@ -498,6 +507,7 @@ struct AvmFlavorVariables { lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_relation, lookup_written_public_data_slots_tree_check_silo_poseidon2_relation, lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_relation, + perm_ecc_mem_dispatch_exec_ecc_add_relation, perm_execution_dispatch_get_contract_instance_relation, perm_execution_dispatch_keccakf1600_relation, perm_keccakf1600_read_to_slice_relation, diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp new file mode 100644 index 000000000000..70a4b33a9657 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp @@ -0,0 +1,90 @@ +// AUTOGENERATED FILE +#pragma once + +#include + +#include "barretenberg/relations/relation_parameters.hpp" +#include "barretenberg/relations/relation_types.hpp" +#include "barretenberg/vm2/generated/columns.hpp" + +namespace bb::avm2 { + +template class ecc_memImpl { + public: + using FF = FF_; + + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3 }; + + template inline static bool skip(const AllEntities& in) + { + using C = ColumnAndShifts; + + return (in.get(C::ecc_add_mem_sel)).is_zero(); + } + + template + void static accumulate(ContainerOverSubrelations& evals, + const AllEntities& in, + [[maybe_unused]] const RelationParameters&, + [[maybe_unused]] const FF& scaling_factor) + { + using C = ColumnAndShifts; + + const auto constants_AVM_HIGHEST_MEM_ADDRESS = FF(4294967295UL); + + { // WRITE_INCR_DST_ADDR + using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; + auto tmp = (in.get(C::ecc_add_mem_dst_addr_1_) - + in.get(C::ecc_add_mem_sel) * (in.get(C::ecc_add_mem_dst_addr_0_) + FF(1))); + tmp *= scaling_factor; + std::get<0>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = (in.get(C::ecc_add_mem_dst_addr_2_) - + in.get(C::ecc_add_mem_sel) * (in.get(C::ecc_add_mem_dst_addr_0_) + FF(2))); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = in.get(C::ecc_add_mem_sel_dst_out_of_range_err) * + (FF(1) - in.get(C::ecc_add_mem_sel_dst_out_of_range_err)); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = + in.get(C::ecc_add_mem_sel) * (in.get(C::ecc_add_mem_max_mem_addr) - constants_AVM_HIGHEST_MEM_ADDRESS); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = (in.get(C::ecc_add_mem_sel_should_exec) - + in.get(C::ecc_add_mem_sel) * (FF(1) - in.get(C::ecc_add_mem_sel_dst_out_of_range_err))); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + } +}; + +template class ecc_mem : public Relation> { + public: + static constexpr const std::string_view NAME = "ecc_mem"; + + static std::string get_subrelation_label(size_t index) + { + switch (index) { + case 0: + return "WRITE_INCR_DST_ADDR"; + } + return std::to_string(index); + } + + // Subrelation indices constants, to be used in tests. + static constexpr size_t SR_WRITE_INCR_DST_ADDR = 0; +}; + +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp new file mode 100644 index 000000000000..49cdee593854 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp @@ -0,0 +1,142 @@ +// AUTOGENERATED FILE +#pragma once + +#include +#include +#include + +#include "../columns.hpp" +#include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/constraining/relations/interactions_base.hpp" + +namespace bb::avm2 { + +/////////////////// lookup_ecc_mem_check_dst_addr_in_range /////////////////// + +struct lookup_ecc_mem_check_dst_addr_in_range_settings_ { + static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_CHECK_DST_ADDR_IN_RANGE"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t LOOKUP_TUPLE_SIZE = 3; + static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel; + static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr Column COUNTS = Column::lookup_ecc_mem_check_dst_addr_in_range_counts; + static constexpr Column INVERSES = Column::lookup_ecc_mem_check_dst_addr_in_range_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::ecc_add_mem_dst_addr_2_, + ColumnAndShifts::ecc_add_mem_max_mem_addr, + ColumnAndShifts::ecc_add_mem_sel_dst_out_of_range_err + }; + static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, + ColumnAndShifts::gt_input_b, + ColumnAndShifts::gt_res }; +}; + +using lookup_ecc_mem_check_dst_addr_in_range_settings = + lookup_settings; +template +using lookup_ecc_mem_check_dst_addr_in_range_relation = + lookup_relation_base; + +/////////////////// lookup_ecc_mem_input_output_ecc_add /////////////////// + +struct lookup_ecc_mem_input_output_ecc_add_settings_ { + static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_INPUT_OUTPUT_ECC_ADD"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t LOOKUP_TUPLE_SIZE = 9; + static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; + static constexpr Column DST_SELECTOR = Column::ecc_sel; + static constexpr Column COUNTS = Column::lookup_ecc_mem_input_output_ecc_add_counts; + static constexpr Column INVERSES = Column::lookup_ecc_mem_input_output_ecc_add_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::ecc_add_mem_p_x, ColumnAndShifts::ecc_add_mem_p_y, ColumnAndShifts::ecc_add_mem_p_is_inf, + ColumnAndShifts::ecc_add_mem_q_x, ColumnAndShifts::ecc_add_mem_q_y, ColumnAndShifts::ecc_add_mem_q_is_inf, + ColumnAndShifts::ecc_add_mem_res_x, ColumnAndShifts::ecc_add_mem_res_y, ColumnAndShifts::ecc_add_mem_res_is_inf + }; + static constexpr std::array DST_COLUMNS = { + ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf, + ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf, + ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf + }; +}; + +using lookup_ecc_mem_input_output_ecc_add_settings = lookup_settings; +template +using lookup_ecc_mem_input_output_ecc_add_relation = + lookup_relation_base; + +/////////////////// lookup_ecc_mem_write_mem_0 /////////////////// + +struct lookup_ecc_mem_write_mem_0_settings_ { + static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_0"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t LOOKUP_TUPLE_SIZE = 6; + static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; + static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_0_counts; + static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_0_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_0_, + ColumnAndShifts::ecc_add_mem_res_x, ColumnAndShifts::precomputed_zero, + ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec + }; + static constexpr std::array DST_COLUMNS = { + ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, + ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw + }; +}; + +using lookup_ecc_mem_write_mem_0_settings = lookup_settings; +template +using lookup_ecc_mem_write_mem_0_relation = lookup_relation_base; + +/////////////////// lookup_ecc_mem_write_mem_1 /////////////////// + +struct lookup_ecc_mem_write_mem_1_settings_ { + static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_1"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t LOOKUP_TUPLE_SIZE = 6; + static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; + static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_1_counts; + static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_1_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_1_, + ColumnAndShifts::ecc_add_mem_res_y, ColumnAndShifts::precomputed_zero, + ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec + }; + static constexpr std::array DST_COLUMNS = { + ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, + ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw + }; +}; + +using lookup_ecc_mem_write_mem_1_settings = lookup_settings; +template +using lookup_ecc_mem_write_mem_1_relation = lookup_relation_base; + +/////////////////// lookup_ecc_mem_write_mem_2 /////////////////// + +struct lookup_ecc_mem_write_mem_2_settings_ { + static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_2"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t LOOKUP_TUPLE_SIZE = 6; + static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; + static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_2_counts; + static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_2_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_2_, + ColumnAndShifts::ecc_add_mem_res_is_inf, ColumnAndShifts::ecc_add_mem_sel_should_exec, + ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec + }; + static constexpr std::array DST_COLUMNS = { + ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, + ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw + }; +}; + +using lookup_ecc_mem_write_mem_2_settings = lookup_settings; +template +using lookup_ecc_mem_write_mem_2_relation = lookup_relation_base; + +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/perms_ecc_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/perms_ecc_mem.hpp new file mode 100644 index 000000000000..250ee664b80d --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/perms_ecc_mem.hpp @@ -0,0 +1,44 @@ +// AUTOGENERATED FILE +#pragma once + +#include +#include +#include + +#include "../columns.hpp" +#include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" +#include "barretenberg/vm2/constraining/relations/interactions_base.hpp" + +namespace bb::avm2 { + +/////////////////// perm_ecc_mem_dispatch_exec_ecc_add /////////////////// + +struct perm_ecc_mem_dispatch_exec_ecc_add_settings_ { + static constexpr std::string_view NAME = "PERM_ECC_MEM_DISPATCH_EXEC_ECC_ADD"; + static constexpr std::string_view RELATION_NAME = "ecc_mem"; + static constexpr size_t COLUMNS_PER_SET = 10; + static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_ecc_add; + static constexpr Column DST_SELECTOR = Column::ecc_add_mem_sel; + static constexpr Column INVERSES = Column::perm_ecc_mem_dispatch_exec_ecc_add_inv; + static constexpr std::array SRC_COLUMNS = { + ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id, + ColumnAndShifts::execution_register_0_, ColumnAndShifts::execution_register_1_, + ColumnAndShifts::execution_register_2_, ColumnAndShifts::execution_register_3_, + ColumnAndShifts::execution_register_4_, ColumnAndShifts::execution_register_5_, + ColumnAndShifts::execution_rop_6_, ColumnAndShifts::execution_sel_opcode_error + }; + static constexpr std::array DST_COLUMNS = { + ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_space_id, + ColumnAndShifts::ecc_add_mem_p_x, ColumnAndShifts::ecc_add_mem_p_y, + ColumnAndShifts::ecc_add_mem_p_is_inf, ColumnAndShifts::ecc_add_mem_q_x, + ColumnAndShifts::ecc_add_mem_q_y, ColumnAndShifts::ecc_add_mem_q_is_inf, + ColumnAndShifts::ecc_add_mem_dst_addr_0_, ColumnAndShifts::ecc_add_mem_sel_dst_out_of_range_err + }; +}; + +using perm_ecc_mem_dispatch_exec_ecc_add_settings = permutation_settings; +template +using perm_ecc_mem_dispatch_exec_ecc_add_relation = + permutation_relation_base; + +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.cpp index ab5196ccf698..52c335f9e1c3 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.cpp @@ -1,6 +1,7 @@ #include "barretenberg/vm2/simulation/ecc.hpp" #include "barretenberg/numeric/uint256/uint256.hpp" #include "barretenberg/vm2/common/field.hpp" +#include "barretenberg/vm2/common/uint1.hpp" #include "barretenberg/vm2/simulation/events/ecc_events.hpp" namespace bb::avm2::simulation { @@ -42,4 +43,47 @@ EmbeddedCurvePoint Ecc::scalar_mul(const EmbeddedCurvePoint& point, const FF& sc return result; } +void Ecc::add(MemoryInterface& memory, + const EmbeddedCurvePoint& p, + const EmbeddedCurvePoint& q, + MemoryAddress dst_address) +{ + uint32_t execution_clk = execution_id_manager.get_execution_id(); + uint32_t space_id = memory.get_space_id(); + + try { + // The resulting EmbeddedCurvePoint is a triple of (x, y, is_infinity). + // The x and y coordinates are stored at dst_address and dst_address + 1 respectively, + // and the is_infinity flag is stored at dst_address + 2. + // Therefore, the maximum address that needs to be written to is dst_address + 2. + uint64_t max_write_address = static_cast(dst_address) + 2; + if (cmp.gt(max_write_address, AVM_HIGHEST_MEM_ADDRESS)) { + throw std::runtime_error("dst address out of range"); + } + + EmbeddedCurvePoint result = add(p, q); + memory.set(dst_address, MemoryValue::from(result.x())); + memory.set(dst_address + 1, MemoryValue::from(result.y())); + memory.set(dst_address + 2, MemoryValue::from(result.is_infinity() ? 1 : 0)); + + add_memory_events.emit({ .execution_clk = execution_clk, + .space_id = space_id, + .p = p, + .q = q, + .result = result, + .dst_address = dst_address }); + } catch (const std::exception& e) { + // Note this point is not on the curve, but corresponds + // to default values the circuit will assign. + EmbeddedCurvePoint res = EmbeddedCurvePoint(0, 0, false); + add_memory_events.emit({ .execution_clk = execution_clk, + .space_id = space_id, + .p = p, + .q = q, + .result = res, + .dst_address = dst_address }); + throw EccException("Add failed: " + std::string(e.what())); + } +} + } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.hpp index b0c41fa446a4..83fdb0fd5366 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.hpp @@ -4,6 +4,9 @@ #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/simulation/events/ecc_events.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" +#include "barretenberg/vm2/simulation/gt.hpp" +#include "barretenberg/vm2/simulation/lib/execution_id_manager.hpp" +#include "barretenberg/vm2/simulation/memory.hpp" #include "barretenberg/vm2/simulation/to_radix.hpp" namespace bb::avm2::simulation { @@ -13,25 +16,42 @@ class EccInterface { virtual ~EccInterface() = default; virtual EmbeddedCurvePoint add(const EmbeddedCurvePoint& p, const EmbeddedCurvePoint& q) = 0; virtual EmbeddedCurvePoint scalar_mul(const EmbeddedCurvePoint& point, const FF& scalar) = 0; + virtual void add(MemoryInterface& memory, + const EmbeddedCurvePoint& p, + const EmbeddedCurvePoint& q, + MemoryAddress dst_address) = 0; }; class Ecc : public EccInterface { public: - Ecc(ToRadixInterface& to_radix, + Ecc(ExecutionIdManagerInterface& execution_id_manager, + GreaterThanInterface& cmp, + ToRadixInterface& to_radix, EventEmitterInterface& ecadd_event_emitter, - EventEmitterInterface& scalar_mul_event_emitter) + EventEmitterInterface& scalar_mul_event_emitter, + EventEmitterInterface& add_memory_event_emitter) : add_events(ecadd_event_emitter) , scalar_mul_events(scalar_mul_event_emitter) + , add_memory_events(add_memory_event_emitter) + , cmp(cmp) , to_radix(to_radix) + , execution_id_manager(execution_id_manager) {} EmbeddedCurvePoint add(const EmbeddedCurvePoint& p, const EmbeddedCurvePoint& q) override; EmbeddedCurvePoint scalar_mul(const EmbeddedCurvePoint& point, const FF& scalar) override; + void add(MemoryInterface& memory, + const EmbeddedCurvePoint& p, + const EmbeddedCurvePoint& q, + MemoryAddress dst_address) override; private: EventEmitterInterface& add_events; EventEmitterInterface& scalar_mul_events; + EventEmitterInterface& add_memory_events; + GreaterThanInterface& cmp; ToRadixInterface& to_radix; + ExecutionIdManagerInterface& execution_id_manager; }; } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.test.cpp index 38dbdb24e831..4b3633316f84 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/ecc.test.cpp @@ -6,6 +6,8 @@ #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/simulation/events/ecc_events.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" +#include "barretenberg/vm2/simulation/testing/mock_execution_id_manager.hpp" +#include "barretenberg/vm2/simulation/testing/mock_gt.hpp" #include "barretenberg/vm2/simulation/testing/mock_to_radix.hpp" using ::testing::AllOf; @@ -21,9 +23,14 @@ TEST(AvmSimulationEccTest, Add) { EventEmitter ecc_event_emitter; EventEmitter scalar_mul_event_emitter; + EventEmitter ecc_add_memory_event_emitter; + + StrictMock execution_id_manager; + StrictMock gt; StrictMock to_radix; - Ecc ecc(to_radix, ecc_event_emitter, scalar_mul_event_emitter); + Ecc ecc( + execution_id_manager, gt, to_radix, ecc_event_emitter, scalar_mul_event_emitter, ecc_add_memory_event_emitter); FF p_x("0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a"); FF p_y("0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60"); @@ -53,9 +60,14 @@ TEST(AvmSimulationEccTest, ScalarMul) { EventEmitter ecc_event_emitter; EventEmitter scalar_mul_event_emitter; + EventEmitter ecc_add_memory_event_emitter; + + StrictMock execution_id_manager; + StrictMock gt; StrictMock to_radix; - Ecc ecc(to_radix, ecc_event_emitter, scalar_mul_event_emitter); + Ecc ecc( + execution_id_manager, gt, to_radix, ecc_event_emitter, scalar_mul_event_emitter, ecc_add_memory_event_emitter); FF scalar("0x009242167ec31949c00cbe441cd36757607406e87844fa2c8c4364a4403e66d7"); uint256_t scalar_num = scalar; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/ecc_events.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/ecc_events.hpp index c56eb75dc78c..ccae7bbe0711 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/ecc_events.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/ecc_events.hpp @@ -1,15 +1,31 @@ #pragma once #include "barretenberg/vm2/common/field.hpp" +#include "barretenberg/vm2/common/memory_types.hpp" namespace bb::avm2::simulation { +struct EccException : public std::runtime_error { + EccException(const std::string& message) + : std::runtime_error("EccException: " + message) + {} +}; + struct EccAddEvent { EmbeddedCurvePoint p; EmbeddedCurvePoint q; EmbeddedCurvePoint result; }; +struct EccAddMemoryEvent { + uint32_t execution_clk; + uint32_t space_id; + EmbeddedCurvePoint p; + EmbeddedCurvePoint q; + EmbeddedCurvePoint result; + MemoryAddress dst_address; +}; + struct ScalarMulIntermediateState { /* Accumulated result on this bit of the scalar */ EmbeddedCurvePoint res; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/events_container.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/events_container.hpp index 2776daae6fb1..a972a3d4dbd7 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/events_container.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/events_container.hpp @@ -50,6 +50,7 @@ struct EventsContainer { EventEmitterInterface::Container sha256_compression; EventEmitterInterface::Container ecc_add; EventEmitterInterface::Container scalar_mul; + EventEmitterInterface::Container ecc_add_mem; EventEmitterInterface::Container poseidon2_hash; EventEmitterInterface::Container poseidon2_permutation; EventEmitterInterface::Container poseidon2_permutation_mem; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp index 3b1f3b16786e..c22f35d77f79 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp @@ -10,6 +10,7 @@ #include "barretenberg/common/log.hpp" #include "barretenberg/vm2/common/aztec_constants.hpp" +#include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/common/memory_types.hpp" #include "barretenberg/vm2/common/opcodes.hpp" #include "barretenberg/vm2/common/stringify.hpp" @@ -706,6 +707,42 @@ void Execution::poseidon2_permutation(ContextInterface& context, MemoryAddress s } } +void Execution::ecc_add(ContextInterface& context, + MemoryAddress p_x_addr, + MemoryAddress p_y_addr, + MemoryAddress p_inf_addr, + MemoryAddress q_x_addr, + MemoryAddress q_y_addr, + MemoryAddress q_inf_addr, + MemoryAddress dst_addr) +{ + constexpr auto opcode = ExecutionOpCode::ECADD; + auto& memory = context.get_memory(); + + // Read the points from memory. + MemoryValue p_x = memory.get(p_x_addr); + MemoryValue p_y = memory.get(p_y_addr); + MemoryValue p_inf = memory.get(p_inf_addr); + + MemoryValue q_x = memory.get(q_x_addr); + MemoryValue q_y = memory.get(q_y_addr); + MemoryValue q_inf = memory.get(q_inf_addr); + + set_and_validate_inputs(opcode, { p_x, p_y, p_inf, q_x, q_y, q_inf }); + get_gas_tracker().consume_gas(); + + // Once inputs are tag checked the conversion to EmbeddedCurvePoint is safe, on curve checks are done in the add + // method. + EmbeddedCurvePoint p = EmbeddedCurvePoint(p_x.as_ff(), p_y.as_ff(), p_inf == MemoryValue::from(1)); + EmbeddedCurvePoint q = EmbeddedCurvePoint(q_x.as_ff(), q_y.as_ff(), q_inf == MemoryValue::from(1)); + + try { + embedded_curve.add(memory, p, q, dst_addr); + } catch (const EccException& e) { + throw OpcodeExecutionException("Embedded curve add failed: " + std::string(e.what())); + } +} + // This context interface is a top-level enqueued one. // NOTE: For the moment this trace is not returning the context back. ExecutionResult Execution::execute(std::unique_ptr enqueued_call_context) @@ -961,6 +998,9 @@ void Execution::dispatch_opcode(ExecutionOpCode opcode, case ExecutionOpCode::POSEIDON2PERM: call_with_operands(&Execution::poseidon2_permutation, context, resolved_operands); break; + case ExecutionOpCode::ECADD: + call_with_operands(&Execution::ecc_add, context, resolved_operands); + break; default: // NOTE: Keep this a `std::runtime_error` so that the main loop panics. throw std::runtime_error("Tried to dispatch unknown execution opcode: " + diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp index e03acefade81..1436ef42f078 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp @@ -17,6 +17,7 @@ #include "barretenberg/vm2/simulation/context.hpp" #include "barretenberg/vm2/simulation/context_provider.hpp" #include "barretenberg/vm2/simulation/data_copy.hpp" +#include "barretenberg/vm2/simulation/ecc.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" #include "barretenberg/vm2/simulation/events/execution_event.hpp" #include "barretenberg/vm2/simulation/events/gas_event.hpp" @@ -53,6 +54,7 @@ class Execution : public ExecutionInterface { BitwiseInterface& bitwise, DataCopyInterface& data_copy, Poseidon2Interface& poseidon2, + EccInterface& ecc, ExecutionComponentsProviderInterface& execution_components, ContextProviderInterface& context_provider, const InstructionInfoDBInterface& instruction_info_db, @@ -68,6 +70,7 @@ class Execution : public ExecutionInterface { , alu(alu) , bitwise(bitwise) , poseidon2(poseidon2) + , embedded_curve(ecc) , context_provider(context_provider) , execution_id_manager(execution_id_manager) , data_copy(data_copy) @@ -143,6 +146,14 @@ class Execution : public ExecutionInterface { MemoryAddress leaf_index_addr, MemoryAddress dst_addr); void poseidon2_permutation(ContextInterface& context, MemoryAddress src_addr, MemoryAddress dst_addr); + void ecc_add(ContextInterface& context, + MemoryAddress p_x_addr, + MemoryAddress p_y_addr, + MemoryAddress p_inf_addr, + MemoryAddress q_x_addr, + MemoryAddress q_y_addr, + MemoryAddress q_inf_addr, + MemoryAddress dst_addr); protected: // Only here for testing. TODO(fcarreiro): try to improve. @@ -176,6 +187,7 @@ class Execution : public ExecutionInterface { AluInterface& alu; BitwiseInterface& bitwise; Poseidon2Interface& poseidon2; + EccInterface& embedded_curve; ContextProviderInterface& context_provider; ExecutionIdManagerInterface& execution_id_manager; DataCopyInterface& data_copy; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp index fd85f06264bb..29ada6fd2c77 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp @@ -23,6 +23,7 @@ #include "barretenberg/vm2/simulation/testing/mock_context_provider.hpp" #include "barretenberg/vm2/simulation/testing/mock_data_copy.hpp" #include "barretenberg/vm2/simulation/testing/mock_dbs.hpp" +#include "barretenberg/vm2/simulation/testing/mock_ecc.hpp" #include "barretenberg/vm2/simulation/testing/mock_execution_components.hpp" #include "barretenberg/vm2/simulation/testing/mock_execution_id_manager.hpp" #include "barretenberg/vm2/simulation/testing/mock_gas_tracker.hpp" @@ -83,10 +84,12 @@ class ExecutionSimulationTest : public ::testing::Test { StrictMock merkle_db; StrictMock greater_than; StrictMock poseidon2; + StrictMock ecc; TestingExecution execution = TestingExecution(alu, bitwise, data_copy, poseidon2, + ecc, execution_components, context_provider, instruction_info_db, @@ -659,6 +662,44 @@ TEST_F(ExecutionSimulationTest, Poseidon2Perm) execution.poseidon2_permutation(context, src_address, dst_address); } +TEST_F(ExecutionSimulationTest, EccAdd) +{ + MemoryAddress p_x_addr = 10; + MemoryAddress p_y_addr = 15; + MemoryAddress p_is_inf_addr = 25; + MemoryAddress q_x_addr = 20; + MemoryAddress q_y_addr = 30; + MemoryAddress q_is_inf_addr = 35; + MemoryAddress dst_addr = 40; + + MemoryValue p_x = MemoryValue::from(FF("0x04c95d1b26d63d46918a156cae92db1bcbc4072a27ec81dc82ea959abdbcf16a")); + MemoryValue p_y = MemoryValue::from(FF("0x035b6dd9e63c1370462c74775765d07fc21fd1093cc988149d3aa763bb3dbb60")); + EmbeddedCurvePoint p(p_x.as_ff(), p_y, false); + + MemoryValue q_x = MemoryValue::from(FF("0x009242167ec31949c00cbe441cd36757607406e87844fa2c8c4364a4403e66d7")); + MemoryValue q_y = MemoryValue::from(FF("0x0fe3016d64cfa8045609f375284b6b739b5fa282e4cbb75cc7f1687ecc7420e3")); + EmbeddedCurvePoint q(q_x.as_ff(), q_y.as_ff(), false); + + // Mock the context and memory interactions + MemoryValue zero = MemoryValue::from(0); + EXPECT_CALL(context, get_memory).WillRepeatedly(ReturnRef(memory)); + EXPECT_CALL(Const(memory), get(p_x_addr)).WillOnce(ReturnRef(p_x)); + EXPECT_CALL(memory, get(p_y_addr)).WillOnce(ReturnRef(p_y)); + EXPECT_CALL(memory, get(p_is_inf_addr)).WillOnce(ReturnRef(zero)); // p is not infinity + EXPECT_CALL(memory, get(q_x_addr)).WillOnce(ReturnRef(q_x)); + EXPECT_CALL(memory, get(q_y_addr)).WillOnce(ReturnRef(q_y)); + EXPECT_CALL(memory, get(q_is_inf_addr)).WillOnce(ReturnRef(zero)); // q is not infinity + + EXPECT_CALL(gas_tracker, consume_gas); + + // Mock the ECC add operation + // EXPECT_CALL(ecc, add(context.get_memory(), _, _, dst_addr)); + EXPECT_CALL(ecc, add(_, _, _, dst_addr)); + + // Execute the ECC add operation + execution.ecc_add(context, p_x_addr, p_y_addr, p_is_inf_addr, q_x_addr, q_y_addr, q_is_inf_addr, dst_addr); +} + } // namespace } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_ecc.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_ecc.hpp index a281201b5db2..a65076feca3f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_ecc.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_ecc.hpp @@ -14,6 +14,11 @@ class MockEcc : public EccInterface { MOCK_METHOD(EmbeddedCurvePoint, add, (const EmbeddedCurvePoint& p, const EmbeddedCurvePoint& q), (override)); MOCK_METHOD(EmbeddedCurvePoint, scalar_mul, (const EmbeddedCurvePoint& p, const FF& scalar), (override)); + MOCK_METHOD( + void, + add, + (MemoryInterface & memory, const EmbeddedCurvePoint& p, const EmbeddedCurvePoint& q, MemoryAddress dst_address), + (override)); }; } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation_helper.cpp index 5692c4044c7e..401ece4112a1 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation_helper.cpp @@ -95,6 +95,7 @@ template EventsContainer AvmSimulationHelper::simulate_with_setting typename S::template DefaultEventEmitter sha256_compression_emitter; typename S::template DefaultEventEmitter ecc_add_emitter; typename S::template DefaultEventEmitter scalar_mul_emitter; + typename S::template DefaultEventEmitter ecc_add_memory_emitter; typename S::template DefaultEventEmitter poseidon2_hash_emitter; typename S::template DefaultEventEmitter poseidon2_perm_emitter; typename S::template DefaultEventEmitter poseidon2_perm_mem_emitter; @@ -120,7 +121,6 @@ template EventsContainer AvmSimulationHelper::simulate_with_setting ExecutionIdManager execution_id_manager(1); ToRadix to_radix(to_radix_emitter); - Ecc ecc(to_radix, ecc_add_emitter, scalar_mul_emitter); RangeCheck range_check(range_check_emitter); FieldGreaterThan field_gt(range_check, field_gt_emitter); GreaterThan greater_than(field_gt, range_check, greater_than_emitter); @@ -143,6 +143,7 @@ template EventsContainer AvmSimulationHelper::simulate_with_setting Sha256 sha256(execution_id_manager, sha256_compression_emitter); KeccakF1600 keccakf1600(execution_id_manager, keccakf1600_emitter, bitwise, range_check); + Ecc ecc(execution_id_manager, greater_than, to_radix, ecc_add_emitter, scalar_mul_emitter, ecc_add_memory_emitter); AddressDerivation address_derivation(poseidon2, ecc, address_derivation_emitter); ClassIdDerivation class_id_derivation(poseidon2, class_id_derivation_emitter); HintedRawContractDB raw_contract_db(hints); @@ -199,6 +200,7 @@ template EventsContainer AvmSimulationHelper::simulate_with_setting bitwise, data_copy, poseidon2, + ecc, execution_components, context_provider, instruction_info_db, @@ -229,6 +231,7 @@ template EventsContainer AvmSimulationHelper::simulate_with_setting sha256_compression_emitter.dump_events(), ecc_add_emitter.dump_events(), scalar_mul_emitter.dump_events(), + ecc_add_memory_emitter.dump_events(), poseidon2_hash_emitter.dump_events(), poseidon2_perm_emitter.dump_events(), poseidon2_perm_mem_emitter.dump_events(), diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.cpp index 402a217994b0..2bf105a824b3 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.cpp @@ -5,7 +5,9 @@ #include "barretenberg/vm2/common/aztec_types.hpp" #include "barretenberg/vm2/common/field.hpp" +#include "barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp" #include "barretenberg/vm2/generated/relations/lookups_scalar_mul.hpp" +#include "barretenberg/vm2/generated/relations/perms_ecc_mem.hpp" #include "barretenberg/vm2/simulation/events/ecc_events.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" #include "barretenberg/vm2/tracegen/lib/interaction_def.hpp" @@ -161,10 +163,65 @@ void EccTraceBuilder::process_scalar_mul( } } +void EccTraceBuilder::process_add_with_memory( + const simulation::EventEmitterInterface::Container& events, TraceContainer& trace) +{ + using C = Column; + + uint32_t row = 0; + for (const auto& event : events) { + uint64_t dst_addr = static_cast(event.dst_address); + // Error handling, check if the destination address is out of range. + // The max write address is dst_addr + 2, since we write 3 values (x, y, is_inf). + bool dst_out_of_range_err = dst_addr + 2 > AVM_HIGHEST_MEM_ADDRESS; + + trace.set(row, + { { + { C::ecc_add_mem_sel, 1 }, + { C::ecc_add_mem_execution_clk, event.execution_clk }, + { C::ecc_add_mem_space_id, event.space_id }, + { C::ecc_add_mem_max_mem_addr, AVM_HIGHEST_MEM_ADDRESS }, + { C::ecc_add_mem_sel_dst_out_of_range_err, dst_out_of_range_err ? 1 : 0 }, + // Memory Reads + { C::ecc_add_mem_dst_addr_0_, dst_addr }, + { C::ecc_add_mem_dst_addr_1_, dst_addr + 1 }, + { C::ecc_add_mem_dst_addr_2_, dst_addr + 2 }, + // Inputs + // Point P + { C::ecc_add_mem_p_x, event.p.x() }, + { C::ecc_add_mem_p_y, event.p.y() }, + { C::ecc_add_mem_p_is_inf, event.p.is_infinity() ? 1 : 0 }, + // Point Q + { C::ecc_add_mem_q_x, event.q.x() }, + { C::ecc_add_mem_q_y, event.q.y() }, + { C::ecc_add_mem_q_is_inf, event.q.is_infinity() ? 1 : 0 }, + // Output + { C::ecc_add_mem_sel_should_exec, dst_out_of_range_err ? 0 : 1 }, + { C::ecc_add_mem_res_x, event.result.x() }, + { C::ecc_add_mem_res_y, event.result.y() }, + { C::ecc_add_mem_res_is_inf, event.result.is_infinity() }, + + } }); + + row++; + } +} + const InteractionDefinition EccTraceBuilder::interactions = InteractionDefinition() .add() .add() - .add(); + .add() + // Memory Aware Interactions + // Comparison + .add() + // Lookup into ECC Add Subtrace + .add() + // These should be permutations (Write to Mem) + .add() + .add() + .add() + // Dispatch Permutation + .add(); } // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.hpp index 379b9da39ac2..90c1f794b7e4 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/ecc_trace.hpp @@ -16,6 +16,9 @@ class EccTraceBuilder final { TraceContainer& trace); void process_scalar_mul(const simulation::EventEmitterInterface::Container& events, TraceContainer& trace); + void process_add_with_memory( + const simulation::EventEmitterInterface::Container& events, + TraceContainer& trace); static const InteractionDefinition interactions; }; diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp index a1a089aa4b41..30f0d9bb3f78 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp @@ -98,6 +98,8 @@ const std::unordered_map SUBTRACE_INFO_MAP = { { ExecutionOpCode::L1TOL2MSGEXISTS, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = AVM_EXEC_OP_ID_L1_TO_L2_MESSAGE_EXISTS } }, + // EC + { ExecutionOpCode::ECADD, { .subtrace_selector = SubtraceSel::ECC, .subtrace_operation_id = 0 } }, }; FF get_subtrace_id(SubtraceSel subtrace_sel) diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/poseidon2_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/poseidon2_trace.cpp index a98e70ec13d8..af7ab0fae9a1 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/poseidon2_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/poseidon2_trace.cpp @@ -530,6 +530,5 @@ const InteractionDefinition Poseidon2TraceBuilder::interactions = .add() // Dispatch from Execution Trace .add(); -// } // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp index 8d43d58d6706..d71ebbce49b9 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp @@ -287,6 +287,12 @@ void AvmTraceGenHelper::fill_trace_columns(TraceContainer& trace, AVM_TRACK_TIME("tracegen/scalar_mul", ecc_builder.process_scalar_mul(events.scalar_mul, trace)); clear_events(events.scalar_mul); }, + [&]() { + EccTraceBuilder ecc_builder; + AVM_TRACK_TIME("tracegen/ecc_add_memory", + ecc_builder.process_add_with_memory(events.ecc_add_mem, trace)); + clear_events(events.ecc_add_mem); + }, [&]() { Poseidon2TraceBuilder poseidon2_builder; AVM_TRACK_TIME("tracegen/poseidon2_hash",