From a5f26fd9833bdd55d64aa42eee080e3ab4e8df1e Mon Sep 17 00:00:00 2001 From: IlyasRidhuan Date: Mon, 14 Apr 2025 13:57:54 +0000 Subject: [PATCH 1/3] feat: exec opcode spec table --- barretenberg/cpp/pil/vm2/addressing.pil | 6 + barretenberg/cpp/pil/vm2/execution.pil | 25 +++- barretenberg/cpp/pil/vm2/precomputed.pil | 27 ++++ .../barretenberg/vm2/common/tagged_value.hpp | 14 +- .../constraining/relations/execution.test.cpp | 4 +- .../barretenberg/vm2/generated/columns.hpp | 14 ++ .../vm2/generated/flavor_variables.hpp | 8 ++ .../vm2/simulation/events/execution_event.hpp | 6 + .../barretenberg/vm2/simulation/execution.cpp | 6 + .../barretenberg/vm2/simulation/execution.hpp | 11 ++ .../vm2/simulation/execution.test.cpp | 1 - .../vm2/tracegen/execution_trace.cpp | 130 +++++++++++++++--- .../vm2/tracegen/execution_trace.test.cpp | 76 ++++++++++ .../vm2/tracegen/lib/instruction_spec.cpp | 81 +++++++++++ .../vm2/tracegen/lib/instruction_spec.hpp | 51 +++++++ .../vm2/tracegen/precomputed_trace.cpp | 48 +++++++ .../vm2/tracegen/precomputed_trace.hpp | 1 + .../src/barretenberg/vm2/tracegen_helper.cpp | 2 + 18 files changed, 480 insertions(+), 31 deletions(-) create mode 100644 barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp create mode 100644 barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp create mode 100644 barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp diff --git a/barretenberg/cpp/pil/vm2/addressing.pil b/barretenberg/cpp/pil/vm2/addressing.pil index de1efa22c0c0..7acee3724631 100644 --- a/barretenberg/cpp/pil/vm2/addressing.pil +++ b/barretenberg/cpp/pil/vm2/addressing.pil @@ -13,9 +13,15 @@ pol commit sel_op1_is_address; pol commit sel_op2_is_address; pol commit sel_op3_is_address; pol commit sel_op4_is_address; +pol commit sel_op5_is_address; +pol commit sel_op6_is_address; +pol commit sel_op7_is_address; // operands after relative resolution pol commit op1_after_relative; pol commit op2_after_relative; pol commit op3_after_relative; pol commit op4_after_relative; +pol commit op5_after_relative; +pol commit op6_after_relative; +pol commit op7_after_relative; // operands after indirect resolution are the resolved_operands rop1, ... diff --git a/barretenberg/cpp/pil/vm2/execution.pil b/barretenberg/cpp/pil/vm2/execution.pil index b541c3c28544..2e5fd2aaecd8 100644 --- a/barretenberg/cpp/pil/vm2/execution.pil +++ b/barretenberg/cpp/pil/vm2/execution.pil @@ -28,16 +28,39 @@ include "nullifier_check.pil"; namespace execution; pol commit sel; // subtrace selector +// Subtrace operation id +pol commit subtrace_operation_id; + +// Subtrace Dispatch selectors +// These boolean selectors are constrained via the precomputed Execution Instruction Spec Table +pol commit alu_sel; +pol commit bitwise_sel; +pol commit to_radix_sel; +pol commit ecc_add_sel; +pol commit poseidon2_perm_sel; pol commit ex_opcode; pol commit indirect; // operands pol commit op1, op2, op3, op4; +pol commit op5, op6, op7; // resolved operands pol commit rop1, rop2, rop3, rop4; +pol commit rop5, rop6, rop7; +// Registers +pol commit reg1, reg2, reg3, reg4; +pol commit reg5, reg6, reg7; +// Memory Acccesses +pol commit mem_op1, mem_op2, mem_op3, mem_op4; +pol commit mem_op5, mem_op6, mem_op7; +// Memory Tag +pol commit mem_tag1, mem_tag2, mem_tag3, mem_tag4; +pol commit mem_tag5, mem_tag6, mem_tag7; +// Read / Write selectors +pol commit rw1, rw2, rw3, rw4; +pol commit rw5, rw6, rw7; pol commit bytecode_id; -pol commit clk; pol commit last; // Selector constraints diff --git a/barretenberg/cpp/pil/vm2/precomputed.pil b/barretenberg/cpp/pil/vm2/precomputed.pil index 2b8ef193eea3..71f751a059c8 100644 --- a/barretenberg/cpp/pil/vm2/precomputed.pil +++ b/barretenberg/cpp/pil/vm2/precomputed.pil @@ -95,3 +95,30 @@ pol constant sel_p_decomposition; pol constant p_decomposition_radix; pol constant p_decomposition_limb_index; pol constant p_decomposition_limb; + +// EXECUTION INSTRUCTION SPEC table +// Maps an execution opcode value to useful information used during execution +// - Gas Costs +// - Opcode memory operations and destination registers +pol constant exec_opcode_value; // Would be nice to re-use exec_opcode but that has duplicate lines (i.e. ADD_8 & ADD_16 map to ADD) +pol constant exec_opcode_base_l2_gas; +pol constant exec_opcode_base_da_gas; +pol constant exec_opcode_dynamic_l2_gas; +pol constant exec_opcode_dynamic_da_gas; +// Memory Access + Register mappings +pol constant mem_op_reg1, rw_1; +pol constant mem_op_reg2, rw_2; +pol constant mem_op_reg3, rw_3; +pol constant mem_op_reg4, rw_4; +pol constant mem_op_reg5, rw_5; +pol constant mem_op_reg6, rw_6; +pol constant mem_op_reg7, rw_7; +// Subtrace/Gadget Selector +pol constant op_alu_sel; +pol constant op_bitwise_sel; +pol constant op_poseidon_perm_sel; +pol constant op_to_radix_sel; +pol constant op_ecc_sel; + // Add more here +pol constant subtrace_operation_id; + diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp b/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp index 8edfccf578af..e51fe24e1adc 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp @@ -12,13 +12,13 @@ namespace bb::avm2 { enum class ValueTag { - FF, - U1, - U8, - U16, - U32, - U64, - U128, + FF = 0, + U1 = 1, + U8 = 2, + U16 = 3, + U32 = 4, + U64 = 5, + U128 = 6, MAX = U128, }; diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp index c32d8af19140..d31294bfc507 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp @@ -21,8 +21,8 @@ TEST(ExecutionConstrainingTest, Basic) { // clang-format off TestTraceContainer trace({ - {{ C::execution_sel, 1 }, {C::execution_clk, 0}, { C::execution_pc, 0 }}, - {{ C::execution_sel, 1 }, {C::execution_clk, 1}, { C::execution_pc, 20 }, { C::execution_last, 1 }} + {{ C::execution_sel, 1 }, { C::execution_pc, 0 }}, + {{ C::execution_sel, 1 }, { C::execution_pc, 20 }, { C::execution_last, 1 }} }); // clang-format on diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp index 665d00b116e2..88a15cd2f249 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp @@ -8,6 +8,7 @@ namespace bb::avm2 { // clang-format off +<<<<<<< HEAD #define AVM2_PRECOMPUTED_ENTITIES_E(e) e precomputed_bitwise_input_a, e precomputed_bitwise_input_b, e precomputed_bitwise_op_id, e precomputed_bitwise_output, e precomputed_clk, e precomputed_exec_opcode, e precomputed_first_row, e precomputed_instr_size, e precomputed_integral_tag_length, e precomputed_opcode_out_of_range, e precomputed_p_decomposition_limb, e precomputed_p_decomposition_limb_index, e precomputed_p_decomposition_radix, e precomputed_power_of_2, e precomputed_sel_bitwise, e precomputed_sel_has_tag, e precomputed_sel_integral_tag, e precomputed_sel_mem_tag_out_of_range, 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_p_decomposition, e precomputed_sel_range_16, e precomputed_sel_range_8, e precomputed_sel_sha256_compression, e precomputed_sel_tag_is_op2, e precomputed_sel_to_radix_safe_limbs, e precomputed_sha256_compression_round_constant, e precomputed_to_radix_safe_limbs, e precomputed_zero #define AVM2_WIRE_ENTITIES_E(e) e execution_input, 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_ia, e alu_ib, e alu_ic, e alu_op, e alu_sel_op_add, 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_block_number, e bc_retrieval_bytecode_id, e bc_retrieval_current_class_id, e bc_retrieval_deployer_addr, e bc_retrieval_deployer_protocol_contract_address, e bc_retrieval_err, e bc_retrieval_incoming_viewing_key_x, e bc_retrieval_incoming_viewing_key_y, e bc_retrieval_init_hash, e bc_retrieval_nullifier_exists, e bc_retrieval_nullifier_key_x, e bc_retrieval_nullifier_key_y, e bc_retrieval_nullifier_tree_root, e bc_retrieval_original_class_id, e bc_retrieval_outer_nullifier_domain_separator, e bc_retrieval_outgoing_viewing_key_x, e bc_retrieval_outgoing_viewing_key_y, e bc_retrieval_private_function_root, e bc_retrieval_public_bytecode_commitment, e bc_retrieval_public_data_tree_root, e bc_retrieval_salt, e bc_retrieval_sel, e bc_retrieval_siloed_address, e bc_retrieval_tagging_key_x, e bc_retrieval_tagging_key_y, 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_ia_byte, e bitwise_ib_byte, e bitwise_ic_byte, e bitwise_last, e bitwise_op_id, e bitwise_sel, e bitwise_start, e bitwise_tag, 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_contract_address, e context_stack_is_static, e context_stack_msg_sender, e context_stack_parent_calldata_offset_addr, e context_stack_parent_calldata_size_addr, e context_stack_pc, 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_x_match, e ecc_y_match, e execution_addressing_error_idx, e execution_addressing_error_kind, e execution_base_address_tag, e execution_base_address_val, e execution_bytecode_id, e execution_clk, e execution_context_id, e execution_contract_address, e execution_ex_opcode, e execution_indirect, e execution_is_static, e execution_last, e execution_last_child_returndata_offset_addr, e execution_last_child_returndata_size_addr, e execution_last_child_success, e execution_msg_sender, e execution_op1, e execution_op1_after_relative, e execution_op2, e execution_op2_after_relative, e execution_op3, e execution_op3_after_relative, e execution_op4, e execution_op4_after_relative, e execution_parent_calldata_offset_addr, e execution_parent_calldata_size_addr, e execution_pc, e execution_rop1, e execution_rop2, e execution_rop3, e execution_rop4, e execution_sel, e execution_sel_addressing_error, e execution_sel_op1_is_address, e execution_sel_op2_is_address, e execution_sel_op3_is_address, e execution_sel_op4_is_address, 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_gt, e ff_gt_sel_shift_rng, 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_parsing_err, 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_17, 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_pc_in_range, e instr_fetching_sel_tag_is_op2, e instr_fetching_tag_out_of_range, e instr_fetching_tag_value, e keccakf1600_keccak_0_, e keccakf1600_keccak_100_, e keccakf1600_keccak_101_, e keccakf1600_keccak_102_, e keccakf1600_keccak_103_, e keccakf1600_keccak_104_, e keccakf1600_keccak_105_, e keccakf1600_keccak_106_, e keccakf1600_keccak_107_, e keccakf1600_keccak_108_, e keccakf1600_keccak_109_, e keccakf1600_keccak_10_, e keccakf1600_keccak_110_, e keccakf1600_keccak_111_, e keccakf1600_keccak_112_, e keccakf1600_keccak_113_, e keccakf1600_keccak_114_, e keccakf1600_keccak_115_, e keccakf1600_keccak_116_, e keccakf1600_keccak_117_, e keccakf1600_keccak_118_, e keccakf1600_keccak_119_, e keccakf1600_keccak_11_, e keccakf1600_keccak_120_, e keccakf1600_keccak_121_, e keccakf1600_keccak_122_, e keccakf1600_keccak_123_, e keccakf1600_keccak_124_, e keccakf1600_keccak_125_, e keccakf1600_keccak_126_, e keccakf1600_keccak_127_, e keccakf1600_keccak_128_, e keccakf1600_keccak_129_, e keccakf1600_keccak_12_, e keccakf1600_keccak_130_, e keccakf1600_keccak_131_, e keccakf1600_keccak_132_, e keccakf1600_keccak_133_, e keccakf1600_keccak_134_, e keccakf1600_keccak_135_, e keccakf1600_keccak_136_, e keccakf1600_keccak_137_, e keccakf1600_keccak_138_, e keccakf1600_keccak_139_, e keccakf1600_keccak_13_, e keccakf1600_keccak_140_, e keccakf1600_keccak_141_, e keccakf1600_keccak_142_, e keccakf1600_keccak_143_, e keccakf1600_keccak_144_, e keccakf1600_keccak_145_, e keccakf1600_keccak_146_, e keccakf1600_keccak_147_, e keccakf1600_keccak_148_, e keccakf1600_keccak_149_, e keccakf1600_keccak_14_, e keccakf1600_keccak_150_, e keccakf1600_keccak_151_, e keccakf1600_keccak_152_, e keccakf1600_keccak_153_, e keccakf1600_keccak_154_, e keccakf1600_keccak_155_, e keccakf1600_keccak_156_, e keccakf1600_keccak_157_, e keccakf1600_keccak_158_, e keccakf1600_keccak_159_, e keccakf1600_keccak_15_, e keccakf1600_keccak_160_, e keccakf1600_keccak_161_, e keccakf1600_keccak_162_, e keccakf1600_keccak_163_, e keccakf1600_keccak_164_, e keccakf1600_keccak_165_, e keccakf1600_keccak_166_, e keccakf1600_keccak_167_, e keccakf1600_keccak_168_, e keccakf1600_keccak_169_, e keccakf1600_keccak_16_, e keccakf1600_keccak_170_, e keccakf1600_keccak_171_, e keccakf1600_keccak_172_, e keccakf1600_keccak_173_, e keccakf1600_keccak_174_, e keccakf1600_keccak_175_, e keccakf1600_keccak_176_, e keccakf1600_keccak_177_, e keccakf1600_keccak_178_, e keccakf1600_keccak_179_, e keccakf1600_keccak_17_, e keccakf1600_keccak_180_, e keccakf1600_keccak_181_, e keccakf1600_keccak_182_, e keccakf1600_keccak_183_, e keccakf1600_keccak_184_, e keccakf1600_keccak_185_, e keccakf1600_keccak_186_, e keccakf1600_keccak_187_, e keccakf1600_keccak_188_, e keccakf1600_keccak_189_, e keccakf1600_keccak_18_, e keccakf1600_keccak_190_, e keccakf1600_keccak_191_, e keccakf1600_keccak_192_, e keccakf1600_keccak_193_, e keccakf1600_keccak_194_, e keccakf1600_keccak_195_, e keccakf1600_keccak_196_, e keccakf1600_keccak_197_, e keccakf1600_keccak_198_, e keccakf1600_keccak_199_, e keccakf1600_keccak_19_, e keccakf1600_keccak_1_, e keccakf1600_keccak_200_, e keccakf1600_keccak_201_, e keccakf1600_keccak_202_, e keccakf1600_keccak_203_, e keccakf1600_keccak_204_, e keccakf1600_keccak_205_, e keccakf1600_keccak_206_, e keccakf1600_keccak_207_, e keccakf1600_keccak_208_, e keccakf1600_keccak_209_, e keccakf1600_keccak_20_, e keccakf1600_keccak_210_, e keccakf1600_keccak_211_, e keccakf1600_keccak_212_, e keccakf1600_keccak_213_, e keccakf1600_keccak_214_, e keccakf1600_keccak_215_, e keccakf1600_keccak_216_, e keccakf1600_keccak_217_, e keccakf1600_keccak_218_, e keccakf1600_keccak_219_, e keccakf1600_keccak_21_, e keccakf1600_keccak_220_, e keccakf1600_keccak_221_, e keccakf1600_keccak_222_, e keccakf1600_keccak_223_, e keccakf1600_keccak_224_, e keccakf1600_keccak_225_, e keccakf1600_keccak_226_, e keccakf1600_keccak_227_, e keccakf1600_keccak_228_, e keccakf1600_keccak_229_, e keccakf1600_keccak_22_, e keccakf1600_keccak_230_, e keccakf1600_keccak_231_, e keccakf1600_keccak_232_, e keccakf1600_keccak_233_, e keccakf1600_keccak_234_, e keccakf1600_keccak_235_, e keccakf1600_keccak_236_, e keccakf1600_keccak_237_, e keccakf1600_keccak_238_, e keccakf1600_keccak_239_, e keccakf1600_keccak_23_, e keccakf1600_keccak_240_, e keccakf1600_keccak_241_, e keccakf1600_keccak_242_, e keccakf1600_keccak_243_, e keccakf1600_keccak_244_, e keccakf1600_keccak_245_, e keccakf1600_keccak_246_, e keccakf1600_keccak_247_, e keccakf1600_keccak_248_, e keccakf1600_keccak_249_, e keccakf1600_keccak_24_, e keccakf1600_keccak_250_, e keccakf1600_keccak_251_, e keccakf1600_keccak_252_, e keccakf1600_keccak_253_, e keccakf1600_keccak_254_, e keccakf1600_keccak_255_, e keccakf1600_keccak_256_, e keccakf1600_keccak_257_, e keccakf1600_keccak_258_, e keccakf1600_keccak_259_, e keccakf1600_keccak_25_, e keccakf1600_keccak_260_, e keccakf1600_keccak_261_, e keccakf1600_keccak_262_, e keccakf1600_keccak_263_, e keccakf1600_keccak_264_, e keccakf1600_keccak_265_, e keccakf1600_keccak_266_, e keccakf1600_keccak_267_, e keccakf1600_keccak_268_, e keccakf1600_keccak_269_, e keccakf1600_keccak_26_, e keccakf1600_keccak_270_, e keccakf1600_keccak_271_, e keccakf1600_keccak_272_, e keccakf1600_keccak_273_, e keccakf1600_keccak_274_, e keccakf1600_keccak_275_, e keccakf1600_keccak_276_, e keccakf1600_keccak_277_, e keccakf1600_keccak_278_, e keccakf1600_keccak_279_, e keccakf1600_keccak_27_, e keccakf1600_keccak_280_, e keccakf1600_keccak_281_, e keccakf1600_keccak_282_, e keccakf1600_keccak_283_, e keccakf1600_keccak_284_, e keccakf1600_keccak_285_, e keccakf1600_keccak_286_, e keccakf1600_keccak_287_, e keccakf1600_keccak_288_, e keccakf1600_keccak_289_, e keccakf1600_keccak_28_, e keccakf1600_keccak_290_, e keccakf1600_keccak_291_, e keccakf1600_keccak_292_, e keccakf1600_keccak_293_, e keccakf1600_keccak_294_, e keccakf1600_keccak_295_, e keccakf1600_keccak_296_, e keccakf1600_keccak_297_, e keccakf1600_keccak_298_, e keccakf1600_keccak_299_, e keccakf1600_keccak_29_, e keccakf1600_keccak_2_, e keccakf1600_keccak_300_, e keccakf1600_keccak_301_, e keccakf1600_keccak_302_, e keccakf1600_keccak_303_, e keccakf1600_keccak_304_, e keccakf1600_keccak_305_, e keccakf1600_keccak_306_, e keccakf1600_keccak_307_, e keccakf1600_keccak_308_, e keccakf1600_keccak_309_, e keccakf1600_keccak_30_, e keccakf1600_keccak_310_, e keccakf1600_keccak_311_, e keccakf1600_keccak_312_, e keccakf1600_keccak_313_, e keccakf1600_keccak_314_, e keccakf1600_keccak_315_, e keccakf1600_keccak_316_, e keccakf1600_keccak_317_, e keccakf1600_keccak_318_, e keccakf1600_keccak_319_, e keccakf1600_keccak_31_, e keccakf1600_keccak_320_, e keccakf1600_keccak_321_, e keccakf1600_keccak_322_, e keccakf1600_keccak_323_, e keccakf1600_keccak_324_, e keccakf1600_keccak_325_, e keccakf1600_keccak_326_, e keccakf1600_keccak_327_, e keccakf1600_keccak_328_, e keccakf1600_keccak_329_, e keccakf1600_keccak_32_, e keccakf1600_keccak_330_, e keccakf1600_keccak_331_, e keccakf1600_keccak_332_, e keccakf1600_keccak_333_, e keccakf1600_keccak_334_, e keccakf1600_keccak_335_, e keccakf1600_keccak_336_, e keccakf1600_keccak_337_, e keccakf1600_keccak_338_, e keccakf1600_keccak_339_, e keccakf1600_keccak_33_, e keccakf1600_keccak_340_, e keccakf1600_keccak_341_, e keccakf1600_keccak_342_, e keccakf1600_keccak_343_, e keccakf1600_keccak_344_, e keccakf1600_keccak_345_, e keccakf1600_keccak_346_, e keccakf1600_keccak_347_, e keccakf1600_keccak_348_, e keccakf1600_keccak_349_, e keccakf1600_keccak_34_, e keccakf1600_keccak_350_, e keccakf1600_keccak_351_, e keccakf1600_keccak_352_, e keccakf1600_keccak_353_, e keccakf1600_keccak_354_, e keccakf1600_keccak_355_, e keccakf1600_keccak_356_, e keccakf1600_keccak_357_, e keccakf1600_keccak_358_, e keccakf1600_keccak_359_, e keccakf1600_keccak_35_, e keccakf1600_keccak_360_, e keccakf1600_keccak_361_, e keccakf1600_keccak_362_, e keccakf1600_keccak_363_, e keccakf1600_keccak_364_, e keccakf1600_keccak_365_, e keccakf1600_keccak_366_, e keccakf1600_keccak_367_, e keccakf1600_keccak_368_, e keccakf1600_keccak_369_, e keccakf1600_keccak_36_, e keccakf1600_keccak_370_, e keccakf1600_keccak_371_, e keccakf1600_keccak_372_, e keccakf1600_keccak_373_, e keccakf1600_keccak_374_, e keccakf1600_keccak_375_, e keccakf1600_keccak_376_, e keccakf1600_keccak_377_, e keccakf1600_keccak_378_, e keccakf1600_keccak_379_, e keccakf1600_keccak_37_, e keccakf1600_keccak_380_, e keccakf1600_keccak_381_, e keccakf1600_keccak_382_, e keccakf1600_keccak_383_, e keccakf1600_keccak_384_, e keccakf1600_keccak_385_, e keccakf1600_keccak_386_, e keccakf1600_keccak_387_, e keccakf1600_keccak_388_, e keccakf1600_keccak_389_, e keccakf1600_keccak_38_, e keccakf1600_keccak_390_, e keccakf1600_keccak_391_, e keccakf1600_keccak_392_, e keccakf1600_keccak_393_, e keccakf1600_keccak_394_, e keccakf1600_keccak_395_, e keccakf1600_keccak_396_, e keccakf1600_keccak_397_, e keccakf1600_keccak_398_, e keccakf1600_keccak_399_, e keccakf1600_keccak_39_, e keccakf1600_keccak_3_, e keccakf1600_keccak_400_, e keccakf1600_keccak_401_, e keccakf1600_keccak_402_, e keccakf1600_keccak_403_, e keccakf1600_keccak_404_, e keccakf1600_keccak_405_, e keccakf1600_keccak_406_, e keccakf1600_keccak_407_, e keccakf1600_keccak_408_, e keccakf1600_keccak_409_, e keccakf1600_keccak_40_, e keccakf1600_keccak_410_, e keccakf1600_keccak_411_, e keccakf1600_keccak_412_, e keccakf1600_keccak_413_, e keccakf1600_keccak_414_, e keccakf1600_keccak_415_, e keccakf1600_keccak_416_, e keccakf1600_keccak_417_, e keccakf1600_keccak_418_, e keccakf1600_keccak_419_, e keccakf1600_keccak_41_, e keccakf1600_keccak_420_, e keccakf1600_keccak_421_, e keccakf1600_keccak_422_, e keccakf1600_keccak_423_, e keccakf1600_keccak_424_, e keccakf1600_keccak_425_, e keccakf1600_keccak_426_, e keccakf1600_keccak_427_, e keccakf1600_keccak_428_, e keccakf1600_keccak_429_, e keccakf1600_keccak_42_, e keccakf1600_keccak_430_, e keccakf1600_keccak_431_, e keccakf1600_keccak_432_, e keccakf1600_keccak_433_, e keccakf1600_keccak_434_, e keccakf1600_keccak_435_, e keccakf1600_keccak_436_, e keccakf1600_keccak_437_, e keccakf1600_keccak_438_, e keccakf1600_keccak_439_, e keccakf1600_keccak_43_, e keccakf1600_keccak_440_, e keccakf1600_keccak_441_, e keccakf1600_keccak_442_, e keccakf1600_keccak_443_, e keccakf1600_keccak_444_, e keccakf1600_keccak_445_, e keccakf1600_keccak_446_, e keccakf1600_keccak_447_, e keccakf1600_keccak_448_, e keccakf1600_keccak_449_, e keccakf1600_keccak_44_, e keccakf1600_keccak_450_, e keccakf1600_keccak_451_, e keccakf1600_keccak_452_, e keccakf1600_keccak_453_, e keccakf1600_keccak_454_, e keccakf1600_keccak_455_, e keccakf1600_keccak_456_, e keccakf1600_keccak_457_, e keccakf1600_keccak_458_, e keccakf1600_keccak_459_, e keccakf1600_keccak_45_, e keccakf1600_keccak_460_, e keccakf1600_keccak_461_, e keccakf1600_keccak_462_, e keccakf1600_keccak_463_, e keccakf1600_keccak_464_, e keccakf1600_keccak_465_, e keccakf1600_keccak_466_, e keccakf1600_keccak_467_, e keccakf1600_keccak_468_, e keccakf1600_keccak_469_, e keccakf1600_keccak_46_, e keccakf1600_keccak_470_, e keccakf1600_keccak_471_, e keccakf1600_keccak_472_, e keccakf1600_keccak_473_, e keccakf1600_keccak_474_, e keccakf1600_keccak_475_, e keccakf1600_keccak_476_, e keccakf1600_keccak_477_, e keccakf1600_keccak_478_, e keccakf1600_keccak_479_, e keccakf1600_keccak_47_, e keccakf1600_keccak_480_, e keccakf1600_keccak_481_, e keccakf1600_keccak_482_, e keccakf1600_keccak_483_, e keccakf1600_keccak_484_, e keccakf1600_keccak_485_, e keccakf1600_keccak_486_, e keccakf1600_keccak_487_, e keccakf1600_keccak_488_, e keccakf1600_keccak_489_, e keccakf1600_keccak_48_, e keccakf1600_keccak_490_, e keccakf1600_keccak_491_, e keccakf1600_keccak_492_, e keccakf1600_keccak_493_, e keccakf1600_keccak_494_, e keccakf1600_keccak_495_, e keccakf1600_keccak_496_, e keccakf1600_keccak_497_, e keccakf1600_keccak_498_, e keccakf1600_keccak_499_, e keccakf1600_keccak_49_, e keccakf1600_keccak_4_, e keccakf1600_keccak_500_, e keccakf1600_keccak_501_, e keccakf1600_keccak_502_, e keccakf1600_keccak_503_, e keccakf1600_keccak_504_, e keccakf1600_keccak_505_, e keccakf1600_keccak_506_, e keccakf1600_keccak_507_, e keccakf1600_keccak_508_, e keccakf1600_keccak_509_, e keccakf1600_keccak_50_, e keccakf1600_keccak_510_, e keccakf1600_keccak_511_, e keccakf1600_keccak_512_, e keccakf1600_keccak_513_, e keccakf1600_keccak_514_, e keccakf1600_keccak_515_, e keccakf1600_keccak_516_, e keccakf1600_keccak_517_, e keccakf1600_keccak_518_, e keccakf1600_keccak_519_, e keccakf1600_keccak_51_, e keccakf1600_keccak_520_, e keccakf1600_keccak_521_, e keccakf1600_keccak_522_, e keccakf1600_keccak_523_, e keccakf1600_keccak_524_, e keccakf1600_keccak_525_, e keccakf1600_keccak_526_, e keccakf1600_keccak_527_, e keccakf1600_keccak_528_, e keccakf1600_keccak_529_, e keccakf1600_keccak_52_, e keccakf1600_keccak_530_, e keccakf1600_keccak_531_, e keccakf1600_keccak_532_, e keccakf1600_keccak_533_, e keccakf1600_keccak_534_, e keccakf1600_keccak_535_, e keccakf1600_keccak_536_, e keccakf1600_keccak_537_, e keccakf1600_keccak_538_, e keccakf1600_keccak_539_, e keccakf1600_keccak_53_, e keccakf1600_keccak_540_, e keccakf1600_keccak_541_, e keccakf1600_keccak_542_, e keccakf1600_keccak_543_, e keccakf1600_keccak_544_, e keccakf1600_keccak_545_, e keccakf1600_keccak_546_, e keccakf1600_keccak_547_, e keccakf1600_keccak_548_, e keccakf1600_keccak_549_, e keccakf1600_keccak_54_, e keccakf1600_keccak_550_, e keccakf1600_keccak_551_, e keccakf1600_keccak_552_, e keccakf1600_keccak_553_, e keccakf1600_keccak_554_, e keccakf1600_keccak_555_, e keccakf1600_keccak_556_, e keccakf1600_keccak_557_, e keccakf1600_keccak_558_, e keccakf1600_keccak_559_, e keccakf1600_keccak_55_, e keccakf1600_keccak_560_, e keccakf1600_keccak_561_, e keccakf1600_keccak_562_, e keccakf1600_keccak_563_, e keccakf1600_keccak_564_, e keccakf1600_keccak_565_, e keccakf1600_keccak_566_, e keccakf1600_keccak_567_, e keccakf1600_keccak_568_, e keccakf1600_keccak_569_, e keccakf1600_keccak_56_, e keccakf1600_keccak_570_, e keccakf1600_keccak_571_, e keccakf1600_keccak_572_, e keccakf1600_keccak_573_, e keccakf1600_keccak_574_, e keccakf1600_keccak_575_, e keccakf1600_keccak_576_, e keccakf1600_keccak_577_, e keccakf1600_keccak_578_, e keccakf1600_keccak_579_, e keccakf1600_keccak_57_, e keccakf1600_keccak_580_, e keccakf1600_keccak_581_, e keccakf1600_keccak_582_, e keccakf1600_keccak_583_, e keccakf1600_keccak_584_, e keccakf1600_keccak_585_, e keccakf1600_keccak_586_, e keccakf1600_keccak_587_, e keccakf1600_keccak_588_, e keccakf1600_keccak_589_, e keccakf1600_keccak_58_, e keccakf1600_keccak_590_, e keccakf1600_keccak_591_, e keccakf1600_keccak_592_, e keccakf1600_keccak_593_, e keccakf1600_keccak_594_, e keccakf1600_keccak_595_, e keccakf1600_keccak_596_, e keccakf1600_keccak_597_, e keccakf1600_keccak_598_, e keccakf1600_keccak_599_, e keccakf1600_keccak_59_, e keccakf1600_keccak_5_, e keccakf1600_keccak_600_, e keccakf1600_keccak_601_, e keccakf1600_keccak_602_, e keccakf1600_keccak_603_, e keccakf1600_keccak_604_, e keccakf1600_keccak_605_, e keccakf1600_keccak_606_, e keccakf1600_keccak_607_, e keccakf1600_keccak_608_, e keccakf1600_keccak_609_, e keccakf1600_keccak_60_, e keccakf1600_keccak_610_, e keccakf1600_keccak_611_, e keccakf1600_keccak_612_, e keccakf1600_keccak_613_, e keccakf1600_keccak_614_, e keccakf1600_keccak_615_, e keccakf1600_keccak_616_, e keccakf1600_keccak_617_, e keccakf1600_keccak_618_, e keccakf1600_keccak_619_, e keccakf1600_keccak_61_, e keccakf1600_keccak_620_, e keccakf1600_keccak_621_, e keccakf1600_keccak_622_, e keccakf1600_keccak_623_, e keccakf1600_keccak_624_, e keccakf1600_keccak_625_, e keccakf1600_keccak_626_, e keccakf1600_keccak_627_, e keccakf1600_keccak_628_, e keccakf1600_keccak_629_, e keccakf1600_keccak_62_, e keccakf1600_keccak_630_, e keccakf1600_keccak_631_, e keccakf1600_keccak_632_, e keccakf1600_keccak_633_, e keccakf1600_keccak_634_, e keccakf1600_keccak_635_, e keccakf1600_keccak_636_, e keccakf1600_keccak_637_, e keccakf1600_keccak_638_, e keccakf1600_keccak_639_, e keccakf1600_keccak_63_, e keccakf1600_keccak_640_, e keccakf1600_keccak_641_, e keccakf1600_keccak_642_, e keccakf1600_keccak_643_, e keccakf1600_keccak_644_, e keccakf1600_keccak_645_, e keccakf1600_keccak_646_, e keccakf1600_keccak_647_, e keccakf1600_keccak_648_, e keccakf1600_keccak_649_, e keccakf1600_keccak_64_, e keccakf1600_keccak_650_, e keccakf1600_keccak_651_, e keccakf1600_keccak_652_, e keccakf1600_keccak_653_, e keccakf1600_keccak_654_, e keccakf1600_keccak_655_, e keccakf1600_keccak_656_, e keccakf1600_keccak_657_, e keccakf1600_keccak_658_, e keccakf1600_keccak_659_, e keccakf1600_keccak_65_, e keccakf1600_keccak_660_, e keccakf1600_keccak_661_, e keccakf1600_keccak_662_, e keccakf1600_keccak_663_, e keccakf1600_keccak_664_, e keccakf1600_keccak_665_, e keccakf1600_keccak_666_, e keccakf1600_keccak_667_, e keccakf1600_keccak_668_, e keccakf1600_keccak_669_, e keccakf1600_keccak_66_, e keccakf1600_keccak_670_, e keccakf1600_keccak_671_, e keccakf1600_keccak_672_, e keccakf1600_keccak_673_, e keccakf1600_keccak_674_, e keccakf1600_keccak_675_, e keccakf1600_keccak_676_, e keccakf1600_keccak_677_, e keccakf1600_keccak_678_, e keccakf1600_keccak_679_, e keccakf1600_keccak_67_, e keccakf1600_keccak_680_, e keccakf1600_keccak_681_, e keccakf1600_keccak_682_, e keccakf1600_keccak_683_, e keccakf1600_keccak_684_, e keccakf1600_keccak_685_, e keccakf1600_keccak_686_, e keccakf1600_keccak_687_, e keccakf1600_keccak_688_, e keccakf1600_keccak_689_, e keccakf1600_keccak_68_, e keccakf1600_keccak_690_, e keccakf1600_keccak_691_, e keccakf1600_keccak_692_, e keccakf1600_keccak_693_, e keccakf1600_keccak_694_, e keccakf1600_keccak_695_, e keccakf1600_keccak_696_, e keccakf1600_keccak_697_, e keccakf1600_keccak_698_, e keccakf1600_keccak_699_, e keccakf1600_keccak_69_, e keccakf1600_keccak_6_, e keccakf1600_keccak_700_, e keccakf1600_keccak_701_, e keccakf1600_keccak_702_, e keccakf1600_keccak_703_, e keccakf1600_keccak_704_, e keccakf1600_keccak_705_, e keccakf1600_keccak_706_, e keccakf1600_keccak_707_, e keccakf1600_keccak_708_, e keccakf1600_keccak_709_, e keccakf1600_keccak_70_, e keccakf1600_keccak_710_, e keccakf1600_keccak_711_, e keccakf1600_keccak_712_, e keccakf1600_keccak_713_, e keccakf1600_keccak_714_, e keccakf1600_keccak_715_, e keccakf1600_keccak_716_, e keccakf1600_keccak_717_, e keccakf1600_keccak_718_, e keccakf1600_keccak_719_, e keccakf1600_keccak_71_, e keccakf1600_keccak_720_, e keccakf1600_keccak_721_, e keccakf1600_keccak_722_, e keccakf1600_keccak_723_, e keccakf1600_keccak_724_, e keccakf1600_keccak_725_, e keccakf1600_keccak_726_, e keccakf1600_keccak_727_, e keccakf1600_keccak_728_, e keccakf1600_keccak_729_, e keccakf1600_keccak_72_, e keccakf1600_keccak_730_, e keccakf1600_keccak_731_, e keccakf1600_keccak_732_, e keccakf1600_keccak_733_, e keccakf1600_keccak_734_, e keccakf1600_keccak_735_, e keccakf1600_keccak_736_, e keccakf1600_keccak_737_, e keccakf1600_keccak_738_, e keccakf1600_keccak_739_, e keccakf1600_keccak_73_, e keccakf1600_keccak_740_, e keccakf1600_keccak_741_, e keccakf1600_keccak_742_, e keccakf1600_keccak_743_, e keccakf1600_keccak_744_, e keccakf1600_keccak_745_, e keccakf1600_keccak_746_, e keccakf1600_keccak_747_, e keccakf1600_keccak_748_, e keccakf1600_keccak_749_, e keccakf1600_keccak_74_, e keccakf1600_keccak_750_, e keccakf1600_keccak_751_, e keccakf1600_keccak_752_, e keccakf1600_keccak_753_, e keccakf1600_keccak_754_, e keccakf1600_keccak_755_, e keccakf1600_keccak_756_, e keccakf1600_keccak_757_, e keccakf1600_keccak_758_, e keccakf1600_keccak_759_, e keccakf1600_keccak_75_, e keccakf1600_keccak_760_, e keccakf1600_keccak_761_, e keccakf1600_keccak_762_, e keccakf1600_keccak_763_, e keccakf1600_keccak_764_, e keccakf1600_keccak_765_, e keccakf1600_keccak_766_, e keccakf1600_keccak_767_, e keccakf1600_keccak_768_, e keccakf1600_keccak_769_, e keccakf1600_keccak_76_, e keccakf1600_keccak_770_, e keccakf1600_keccak_771_, e keccakf1600_keccak_772_, e keccakf1600_keccak_773_, e keccakf1600_keccak_774_, e keccakf1600_keccak_775_, e keccakf1600_keccak_776_, e keccakf1600_keccak_777_, e keccakf1600_keccak_778_, e keccakf1600_keccak_779_, e keccakf1600_keccak_77_, e keccakf1600_keccak_780_, e keccakf1600_keccak_781_, e keccakf1600_keccak_782_, e keccakf1600_keccak_783_, e keccakf1600_keccak_784_, e keccakf1600_keccak_785_, e keccakf1600_keccak_786_, e keccakf1600_keccak_787_, e keccakf1600_keccak_788_, e keccakf1600_keccak_789_, e keccakf1600_keccak_78_, e keccakf1600_keccak_790_, e keccakf1600_keccak_791_, e keccakf1600_keccak_792_, e keccakf1600_keccak_793_, e keccakf1600_keccak_794_, e keccakf1600_keccak_795_, e keccakf1600_keccak_796_, e keccakf1600_keccak_797_, e keccakf1600_keccak_798_, e keccakf1600_keccak_799_, e keccakf1600_keccak_79_, e keccakf1600_keccak_7_, e keccakf1600_keccak_800_, e keccakf1600_keccak_801_, e keccakf1600_keccak_802_, e keccakf1600_keccak_803_, e keccakf1600_keccak_804_, e keccakf1600_keccak_805_, e keccakf1600_keccak_806_, e keccakf1600_keccak_807_, e keccakf1600_keccak_808_, e keccakf1600_keccak_809_, e keccakf1600_keccak_80_, e keccakf1600_keccak_810_, e keccakf1600_keccak_811_, e keccakf1600_keccak_812_, e keccakf1600_keccak_813_, e keccakf1600_keccak_814_, e keccakf1600_keccak_815_, e keccakf1600_keccak_816_, e keccakf1600_keccak_817_, e keccakf1600_keccak_818_, e keccakf1600_keccak_819_, e keccakf1600_keccak_81_, e keccakf1600_keccak_820_, e keccakf1600_keccak_821_, e keccakf1600_keccak_822_, e keccakf1600_keccak_823_, e keccakf1600_keccak_824_, e keccakf1600_keccak_825_, e keccakf1600_keccak_826_, e keccakf1600_keccak_827_, e keccakf1600_keccak_828_, e keccakf1600_keccak_829_, e keccakf1600_keccak_82_, e keccakf1600_keccak_830_, e keccakf1600_keccak_831_, e keccakf1600_keccak_832_, e keccakf1600_keccak_833_, e keccakf1600_keccak_834_, e keccakf1600_keccak_835_, e keccakf1600_keccak_836_, e keccakf1600_keccak_837_, e keccakf1600_keccak_838_, e keccakf1600_keccak_839_, e keccakf1600_keccak_83_, e keccakf1600_keccak_840_, e keccakf1600_keccak_841_, e keccakf1600_keccak_842_, e keccakf1600_keccak_843_, e keccakf1600_keccak_844_, e keccakf1600_keccak_845_, e keccakf1600_keccak_846_, e keccakf1600_keccak_847_, e keccakf1600_keccak_848_, e keccakf1600_keccak_849_, e keccakf1600_keccak_84_, e keccakf1600_keccak_850_, e keccakf1600_keccak_851_, e keccakf1600_keccak_852_, e keccakf1600_keccak_853_, e keccakf1600_keccak_854_, e keccakf1600_keccak_855_, e keccakf1600_keccak_856_, e keccakf1600_keccak_857_, e keccakf1600_keccak_858_, e keccakf1600_keccak_859_, e keccakf1600_keccak_85_, e keccakf1600_keccak_860_, e keccakf1600_keccak_861_, e keccakf1600_keccak_862_, e keccakf1600_keccak_863_, e keccakf1600_keccak_864_, e keccakf1600_keccak_865_, e keccakf1600_keccak_866_, e keccakf1600_keccak_867_, e keccakf1600_keccak_868_, e keccakf1600_keccak_869_, e keccakf1600_keccak_86_, e keccakf1600_keccak_870_, e keccakf1600_keccak_871_, e keccakf1600_keccak_872_, e keccakf1600_keccak_873_, e keccakf1600_keccak_874_, e keccakf1600_keccak_875_, e keccakf1600_keccak_876_, e keccakf1600_keccak_877_, e keccakf1600_keccak_878_, e keccakf1600_keccak_879_, e keccakf1600_keccak_87_, e keccakf1600_keccak_880_, e keccakf1600_keccak_881_, e keccakf1600_keccak_882_, e keccakf1600_keccak_883_, e keccakf1600_keccak_884_, e keccakf1600_keccak_885_, e keccakf1600_keccak_886_, e keccakf1600_keccak_887_, e keccakf1600_keccak_888_, e keccakf1600_keccak_889_, e keccakf1600_keccak_88_, e keccakf1600_keccak_890_, e keccakf1600_keccak_891_, e keccakf1600_keccak_892_, e keccakf1600_keccak_893_, e keccakf1600_keccak_894_, e keccakf1600_keccak_895_, e keccakf1600_keccak_896_, e keccakf1600_keccak_897_, e keccakf1600_keccak_898_, e keccakf1600_keccak_899_, e keccakf1600_keccak_89_, e keccakf1600_keccak_8_, e keccakf1600_keccak_900_, e keccakf1600_keccak_901_, e keccakf1600_keccak_902_, e keccakf1600_keccak_903_, e keccakf1600_keccak_904_, e keccakf1600_keccak_905_, e keccakf1600_keccak_906_, e keccakf1600_keccak_907_, e keccakf1600_keccak_908_, e keccakf1600_keccak_909_, e keccakf1600_keccak_90_, e keccakf1600_keccak_910_, e keccakf1600_keccak_911_, e keccakf1600_keccak_912_, e keccakf1600_keccak_913_, e keccakf1600_keccak_914_, e keccakf1600_keccak_915_, e keccakf1600_keccak_916_, e keccakf1600_keccak_917_, e keccakf1600_keccak_918_, e keccakf1600_keccak_919_, e keccakf1600_keccak_91_, e keccakf1600_keccak_920_, e keccakf1600_keccak_921_, e keccakf1600_keccak_922_, e keccakf1600_keccak_923_, e keccakf1600_keccak_924_, e keccakf1600_keccak_925_, e keccakf1600_keccak_926_, e keccakf1600_keccak_927_, e keccakf1600_keccak_928_, e keccakf1600_keccak_929_, e keccakf1600_keccak_92_, e keccakf1600_keccak_930_, e keccakf1600_keccak_931_, e keccakf1600_keccak_932_, e keccakf1600_keccak_933_, e keccakf1600_keccak_934_, e keccakf1600_keccak_935_, e keccakf1600_keccak_936_, e keccakf1600_keccak_937_, e keccakf1600_keccak_938_, e keccakf1600_keccak_939_, e keccakf1600_keccak_93_, e keccakf1600_keccak_940_, e keccakf1600_keccak_941_, e keccakf1600_keccak_942_, e keccakf1600_keccak_943_, e keccakf1600_keccak_944_, e keccakf1600_keccak_945_, e keccakf1600_keccak_946_, e keccakf1600_keccak_947_, e keccakf1600_keccak_948_, e keccakf1600_keccak_949_, e keccakf1600_keccak_94_, e keccakf1600_keccak_950_, e keccakf1600_keccak_951_, e keccakf1600_keccak_952_, e keccakf1600_keccak_953_, e keccakf1600_keccak_954_, e keccakf1600_keccak_955_, e keccakf1600_keccak_956_, e keccakf1600_keccak_957_, e keccakf1600_keccak_958_, e keccakf1600_keccak_959_, e keccakf1600_keccak_95_, e keccakf1600_keccak_960_, e keccakf1600_keccak_961_, e keccakf1600_keccak_962_, e keccakf1600_keccak_963_, e keccakf1600_keccak_964_, e keccakf1600_keccak_965_, e keccakf1600_keccak_966_, e keccakf1600_keccak_967_, e keccakf1600_keccak_968_, e keccakf1600_keccak_969_, e keccakf1600_keccak_96_, e keccakf1600_keccak_970_, e keccakf1600_keccak_971_, e keccakf1600_keccak_972_, e keccakf1600_keccak_973_, e keccakf1600_keccak_974_, e keccakf1600_keccak_975_, e keccakf1600_keccak_976_, e keccakf1600_keccak_977_, e keccakf1600_keccak_978_, e keccakf1600_keccak_979_, e keccakf1600_keccak_97_, e keccakf1600_keccak_980_, e keccakf1600_keccak_981_, e keccakf1600_keccak_982_, e keccakf1600_keccak_983_, e keccakf1600_keccak_984_, e keccakf1600_keccak_985_, e keccakf1600_keccak_986_, e keccakf1600_keccak_987_, e keccakf1600_keccak_988_, e keccakf1600_keccak_989_, e keccakf1600_keccak_98_, e keccakf1600_keccak_990_, e keccakf1600_keccak_991_, e keccakf1600_keccak_992_, e keccakf1600_keccak_993_, e keccakf1600_keccak_994_, e keccakf1600_keccak_995_, e keccakf1600_keccak_996_, e keccakf1600_keccak_997_, e keccakf1600_keccak_998_, e keccakf1600_keccak_999_, e keccakf1600_keccak_99_, e keccakf1600_keccak_9_, e memory_address, 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 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_low_leaf_nullifier_diff_inv, e nullifier_check_one, e nullifier_check_root, e nullifier_check_sel, e nullifier_check_tree_height, e nullifier_check_tree_size_before_write, e nullifier_check_updated_low_leaf_hash, e nullifier_check_write, e nullifier_check_write_low_leaf_next_index, e nullifier_check_write_low_leaf_next_nullifier, 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_sel, e public_data_read_leaf_not_exists, e public_data_read_low_leaf_hash, e public_data_read_low_leaf_index, e public_data_read_low_leaf_next_index, e public_data_read_low_leaf_next_slot, e public_data_read_low_leaf_slot, e public_data_read_low_leaf_value, e public_data_read_next_slot_inv, e public_data_read_next_slot_is_nonzero, e public_data_read_one, e public_data_read_root, e public_data_read_sel, e public_data_read_slot, e public_data_read_slot_low_leaf_slot_diff_inv, e public_data_read_tree_height, e public_data_read_value, 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 update_check_address, e update_check_block_number, e update_check_block_number_bit_size, e update_check_block_number_is_lt_block_of_change, e update_check_block_of_change_subtraction, e update_check_current_class_id, 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_shared_mutable_hash_slot, e update_check_shared_mutable_leaf_slot, e update_check_shared_mutable_slot, e update_check_update_block_of_change, 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 lookup_poseidon2_hash_poseidon2_perm_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_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_bc_hashing_poseidon2_hash_counts, 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_merkle_check_merkle_poseidon2_read_counts, e lookup_merkle_check_merkle_poseidon2_write_counts, e lookup_ff_gt_a_lo_range_counts, e lookup_ff_gt_a_hi_range_counts, e lookup_public_data_read_low_leaf_poseidon2_0_counts, e lookup_public_data_read_low_leaf_poseidon2_1_counts, e lookup_public_data_read_low_leaf_membership_counts, e lookup_public_data_read_low_leaf_slot_validation_counts, e lookup_public_data_read_low_leaf_next_slot_validation_counts, e lookup_update_check_shared_mutable_slot_poseidon2_counts, e lookup_update_check_shared_mutable_leaf_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_block_of_change_cmp_range_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_bc_retrieval_silo_deployment_nullifier_poseidon2_counts, e lookup_bc_retrieval_deployment_nullifier_read_counts, e lookup_bc_retrieval_address_derivation_counts, e lookup_bc_retrieval_update_check_counts, e lookup_bc_retrieval_class_id_derivation_counts, e lookup_bc_retrieval_bytecode_hash_is_correct_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_bitwise_integral_tag_length_counts, e lookup_bitwise_byte_operations_counts, e lookup_sha256_round_constant_counts #define AVM2_DERIVED_WITNESS_ENTITIES_E(e) e lookup_poseidon2_hash_poseidon2_perm_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_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_bc_hashing_poseidon2_hash_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_merkle_check_merkle_poseidon2_read_inv, e lookup_merkle_check_merkle_poseidon2_write_inv, e lookup_ff_gt_a_lo_range_inv, e lookup_ff_gt_a_hi_range_inv, e lookup_public_data_read_low_leaf_poseidon2_0_inv, e lookup_public_data_read_low_leaf_poseidon2_1_inv, e lookup_public_data_read_low_leaf_membership_inv, e lookup_public_data_read_low_leaf_slot_validation_inv, e lookup_public_data_read_low_leaf_next_slot_validation_inv, e lookup_update_check_shared_mutable_slot_poseidon2_inv, e lookup_update_check_shared_mutable_leaf_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_block_of_change_cmp_range_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_bc_retrieval_silo_deployment_nullifier_poseidon2_inv, e lookup_bc_retrieval_deployment_nullifier_read_inv, e lookup_bc_retrieval_address_derivation_inv, e lookup_bc_retrieval_update_check_inv, e lookup_bc_retrieval_class_id_derivation_inv, e lookup_bc_retrieval_bytecode_hash_is_correct_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_bitwise_integral_tag_length_inv, e lookup_bitwise_byte_operations_inv, e lookup_sha256_round_constant_inv @@ -20,6 +21,14 @@ namespace bb::avm2 { #define AVM2_DERIVED_WITNESS_ENTITIES AVM2_DERIVED_WITNESS_ENTITIES_E() #define AVM2_SHIFTED_ENTITIES AVM2_SHIFTED_ENTITIES_E() +======= +#define AVM2_PRECOMPUTED_ENTITIES precomputed_bitwise_input_a, precomputed_bitwise_input_b, precomputed_bitwise_op_id, precomputed_bitwise_output, precomputed_clk, precomputed_exec_opcode, precomputed_exec_opcode_base_da_gas, precomputed_exec_opcode_base_l2_gas, precomputed_exec_opcode_dynamic_da_gas, precomputed_exec_opcode_dynamic_l2_gas, precomputed_exec_opcode_value, precomputed_first_row, precomputed_instr_size, precomputed_integral_tag_length, precomputed_mem_op_reg1, precomputed_mem_op_reg2, precomputed_mem_op_reg3, precomputed_mem_op_reg4, precomputed_mem_op_reg5, precomputed_mem_op_reg6, precomputed_mem_op_reg7, precomputed_op_alu_sel, precomputed_op_bitwise_sel, precomputed_op_ecc_sel, precomputed_op_poseidon_perm_sel, precomputed_op_to_radix_sel, precomputed_opcode_out_of_range, precomputed_p_decomposition_limb, precomputed_p_decomposition_limb_index, precomputed_p_decomposition_radix, precomputed_power_of_2, precomputed_rw_1, precomputed_rw_2, precomputed_rw_3, precomputed_rw_4, precomputed_rw_5, precomputed_rw_6, precomputed_rw_7, precomputed_sel_bitwise, precomputed_sel_has_tag, precomputed_sel_integral_tag, precomputed_sel_mem_tag_out_of_range, precomputed_sel_op_dc_0, precomputed_sel_op_dc_1, precomputed_sel_op_dc_10, precomputed_sel_op_dc_11, precomputed_sel_op_dc_12, precomputed_sel_op_dc_13, precomputed_sel_op_dc_14, precomputed_sel_op_dc_15, precomputed_sel_op_dc_16, precomputed_sel_op_dc_17, precomputed_sel_op_dc_2, precomputed_sel_op_dc_3, precomputed_sel_op_dc_4, precomputed_sel_op_dc_5, precomputed_sel_op_dc_6, precomputed_sel_op_dc_7, precomputed_sel_op_dc_8, precomputed_sel_op_dc_9, precomputed_sel_p_decomposition, precomputed_sel_range_16, precomputed_sel_range_8, precomputed_sel_sha256_compression, precomputed_sel_tag_is_op2, precomputed_sel_to_radix_safe_limbs, precomputed_sha256_compression_round_constant, precomputed_subtrace_operation_id, precomputed_to_radix_safe_limbs, precomputed_zero +#define AVM2_WIRE_ENTITIES execution_input, address_derivation_address, address_derivation_address_y, address_derivation_class_id, address_derivation_deployer_addr, address_derivation_g1_x, address_derivation_g1_y, address_derivation_incoming_viewing_key_x, address_derivation_incoming_viewing_key_y, address_derivation_init_hash, address_derivation_nullifier_key_x, address_derivation_nullifier_key_y, address_derivation_outgoing_viewing_key_x, address_derivation_outgoing_viewing_key_y, address_derivation_partial_address, address_derivation_partial_address_domain_separator, address_derivation_preaddress, address_derivation_preaddress_domain_separator, address_derivation_preaddress_public_key_x, address_derivation_preaddress_public_key_y, address_derivation_public_keys_hash, address_derivation_public_keys_hash_domain_separator, address_derivation_salt, address_derivation_salted_init_hash, address_derivation_sel, address_derivation_tagging_key_x, address_derivation_tagging_key_y, alu_ia, alu_ib, alu_ic, alu_op, alu_sel_op_add, bc_decomposition_abs_diff, bc_decomposition_bytes, bc_decomposition_bytes_pc_plus_1, bc_decomposition_bytes_pc_plus_10, bc_decomposition_bytes_pc_plus_11, bc_decomposition_bytes_pc_plus_12, bc_decomposition_bytes_pc_plus_13, bc_decomposition_bytes_pc_plus_14, bc_decomposition_bytes_pc_plus_15, bc_decomposition_bytes_pc_plus_16, bc_decomposition_bytes_pc_plus_17, bc_decomposition_bytes_pc_plus_18, bc_decomposition_bytes_pc_plus_19, bc_decomposition_bytes_pc_plus_2, bc_decomposition_bytes_pc_plus_20, bc_decomposition_bytes_pc_plus_21, bc_decomposition_bytes_pc_plus_22, bc_decomposition_bytes_pc_plus_23, bc_decomposition_bytes_pc_plus_24, bc_decomposition_bytes_pc_plus_25, bc_decomposition_bytes_pc_plus_26, bc_decomposition_bytes_pc_plus_27, bc_decomposition_bytes_pc_plus_28, bc_decomposition_bytes_pc_plus_29, bc_decomposition_bytes_pc_plus_3, bc_decomposition_bytes_pc_plus_30, bc_decomposition_bytes_pc_plus_31, bc_decomposition_bytes_pc_plus_32, bc_decomposition_bytes_pc_plus_33, bc_decomposition_bytes_pc_plus_34, bc_decomposition_bytes_pc_plus_35, bc_decomposition_bytes_pc_plus_36, bc_decomposition_bytes_pc_plus_4, bc_decomposition_bytes_pc_plus_5, bc_decomposition_bytes_pc_plus_6, bc_decomposition_bytes_pc_plus_7, bc_decomposition_bytes_pc_plus_8, bc_decomposition_bytes_pc_plus_9, bc_decomposition_bytes_rem_inv, bc_decomposition_bytes_rem_min_one_inv, bc_decomposition_bytes_remaining, bc_decomposition_bytes_to_read, bc_decomposition_id, bc_decomposition_last_of_contract, bc_decomposition_packed_field, bc_decomposition_pc, bc_decomposition_sel, bc_decomposition_sel_overflow_correction_needed, bc_decomposition_sel_packed, bc_hashing_bytecode_id, bc_hashing_incremental_hash, bc_hashing_latch, bc_hashing_output_hash, bc_hashing_packed_field, bc_hashing_pc_index, bc_hashing_sel, bc_hashing_start, bc_retrieval_address, bc_retrieval_artifact_hash, bc_retrieval_block_number, bc_retrieval_bytecode_id, bc_retrieval_current_class_id, bc_retrieval_deployer_addr, bc_retrieval_deployer_protocol_contract_address, bc_retrieval_err, bc_retrieval_incoming_viewing_key_x, bc_retrieval_incoming_viewing_key_y, bc_retrieval_init_hash, bc_retrieval_nullifier_exists, bc_retrieval_nullifier_key_x, bc_retrieval_nullifier_key_y, bc_retrieval_nullifier_tree_root, bc_retrieval_original_class_id, bc_retrieval_outer_nullifier_domain_separator, bc_retrieval_outgoing_viewing_key_x, bc_retrieval_outgoing_viewing_key_y, bc_retrieval_private_function_root, bc_retrieval_public_bytecode_commitment, bc_retrieval_public_data_tree_root, bc_retrieval_salt, bc_retrieval_sel, bc_retrieval_siloed_address, bc_retrieval_tagging_key_x, bc_retrieval_tagging_key_y, bitwise_acc_ia, bitwise_acc_ib, bitwise_acc_ic, bitwise_ctr, bitwise_ctr_inv, bitwise_ctr_min_one_inv, bitwise_ia_byte, bitwise_ib_byte, bitwise_ic_byte, bitwise_last, bitwise_op_id, bitwise_sel, bitwise_start, bitwise_tag, class_id_derivation_artifact_hash, class_id_derivation_class_id, class_id_derivation_private_function_root, class_id_derivation_public_bytecode_commitment, class_id_derivation_sel, class_id_derivation_temp_constant_for_lookup, context_stack_context_id, context_stack_contract_address, context_stack_is_static, context_stack_msg_sender, context_stack_parent_calldata_offset_addr, context_stack_parent_calldata_size_addr, context_stack_pc, ecc_add_op, ecc_double_op, ecc_inv_2_p_y, ecc_inv_x_diff, ecc_inv_y_diff, ecc_lambda, ecc_p_is_inf, ecc_p_x, ecc_p_y, ecc_q_is_inf, ecc_q_x, ecc_q_y, ecc_r_is_inf, ecc_r_x, ecc_r_y, ecc_result_infinity, ecc_sel, ecc_x_match, ecc_y_match, execution_addressing_error_idx, execution_addressing_error_kind, execution_alu_sel, execution_base_address_tag, execution_base_address_val, execution_bitwise_sel, execution_bytecode_id, execution_context_id, execution_contract_address, execution_ecc_add_sel, execution_ex_opcode, execution_indirect, execution_is_static, execution_last, execution_last_child_returndata_offset_addr, execution_last_child_returndata_size_addr, execution_last_child_success, execution_mem_op1, execution_mem_op2, execution_mem_op3, execution_mem_op4, execution_mem_op5, execution_mem_op6, execution_mem_op7, execution_mem_tag1, execution_mem_tag2, execution_mem_tag3, execution_mem_tag4, execution_mem_tag5, execution_mem_tag6, execution_mem_tag7, execution_msg_sender, execution_op1, execution_op1_after_relative, execution_op2, execution_op2_after_relative, execution_op3, execution_op3_after_relative, execution_op4, execution_op4_after_relative, execution_op5, execution_op5_after_relative, execution_op6, execution_op6_after_relative, execution_op7, execution_op7_after_relative, execution_parent_calldata_offset_addr, execution_parent_calldata_size_addr, execution_pc, execution_poseidon2_perm_sel, execution_reg1, execution_reg2, execution_reg3, execution_reg4, execution_reg5, execution_reg6, execution_reg7, execution_rop1, execution_rop2, execution_rop3, execution_rop4, execution_rop5, execution_rop6, execution_rop7, execution_rw1, execution_rw2, execution_rw3, execution_rw4, execution_rw5, execution_rw6, execution_rw7, execution_sel, execution_sel_addressing_error, execution_sel_op1_is_address, execution_sel_op2_is_address, execution_sel_op3_is_address, execution_sel_op4_is_address, execution_sel_op5_is_address, execution_sel_op6_is_address, execution_sel_op7_is_address, execution_subtrace_operation_id, execution_to_radix_sel, ff_gt_a, ff_gt_a_hi, ff_gt_a_lo, ff_gt_b, ff_gt_b_hi, ff_gt_b_lo, ff_gt_borrow, ff_gt_cmp_rng_ctr, ff_gt_cmp_rng_ctr_inv, ff_gt_constant_128, ff_gt_p_a_borrow, ff_gt_p_b_borrow, ff_gt_p_sub_a_hi, ff_gt_p_sub_a_lo, ff_gt_p_sub_b_hi, ff_gt_p_sub_b_lo, ff_gt_res_hi, ff_gt_res_lo, ff_gt_result, ff_gt_sel, ff_gt_sel_gt, ff_gt_sel_shift_rng, instr_fetching_bd0, instr_fetching_bd1, instr_fetching_bd10, instr_fetching_bd11, instr_fetching_bd12, instr_fetching_bd13, instr_fetching_bd14, instr_fetching_bd15, instr_fetching_bd16, instr_fetching_bd17, instr_fetching_bd18, instr_fetching_bd19, instr_fetching_bd2, instr_fetching_bd20, instr_fetching_bd21, instr_fetching_bd22, instr_fetching_bd23, instr_fetching_bd24, instr_fetching_bd25, instr_fetching_bd26, instr_fetching_bd27, instr_fetching_bd28, instr_fetching_bd29, instr_fetching_bd3, instr_fetching_bd30, instr_fetching_bd31, instr_fetching_bd32, instr_fetching_bd33, instr_fetching_bd34, instr_fetching_bd35, instr_fetching_bd36, instr_fetching_bd4, instr_fetching_bd5, instr_fetching_bd6, instr_fetching_bd7, instr_fetching_bd8, instr_fetching_bd9, instr_fetching_bytecode_id, instr_fetching_bytecode_size, instr_fetching_bytes_to_read, instr_fetching_exec_opcode, instr_fetching_indirect, instr_fetching_instr_abs_diff, instr_fetching_instr_out_of_range, instr_fetching_instr_size, instr_fetching_op1, instr_fetching_op2, instr_fetching_op3, instr_fetching_op4, instr_fetching_op5, instr_fetching_op6, instr_fetching_op7, instr_fetching_opcode_out_of_range, instr_fetching_parsing_err, instr_fetching_pc, instr_fetching_pc_abs_diff, instr_fetching_pc_out_of_range, instr_fetching_pc_size_in_bits, instr_fetching_sel, instr_fetching_sel_has_tag, instr_fetching_sel_op_dc_0, instr_fetching_sel_op_dc_1, instr_fetching_sel_op_dc_10, instr_fetching_sel_op_dc_11, instr_fetching_sel_op_dc_12, instr_fetching_sel_op_dc_13, instr_fetching_sel_op_dc_14, instr_fetching_sel_op_dc_15, instr_fetching_sel_op_dc_16, instr_fetching_sel_op_dc_17, instr_fetching_sel_op_dc_2, instr_fetching_sel_op_dc_3, instr_fetching_sel_op_dc_4, instr_fetching_sel_op_dc_5, instr_fetching_sel_op_dc_6, instr_fetching_sel_op_dc_7, instr_fetching_sel_op_dc_8, instr_fetching_sel_op_dc_9, instr_fetching_sel_pc_in_range, instr_fetching_sel_tag_is_op2, instr_fetching_tag_out_of_range, instr_fetching_tag_value, memory_address, memory_rw, memory_sel, memory_space_id, memory_tag, memory_value, merkle_check_constant_2, merkle_check_end, merkle_check_index, merkle_check_index_is_even, merkle_check_path_len, merkle_check_read_left_node, merkle_check_read_node, merkle_check_read_output_hash, merkle_check_read_right_node, merkle_check_read_root, merkle_check_remaining_path_len_inv, merkle_check_sel, merkle_check_sibling, merkle_check_start, merkle_check_write, merkle_check_write_left_node, merkle_check_write_node, merkle_check_write_output_hash, merkle_check_write_right_node, merkle_check_write_root, nullifier_check_exists, nullifier_check_intermediate_root, nullifier_check_leaf_not_exists, nullifier_check_low_leaf_hash, nullifier_check_low_leaf_index, nullifier_check_low_leaf_next_index, nullifier_check_low_leaf_next_nullifier, nullifier_check_low_leaf_nullifier, nullifier_check_new_leaf_hash, nullifier_check_next_nullifier_inv, nullifier_check_next_nullifier_is_nonzero, nullifier_check_nullifier, nullifier_check_nullifier_low_leaf_nullifier_diff_inv, nullifier_check_one, nullifier_check_root, nullifier_check_sel, nullifier_check_tree_height, nullifier_check_tree_size_before_write, nullifier_check_updated_low_leaf_hash, nullifier_check_write, nullifier_check_write_low_leaf_next_index, nullifier_check_write_low_leaf_next_nullifier, nullifier_check_write_root, poseidon2_hash_a_0, poseidon2_hash_a_1, poseidon2_hash_a_2, poseidon2_hash_a_3, poseidon2_hash_b_0, poseidon2_hash_b_1, poseidon2_hash_b_2, poseidon2_hash_b_3, poseidon2_hash_end, poseidon2_hash_input_0, poseidon2_hash_input_1, poseidon2_hash_input_2, poseidon2_hash_input_len, poseidon2_hash_num_perm_rounds_rem, poseidon2_hash_num_perm_rounds_rem_inv, poseidon2_hash_output, poseidon2_hash_padding, poseidon2_hash_sel, poseidon2_hash_start, poseidon2_perm_B_10_0, poseidon2_perm_B_10_1, poseidon2_perm_B_10_2, poseidon2_perm_B_10_3, poseidon2_perm_B_11_0, poseidon2_perm_B_11_1, poseidon2_perm_B_11_2, poseidon2_perm_B_11_3, poseidon2_perm_B_12_0, poseidon2_perm_B_12_1, poseidon2_perm_B_12_2, poseidon2_perm_B_12_3, poseidon2_perm_B_13_0, poseidon2_perm_B_13_1, poseidon2_perm_B_13_2, poseidon2_perm_B_13_3, poseidon2_perm_B_14_0, poseidon2_perm_B_14_1, poseidon2_perm_B_14_2, poseidon2_perm_B_14_3, poseidon2_perm_B_15_0, poseidon2_perm_B_15_1, poseidon2_perm_B_15_2, poseidon2_perm_B_15_3, poseidon2_perm_B_16_0, poseidon2_perm_B_16_1, poseidon2_perm_B_16_2, poseidon2_perm_B_16_3, poseidon2_perm_B_17_0, poseidon2_perm_B_17_1, poseidon2_perm_B_17_2, poseidon2_perm_B_17_3, poseidon2_perm_B_18_0, poseidon2_perm_B_18_1, poseidon2_perm_B_18_2, poseidon2_perm_B_18_3, poseidon2_perm_B_19_0, poseidon2_perm_B_19_1, poseidon2_perm_B_19_2, poseidon2_perm_B_19_3, poseidon2_perm_B_20_0, poseidon2_perm_B_20_1, poseidon2_perm_B_20_2, poseidon2_perm_B_20_3, poseidon2_perm_B_21_0, poseidon2_perm_B_21_1, poseidon2_perm_B_21_2, poseidon2_perm_B_21_3, poseidon2_perm_B_22_0, poseidon2_perm_B_22_1, poseidon2_perm_B_22_2, poseidon2_perm_B_22_3, poseidon2_perm_B_23_0, poseidon2_perm_B_23_1, poseidon2_perm_B_23_2, poseidon2_perm_B_23_3, poseidon2_perm_B_24_0, poseidon2_perm_B_24_1, poseidon2_perm_B_24_2, poseidon2_perm_B_24_3, poseidon2_perm_B_25_0, poseidon2_perm_B_25_1, poseidon2_perm_B_25_2, poseidon2_perm_B_25_3, poseidon2_perm_B_26_0, poseidon2_perm_B_26_1, poseidon2_perm_B_26_2, poseidon2_perm_B_26_3, poseidon2_perm_B_27_0, poseidon2_perm_B_27_1, poseidon2_perm_B_27_2, poseidon2_perm_B_27_3, poseidon2_perm_B_28_0, poseidon2_perm_B_28_1, poseidon2_perm_B_28_2, poseidon2_perm_B_28_3, poseidon2_perm_B_29_0, poseidon2_perm_B_29_1, poseidon2_perm_B_29_2, poseidon2_perm_B_29_3, poseidon2_perm_B_30_0, poseidon2_perm_B_30_1, poseidon2_perm_B_30_2, poseidon2_perm_B_30_3, poseidon2_perm_B_31_0, poseidon2_perm_B_31_1, poseidon2_perm_B_31_2, poseidon2_perm_B_31_3, poseidon2_perm_B_32_0, poseidon2_perm_B_32_1, poseidon2_perm_B_32_2, poseidon2_perm_B_32_3, poseidon2_perm_B_33_0, poseidon2_perm_B_33_1, poseidon2_perm_B_33_2, poseidon2_perm_B_33_3, poseidon2_perm_B_34_0, poseidon2_perm_B_34_1, poseidon2_perm_B_34_2, poseidon2_perm_B_34_3, poseidon2_perm_B_35_0, poseidon2_perm_B_35_1, poseidon2_perm_B_35_2, poseidon2_perm_B_35_3, poseidon2_perm_B_36_0, poseidon2_perm_B_36_1, poseidon2_perm_B_36_2, poseidon2_perm_B_36_3, poseidon2_perm_B_37_0, poseidon2_perm_B_37_1, poseidon2_perm_B_37_2, poseidon2_perm_B_37_3, poseidon2_perm_B_38_0, poseidon2_perm_B_38_1, poseidon2_perm_B_38_2, poseidon2_perm_B_38_3, poseidon2_perm_B_39_0, poseidon2_perm_B_39_1, poseidon2_perm_B_39_2, poseidon2_perm_B_39_3, poseidon2_perm_B_40_0, poseidon2_perm_B_40_1, poseidon2_perm_B_40_2, poseidon2_perm_B_40_3, poseidon2_perm_B_41_0, poseidon2_perm_B_41_1, poseidon2_perm_B_41_2, poseidon2_perm_B_41_3, poseidon2_perm_B_42_0, poseidon2_perm_B_42_1, poseidon2_perm_B_42_2, poseidon2_perm_B_42_3, poseidon2_perm_B_43_0, poseidon2_perm_B_43_1, poseidon2_perm_B_43_2, poseidon2_perm_B_43_3, poseidon2_perm_B_44_0, poseidon2_perm_B_44_1, poseidon2_perm_B_44_2, poseidon2_perm_B_44_3, poseidon2_perm_B_45_0, poseidon2_perm_B_45_1, poseidon2_perm_B_45_2, poseidon2_perm_B_45_3, poseidon2_perm_B_46_0, poseidon2_perm_B_46_1, poseidon2_perm_B_46_2, poseidon2_perm_B_46_3, poseidon2_perm_B_47_0, poseidon2_perm_B_47_1, poseidon2_perm_B_47_2, poseidon2_perm_B_47_3, poseidon2_perm_B_48_0, poseidon2_perm_B_48_1, poseidon2_perm_B_48_2, poseidon2_perm_B_48_3, poseidon2_perm_B_49_0, poseidon2_perm_B_49_1, poseidon2_perm_B_49_2, poseidon2_perm_B_49_3, poseidon2_perm_B_4_0, poseidon2_perm_B_4_1, poseidon2_perm_B_4_2, poseidon2_perm_B_4_3, poseidon2_perm_B_50_0, poseidon2_perm_B_50_1, poseidon2_perm_B_50_2, poseidon2_perm_B_50_3, poseidon2_perm_B_51_0, poseidon2_perm_B_51_1, poseidon2_perm_B_51_2, poseidon2_perm_B_51_3, poseidon2_perm_B_52_0, poseidon2_perm_B_52_1, poseidon2_perm_B_52_2, poseidon2_perm_B_52_3, poseidon2_perm_B_53_0, poseidon2_perm_B_53_1, poseidon2_perm_B_53_2, poseidon2_perm_B_53_3, poseidon2_perm_B_54_0, poseidon2_perm_B_54_1, poseidon2_perm_B_54_2, poseidon2_perm_B_54_3, poseidon2_perm_B_55_0, poseidon2_perm_B_55_1, poseidon2_perm_B_55_2, poseidon2_perm_B_55_3, poseidon2_perm_B_56_0, poseidon2_perm_B_56_1, poseidon2_perm_B_56_2, poseidon2_perm_B_56_3, poseidon2_perm_B_57_0, poseidon2_perm_B_57_1, poseidon2_perm_B_57_2, poseidon2_perm_B_57_3, poseidon2_perm_B_58_0, poseidon2_perm_B_58_1, poseidon2_perm_B_58_2, poseidon2_perm_B_58_3, poseidon2_perm_B_59_0, poseidon2_perm_B_59_1, poseidon2_perm_B_59_2, poseidon2_perm_B_59_3, poseidon2_perm_B_5_0, poseidon2_perm_B_5_1, poseidon2_perm_B_5_2, poseidon2_perm_B_5_3, poseidon2_perm_B_6_0, poseidon2_perm_B_6_1, poseidon2_perm_B_6_2, poseidon2_perm_B_6_3, poseidon2_perm_B_7_0, poseidon2_perm_B_7_1, poseidon2_perm_B_7_2, poseidon2_perm_B_7_3, poseidon2_perm_B_8_0, poseidon2_perm_B_8_1, poseidon2_perm_B_8_2, poseidon2_perm_B_8_3, poseidon2_perm_B_9_0, poseidon2_perm_B_9_1, poseidon2_perm_B_9_2, poseidon2_perm_B_9_3, poseidon2_perm_EXT_LAYER_4, poseidon2_perm_EXT_LAYER_5, poseidon2_perm_EXT_LAYER_6, poseidon2_perm_EXT_LAYER_7, poseidon2_perm_T_0_4, poseidon2_perm_T_0_5, poseidon2_perm_T_0_6, poseidon2_perm_T_0_7, poseidon2_perm_T_1_4, poseidon2_perm_T_1_5, poseidon2_perm_T_1_6, poseidon2_perm_T_1_7, poseidon2_perm_T_2_4, poseidon2_perm_T_2_5, poseidon2_perm_T_2_6, poseidon2_perm_T_2_7, poseidon2_perm_T_3_4, poseidon2_perm_T_3_5, poseidon2_perm_T_3_6, poseidon2_perm_T_3_7, poseidon2_perm_T_60_4, poseidon2_perm_T_60_5, poseidon2_perm_T_60_6, poseidon2_perm_T_60_7, poseidon2_perm_T_61_4, poseidon2_perm_T_61_5, poseidon2_perm_T_61_6, poseidon2_perm_T_61_7, poseidon2_perm_T_62_4, poseidon2_perm_T_62_5, poseidon2_perm_T_62_6, poseidon2_perm_T_62_7, poseidon2_perm_T_63_4, poseidon2_perm_T_63_5, poseidon2_perm_T_63_6, poseidon2_perm_T_63_7, poseidon2_perm_a_0, poseidon2_perm_a_1, poseidon2_perm_a_2, poseidon2_perm_a_3, poseidon2_perm_b_0, poseidon2_perm_b_1, poseidon2_perm_b_2, poseidon2_perm_b_3, poseidon2_perm_sel, public_data_read_leaf_not_exists, public_data_read_low_leaf_hash, public_data_read_low_leaf_index, public_data_read_low_leaf_next_index, public_data_read_low_leaf_next_slot, public_data_read_low_leaf_slot, public_data_read_low_leaf_value, public_data_read_next_slot_inv, public_data_read_next_slot_is_nonzero, public_data_read_one, public_data_read_root, public_data_read_sel, public_data_read_slot, public_data_read_slot_low_leaf_slot_diff_inv, public_data_read_tree_height, public_data_read_value, range_check_dyn_diff, range_check_dyn_rng_chk_bits, range_check_dyn_rng_chk_pow_2, range_check_is_lte_u112, range_check_is_lte_u128, range_check_is_lte_u16, range_check_is_lte_u32, range_check_is_lte_u48, range_check_is_lte_u64, range_check_is_lte_u80, range_check_is_lte_u96, range_check_rng_chk_bits, range_check_sel, range_check_sel_r0_16_bit_rng_lookup, range_check_sel_r1_16_bit_rng_lookup, range_check_sel_r2_16_bit_rng_lookup, range_check_sel_r3_16_bit_rng_lookup, range_check_sel_r4_16_bit_rng_lookup, range_check_sel_r5_16_bit_rng_lookup, range_check_sel_r6_16_bit_rng_lookup, range_check_u16_r0, range_check_u16_r1, range_check_u16_r2, range_check_u16_r3, range_check_u16_r4, range_check_u16_r5, range_check_u16_r6, range_check_u16_r7, range_check_value, scalar_mul_bit, scalar_mul_bit_idx, scalar_mul_bit_radix, scalar_mul_end, scalar_mul_not_end, scalar_mul_point_inf, scalar_mul_point_x, scalar_mul_point_y, scalar_mul_res_inf, scalar_mul_res_x, scalar_mul_res_y, scalar_mul_scalar, scalar_mul_sel, scalar_mul_should_add, scalar_mul_start, scalar_mul_temp_inf, scalar_mul_temp_x, scalar_mul_temp_y, sha256_a, sha256_a_and_b, sha256_a_and_b_xor_a_and_c, sha256_a_and_c, sha256_a_rotr_13, sha256_a_rotr_2, sha256_a_rotr_22, sha256_a_rotr_2_xor_a_rotr_13, sha256_and_sel, sha256_b, sha256_b_and_c, sha256_c, sha256_ch, sha256_clk, sha256_computed_w_lhs, sha256_computed_w_rhs, sha256_d, sha256_e, sha256_e_and_f, sha256_e_rotr_11, sha256_e_rotr_25, sha256_e_rotr_6, sha256_e_rotr_6_xor_e_rotr_11, sha256_f, sha256_g, sha256_h, sha256_helper_w0, sha256_helper_w1, sha256_helper_w10, sha256_helper_w11, sha256_helper_w12, sha256_helper_w13, sha256_helper_w14, sha256_helper_w15, sha256_helper_w2, sha256_helper_w3, sha256_helper_w4, sha256_helper_w5, sha256_helper_w6, sha256_helper_w7, sha256_helper_w8, sha256_helper_w9, sha256_init_a, sha256_init_b, sha256_init_c, sha256_init_d, sha256_init_e, sha256_init_f, sha256_init_g, sha256_init_h, sha256_input_offset, sha256_is_input_round, sha256_latch, sha256_lhs_a_13, sha256_lhs_a_2, sha256_lhs_a_22, sha256_lhs_e_11, sha256_lhs_e_25, sha256_lhs_e_6, sha256_lhs_w_10, sha256_lhs_w_17, sha256_lhs_w_18, sha256_lhs_w_19, sha256_lhs_w_3, sha256_lhs_w_7, sha256_maj, sha256_next_a_lhs, sha256_next_a_rhs, sha256_next_e_lhs, sha256_next_e_rhs, sha256_not_e, sha256_not_e_and_g, sha256_output_a_lhs, sha256_output_a_rhs, sha256_output_b_lhs, sha256_output_b_rhs, sha256_output_c_lhs, sha256_output_c_rhs, sha256_output_d_lhs, sha256_output_d_rhs, sha256_output_e_lhs, sha256_output_e_rhs, sha256_output_f_lhs, sha256_output_f_rhs, sha256_output_g_lhs, sha256_output_g_rhs, sha256_output_h_lhs, sha256_output_h_rhs, sha256_output_offset, sha256_perform_round, sha256_rhs_a_13, sha256_rhs_a_2, sha256_rhs_a_22, sha256_rhs_e_11, sha256_rhs_e_25, sha256_rhs_e_6, sha256_rhs_w_10, sha256_rhs_w_17, sha256_rhs_w_18, sha256_rhs_w_19, sha256_rhs_w_3, sha256_rhs_w_7, sha256_round_constant, sha256_round_count, sha256_rounds_remaining, sha256_rounds_remaining_inv, sha256_s_0, sha256_s_1, sha256_sel, sha256_start, sha256_state_offset, sha256_w, sha256_w_15_rotr_18, sha256_w_15_rotr_7, sha256_w_15_rotr_7_xor_w_15_rotr_18, sha256_w_15_rshift_3, sha256_w_2_rotr_17, sha256_w_2_rotr_17_xor_w_2_rotr_19, sha256_w_2_rotr_19, sha256_w_2_rshift_10, sha256_w_s_0, sha256_w_s_1, sha256_xor_sel, to_radix_acc, to_radix_acc_under_p, to_radix_end, to_radix_exponent, to_radix_found, to_radix_is_unsafe_limb, to_radix_limb, to_radix_limb_eq_p, to_radix_limb_index, to_radix_limb_lt_p, to_radix_limb_p_diff, to_radix_limb_radix_diff, to_radix_not_end, to_radix_not_padding_limb, to_radix_p_limb, to_radix_radix, to_radix_rem_inverse, to_radix_safe_limbs, to_radix_safety_diff_inverse, to_radix_sel, to_radix_start, to_radix_value, update_check_address, update_check_block_number, update_check_block_number_bit_size, update_check_block_number_is_lt_block_of_change, update_check_block_of_change_subtraction, update_check_current_class_id, update_check_deployer_protocol_contract_address, update_check_hash_not_zero, update_check_original_class_id, update_check_public_data_tree_root, update_check_public_leaf_index_domain_separator, update_check_sel, update_check_shared_mutable_hash_slot, update_check_shared_mutable_leaf_slot, update_check_shared_mutable_slot, update_check_update_block_of_change, update_check_update_hash, update_check_update_hash_inv, update_check_update_hi_metadata, update_check_update_hi_metadata_bit_size, update_check_update_post_class_id_is_zero, update_check_update_post_class_inv, update_check_update_pre_class_id_is_zero, update_check_update_pre_class_inv, update_check_update_preimage_metadata, update_check_update_preimage_post_class_id, update_check_update_preimage_pre_class_id, update_check_updated_class_ids_slot, lookup_poseidon2_hash_poseidon2_perm_counts, lookup_to_radix_limb_range_counts, lookup_to_radix_limb_less_than_radix_range_counts, lookup_to_radix_fetch_safe_limbs_counts, lookup_to_radix_fetch_p_limb_counts, lookup_to_radix_limb_p_diff_range_counts, lookup_scalar_mul_to_radix_counts, lookup_scalar_mul_double_counts, lookup_scalar_mul_add_counts, lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts, lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts, lookup_address_derivation_partial_address_poseidon2_counts, lookup_address_derivation_public_keys_hash_poseidon2_0_counts, lookup_address_derivation_public_keys_hash_poseidon2_1_counts, lookup_address_derivation_public_keys_hash_poseidon2_2_counts, lookup_address_derivation_public_keys_hash_poseidon2_3_counts, lookup_address_derivation_public_keys_hash_poseidon2_4_counts, lookup_address_derivation_preaddress_poseidon2_counts, lookup_address_derivation_preaddress_scalar_mul_counts, lookup_address_derivation_address_ecadd_counts, lookup_bc_decomposition_bytes_are_bytes_counts, lookup_bc_decomposition_abs_diff_is_u16_counts, lookup_bc_hashing_get_packed_field_counts, lookup_bc_hashing_iv_is_len_counts, lookup_bc_hashing_poseidon2_hash_counts, lookup_range_check_dyn_rng_chk_pow_2_counts, lookup_range_check_dyn_diff_is_u16_counts, lookup_range_check_r0_is_u16_counts, lookup_range_check_r1_is_u16_counts, lookup_range_check_r2_is_u16_counts, lookup_range_check_r3_is_u16_counts, lookup_range_check_r4_is_u16_counts, lookup_range_check_r5_is_u16_counts, lookup_range_check_r6_is_u16_counts, lookup_range_check_r7_is_u16_counts, lookup_merkle_check_merkle_poseidon2_read_counts, lookup_merkle_check_merkle_poseidon2_write_counts, lookup_ff_gt_a_lo_range_counts, lookup_ff_gt_a_hi_range_counts, lookup_public_data_read_low_leaf_poseidon2_0_counts, lookup_public_data_read_low_leaf_poseidon2_1_counts, lookup_public_data_read_low_leaf_membership_counts, lookup_public_data_read_low_leaf_slot_validation_counts, lookup_public_data_read_low_leaf_next_slot_validation_counts, lookup_update_check_shared_mutable_slot_poseidon2_counts, lookup_update_check_shared_mutable_leaf_slot_poseidon2_counts, lookup_update_check_update_hash_public_data_read_counts, lookup_update_check_update_hash_poseidon2_counts, lookup_update_check_update_hi_metadata_range_counts, lookup_update_check_update_lo_metadata_range_counts, lookup_update_check_block_of_change_cmp_range_counts, lookup_nullifier_check_low_leaf_poseidon2_counts, lookup_nullifier_check_updated_low_leaf_poseidon2_counts, lookup_nullifier_check_low_leaf_merkle_check_counts, lookup_nullifier_check_low_leaf_nullifier_validation_counts, lookup_nullifier_check_low_leaf_next_nullifier_validation_counts, lookup_nullifier_check_new_leaf_poseidon2_counts, lookup_nullifier_check_new_leaf_merkle_check_counts, lookup_bc_retrieval_silo_deployment_nullifier_poseidon2_counts, lookup_bc_retrieval_deployment_nullifier_read_counts, lookup_bc_retrieval_address_derivation_counts, lookup_bc_retrieval_update_check_counts, lookup_bc_retrieval_class_id_derivation_counts, lookup_bc_retrieval_bytecode_hash_is_correct_counts, lookup_instr_fetching_pc_abs_diff_positive_counts, lookup_instr_fetching_instr_abs_diff_positive_counts, lookup_instr_fetching_tag_value_validation_counts, lookup_instr_fetching_bytecode_size_from_bc_dec_counts, lookup_instr_fetching_bytes_from_bc_dec_counts, lookup_instr_fetching_wire_instruction_info_counts, lookup_class_id_derivation_class_id_poseidon2_0_counts, lookup_class_id_derivation_class_id_poseidon2_1_counts, lookup_bitwise_integral_tag_length_counts, lookup_bitwise_byte_operations_counts, lookup_sha256_round_constant_counts +#define AVM2_DERIVED_WITNESS_ENTITIES lookup_poseidon2_hash_poseidon2_perm_inv, lookup_to_radix_limb_range_inv, lookup_to_radix_limb_less_than_radix_range_inv, lookup_to_radix_fetch_safe_limbs_inv, lookup_to_radix_fetch_p_limb_inv, lookup_to_radix_limb_p_diff_range_inv, lookup_scalar_mul_to_radix_inv, lookup_scalar_mul_double_inv, lookup_scalar_mul_add_inv, lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv, lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv, lookup_address_derivation_partial_address_poseidon2_inv, lookup_address_derivation_public_keys_hash_poseidon2_0_inv, lookup_address_derivation_public_keys_hash_poseidon2_1_inv, lookup_address_derivation_public_keys_hash_poseidon2_2_inv, lookup_address_derivation_public_keys_hash_poseidon2_3_inv, lookup_address_derivation_public_keys_hash_poseidon2_4_inv, lookup_address_derivation_preaddress_poseidon2_inv, lookup_address_derivation_preaddress_scalar_mul_inv, lookup_address_derivation_address_ecadd_inv, lookup_bc_decomposition_bytes_are_bytes_inv, lookup_bc_decomposition_abs_diff_is_u16_inv, lookup_bc_hashing_get_packed_field_inv, lookup_bc_hashing_iv_is_len_inv, lookup_bc_hashing_poseidon2_hash_inv, lookup_range_check_dyn_rng_chk_pow_2_inv, lookup_range_check_dyn_diff_is_u16_inv, lookup_range_check_r0_is_u16_inv, lookup_range_check_r1_is_u16_inv, lookup_range_check_r2_is_u16_inv, lookup_range_check_r3_is_u16_inv, lookup_range_check_r4_is_u16_inv, lookup_range_check_r5_is_u16_inv, lookup_range_check_r6_is_u16_inv, lookup_range_check_r7_is_u16_inv, lookup_merkle_check_merkle_poseidon2_read_inv, lookup_merkle_check_merkle_poseidon2_write_inv, lookup_ff_gt_a_lo_range_inv, lookup_ff_gt_a_hi_range_inv, lookup_public_data_read_low_leaf_poseidon2_0_inv, lookup_public_data_read_low_leaf_poseidon2_1_inv, lookup_public_data_read_low_leaf_membership_inv, lookup_public_data_read_low_leaf_slot_validation_inv, lookup_public_data_read_low_leaf_next_slot_validation_inv, lookup_update_check_shared_mutable_slot_poseidon2_inv, lookup_update_check_shared_mutable_leaf_slot_poseidon2_inv, lookup_update_check_update_hash_public_data_read_inv, lookup_update_check_update_hash_poseidon2_inv, lookup_update_check_update_hi_metadata_range_inv, lookup_update_check_update_lo_metadata_range_inv, lookup_update_check_block_of_change_cmp_range_inv, lookup_nullifier_check_low_leaf_poseidon2_inv, lookup_nullifier_check_updated_low_leaf_poseidon2_inv, lookup_nullifier_check_low_leaf_merkle_check_inv, lookup_nullifier_check_low_leaf_nullifier_validation_inv, lookup_nullifier_check_low_leaf_next_nullifier_validation_inv, lookup_nullifier_check_new_leaf_poseidon2_inv, lookup_nullifier_check_new_leaf_merkle_check_inv, lookup_bc_retrieval_silo_deployment_nullifier_poseidon2_inv, lookup_bc_retrieval_deployment_nullifier_read_inv, lookup_bc_retrieval_address_derivation_inv, lookup_bc_retrieval_update_check_inv, lookup_bc_retrieval_class_id_derivation_inv, lookup_bc_retrieval_bytecode_hash_is_correct_inv, lookup_instr_fetching_pc_abs_diff_positive_inv, lookup_instr_fetching_instr_abs_diff_positive_inv, lookup_instr_fetching_tag_value_validation_inv, lookup_instr_fetching_bytecode_size_from_bc_dec_inv, lookup_instr_fetching_bytes_from_bc_dec_inv, lookup_instr_fetching_wire_instruction_info_inv, lookup_class_id_derivation_class_id_poseidon2_0_inv, lookup_class_id_derivation_class_id_poseidon2_1_inv, lookup_bitwise_integral_tag_length_inv, lookup_bitwise_byte_operations_inv, lookup_sha256_round_constant_inv +#define AVM2_SHIFTED_ENTITIES bc_decomposition_bytes_shift, bc_decomposition_bytes_pc_plus_1_shift, bc_decomposition_bytes_pc_plus_10_shift, bc_decomposition_bytes_pc_plus_11_shift, bc_decomposition_bytes_pc_plus_12_shift, bc_decomposition_bytes_pc_plus_13_shift, bc_decomposition_bytes_pc_plus_14_shift, bc_decomposition_bytes_pc_plus_15_shift, bc_decomposition_bytes_pc_plus_16_shift, bc_decomposition_bytes_pc_plus_17_shift, bc_decomposition_bytes_pc_plus_18_shift, bc_decomposition_bytes_pc_plus_19_shift, bc_decomposition_bytes_pc_plus_2_shift, bc_decomposition_bytes_pc_plus_20_shift, bc_decomposition_bytes_pc_plus_21_shift, bc_decomposition_bytes_pc_plus_22_shift, bc_decomposition_bytes_pc_plus_23_shift, bc_decomposition_bytes_pc_plus_24_shift, bc_decomposition_bytes_pc_plus_25_shift, bc_decomposition_bytes_pc_plus_26_shift, bc_decomposition_bytes_pc_plus_27_shift, bc_decomposition_bytes_pc_plus_28_shift, bc_decomposition_bytes_pc_plus_29_shift, bc_decomposition_bytes_pc_plus_3_shift, bc_decomposition_bytes_pc_plus_30_shift, bc_decomposition_bytes_pc_plus_31_shift, bc_decomposition_bytes_pc_plus_32_shift, bc_decomposition_bytes_pc_plus_33_shift, bc_decomposition_bytes_pc_plus_34_shift, bc_decomposition_bytes_pc_plus_35_shift, bc_decomposition_bytes_pc_plus_4_shift, bc_decomposition_bytes_pc_plus_5_shift, bc_decomposition_bytes_pc_plus_6_shift, bc_decomposition_bytes_pc_plus_7_shift, bc_decomposition_bytes_pc_plus_8_shift, bc_decomposition_bytes_pc_plus_9_shift, bc_decomposition_bytes_remaining_shift, bc_decomposition_id_shift, bc_decomposition_pc_shift, bc_decomposition_sel_shift, bc_hashing_bytecode_id_shift, bc_hashing_incremental_hash_shift, bc_hashing_pc_index_shift, bc_hashing_sel_shift, bc_hashing_start_shift, bitwise_acc_ia_shift, bitwise_acc_ib_shift, bitwise_acc_ic_shift, bitwise_ctr_shift, bitwise_op_id_shift, execution_sel_shift, ff_gt_a_hi_shift, ff_gt_a_lo_shift, ff_gt_b_hi_shift, ff_gt_b_lo_shift, ff_gt_cmp_rng_ctr_shift, ff_gt_p_sub_a_hi_shift, ff_gt_p_sub_a_lo_shift, ff_gt_p_sub_b_hi_shift, ff_gt_p_sub_b_lo_shift, ff_gt_sel_shift, ff_gt_sel_gt_shift, merkle_check_index_shift, merkle_check_path_len_shift, merkle_check_read_node_shift, merkle_check_read_root_shift, merkle_check_sel_shift, merkle_check_start_shift, merkle_check_write_shift, merkle_check_write_node_shift, merkle_check_write_root_shift, poseidon2_hash_a_0_shift, poseidon2_hash_a_1_shift, poseidon2_hash_a_2_shift, poseidon2_hash_a_3_shift, poseidon2_hash_input_0_shift, poseidon2_hash_input_1_shift, poseidon2_hash_input_2_shift, poseidon2_hash_num_perm_rounds_rem_shift, poseidon2_hash_output_shift, poseidon2_hash_sel_shift, poseidon2_hash_start_shift, scalar_mul_bit_idx_shift, scalar_mul_point_inf_shift, scalar_mul_point_x_shift, scalar_mul_point_y_shift, scalar_mul_res_inf_shift, scalar_mul_res_x_shift, scalar_mul_res_y_shift, scalar_mul_scalar_shift, scalar_mul_sel_shift, scalar_mul_start_shift, scalar_mul_temp_inf_shift, scalar_mul_temp_x_shift, scalar_mul_temp_y_shift, sha256_a_shift, sha256_b_shift, sha256_c_shift, sha256_d_shift, sha256_e_shift, sha256_f_shift, sha256_g_shift, sha256_h_shift, sha256_helper_w0_shift, sha256_helper_w1_shift, sha256_helper_w10_shift, sha256_helper_w11_shift, sha256_helper_w12_shift, sha256_helper_w13_shift, sha256_helper_w14_shift, sha256_helper_w15_shift, sha256_helper_w2_shift, sha256_helper_w3_shift, sha256_helper_w4_shift, sha256_helper_w5_shift, sha256_helper_w6_shift, sha256_helper_w7_shift, sha256_helper_w8_shift, sha256_helper_w9_shift, sha256_rounds_remaining_shift, sha256_sel_shift, sha256_start_shift, to_radix_acc_shift, to_radix_acc_under_p_shift, to_radix_exponent_shift, to_radix_limb_shift, to_radix_limb_eq_p_shift, to_radix_limb_index_shift, to_radix_limb_lt_p_shift, to_radix_not_padding_limb_shift, to_radix_radix_shift, to_radix_safe_limbs_shift, to_radix_sel_shift, to_radix_start_shift, to_radix_value_shift +#define AVM2_TO_BE_SHIFTED(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.bitwise_acc_ia, e.bitwise_acc_ib, e.bitwise_acc_ic, e.bitwise_ctr, e.bitwise_op_id, e.execution_sel, 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_gt, 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.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 +#define AVM2_ALL_ENTITIES AVM2_PRECOMPUTED_ENTITIES, AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES, AVM2_SHIFTED_ENTITIES +>>>>>>> e9be05ff21 (feat: exec opcode spec table) #define AVM2_UNSHIFTED_ENTITIES AVM2_PRECOMPUTED_ENTITIES, AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES #define AVM2_WITNESS_ENTITIES AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES #define AVM2_ALL_ENTITIES AVM2_ALL_ENTITIES_E() @@ -37,8 +46,13 @@ enum class ColumnAndShifts { SENTINEL_DO_NOT_USE, }; +<<<<<<< HEAD constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2206; constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2071; +======= +constexpr auto NUM_COLUMNS_WITH_SHIFTS = 1276; +constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 1141; +>>>>>>> 71547c5a4a (feat: exec opcode spec table) 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 6eef092993a5..d02bd407ea04 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp @@ -50,11 +50,19 @@ namespace bb::avm2 { struct AvmFlavorVariables { +<<<<<<< HEAD static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 45; static constexpr size_t NUM_WITNESS_ENTITIES = 2026; static constexpr size_t NUM_SHIFTED_ENTITIES = 135; static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; static constexpr size_t NUM_ALL_ENTITIES = 2206; +======= + static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 70; + static constexpr size_t NUM_WITNESS_ENTITIES = 1071; + static constexpr size_t NUM_SHIFTED_ENTITIES = 135; + static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; + static constexpr size_t NUM_ALL_ENTITIES = 1276; +>>>>>>> 71547c5a4a (feat: exec opcode spec table) // Need to be templated for recursive verifier template diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp index 7f2faf83180e..2f2b1ce7db65 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp @@ -6,6 +6,7 @@ #include "barretenberg/vm2/common/aztec_types.hpp" #include "barretenberg/vm2/common/memory_types.hpp" #include "barretenberg/vm2/common/opcodes.hpp" +#include "barretenberg/vm2/common/tagged_value.hpp" #include "barretenberg/vm2/simulation/events/addressing_event.hpp" #include "barretenberg/vm2/simulation/events/bytecode_events.hpp" #include "barretenberg/vm2/simulation/events/context_events.hpp" @@ -22,6 +23,11 @@ struct ExecutionEvent { ExecutionOpCode opcode; std::vector resolved_operands; + // Inputs and Outputs for a gadget/subtrace used when allocating registers in the execution trace. + std::vector inputs; + // todo(ilyas): this is a vector because GETCONTRACTINSTANCE has 2 outputs, we should change this to 1 + std::vector output; + // Sub-events. AddressingEvent addressing_event; ContextEvent context_event; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp index bd643be86e53..9e2aaf631006 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp @@ -20,6 +20,9 @@ void Execution::add(ContextInterface& context, MemoryAddress a_addr, MemoryAddre MemoryValue b = memory.get(b_addr); MemoryValue c = alu.add(a, b); memory.set(dst_addr, c); + + set_inputs({ a, b }); + set_outputs({ c }); } // TODO: My dispatch system makes me have a uint8_t tag. Rethink. @@ -135,6 +138,9 @@ ExecutionResult Execution::execute_internal(ContextInterface& context) // Execute the opcode. dispatch_opcode(opcode, context, resolved_operands); + // TODO: we set the inputs and outputs here and into the execution event, but maybe there's a better way + ex_event.inputs = get_inputs(); + ex_event.output = get_outputs(); // Move on to the next pc. context.set_pc(context.get_next_pc()); diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp index 6ed83debfa51..278ba82b34de 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp @@ -10,6 +10,7 @@ #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/common/memory_types.hpp" #include "barretenberg/vm2/common/opcodes.hpp" +#include "barretenberg/vm2/common/tagged_value.hpp" #include "barretenberg/vm2/simulation/addressing.hpp" #include "barretenberg/vm2/simulation/alu.hpp" #include "barretenberg/vm2/simulation/context.hpp" @@ -66,6 +67,13 @@ class Execution : public ExecutionInterface { void call(ContextInterface& context, MemoryAddress addr, MemoryAddress cd_offset, MemoryAddress cd_size); void ret(ContextInterface& context, MemoryAddress ret_offset, MemoryAddress ret_size_offset); + // TODO(#13683): This is leaking circuit implementation details. We should have a better way to do this. + // Setters for inputs and outputs for gadgets/subtraces. These are used for register allocation. + void set_inputs(std::vector inputs) { this->inputs = std::move(inputs); } + void set_outputs(std::vector outputs) { this->outputs = std::move(outputs); } + const std::vector& get_inputs() const { return inputs; } + const std::vector& get_outputs() const { return outputs; } + private: void set_execution_result(ExecutionResult exec_result) { this->exec_result = exec_result; } ExecutionResult get_execution_result() const { return exec_result; } @@ -89,6 +97,9 @@ class Execution : public ExecutionInterface { EventEmitterInterface& ctx_stack_events; ExecutionResult exec_result; + + std::vector inputs; + std::vector outputs; }; } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp index 2b4a6afcade9..946a8053ef27 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp @@ -58,7 +58,6 @@ TEST_F(ExecutionSimulationTest, Add) TEST_F(ExecutionSimulationTest, Call) { - AztecAddress parent_address = 1; AztecAddress nested_address = 2; MemoryValue nested_address_value = MemoryValue::from(nested_address); diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp index f256f4cebe4c..7afe1b60c61c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp @@ -7,15 +7,23 @@ #include "barretenberg/common/log.hpp" #include "barretenberg/common/zip_view.hpp" +#include "barretenberg/vm2/common/instruction_spec.hpp" #include "barretenberg/vm2/simulation/events/addressing_event.hpp" #include "barretenberg/vm2/simulation/events/event_emitter.hpp" #include "barretenberg/vm2/simulation/events/execution_event.hpp" #include "barretenberg/vm2/simulation/lib/serialization.hpp" +#include "barretenberg/vm2/tracegen/lib/instruction_spec.hpp" namespace bb::avm2::tracegen { namespace { -constexpr size_t operand_columns = 4; +constexpr size_t operand_columns = 7; + +struct RegisterInfo { + TaggedValue value = TaggedValue::from(0); + uint8_t mem_op = 0; + uint8_t r_w = 0; +}; } // namespace @@ -37,6 +45,9 @@ void ExecutionTraceBuilder::process( const auto& ex_event = *ex_event_ptr; const auto& addr_event = ex_event.addressing_event; + // TODO(ilyas): These operands will likely also need to obey the exec instruction spec, i.e. a SET will require + // the sole operand in op3 instead of "compactly" in op1. Ideally this encoding is done in EXEC_INSTRUCTION_SPEC + // and we can use that to fill in the operands here. auto operands = ex_event.wire_instruction.operands; assert(operands.size() <= operand_columns); operands.resize(operand_columns, simulation::Operand::from(0)); @@ -44,26 +55,98 @@ void ExecutionTraceBuilder::process( assert(resolved_operands.size() <= operand_columns); resolved_operands.resize(operand_columns, simulation::Operand::from(0)); - trace.set(row, - { { - { C::execution_sel, 1 }, // active execution trace - { C::execution_clk, row }, // TODO: we may want this in the event - { C::execution_ex_opcode, static_cast(ex_event.opcode) }, - { C::execution_op1, static_cast(operands.at(0)) }, - { C::execution_op2, static_cast(operands.at(1)) }, - { C::execution_op3, static_cast(operands.at(2)) }, - { C::execution_op4, static_cast(operands.at(3)) }, - { C::execution_bytecode_id, ex_event.bytecode_id }, - { C::execution_rop1, static_cast(resolved_operands.at(0)) }, - { C::execution_rop2, static_cast(resolved_operands.at(1)) }, - { C::execution_rop3, static_cast(resolved_operands.at(2)) }, - { C::execution_rop4, static_cast(resolved_operands.at(3)) }, - } }); + std::array registers = {}; + size_t input_counter = 0; + size_t output_counter = 0; + for (size_t i = 0; i < operand_columns; ++i) { + auto register_info = REGISTER_INFO_MAP.at(ex_event.opcode); + // Check if this register for this opcode is a memory operation. + uint8_t mem_op = (register_info >> (2 * i) & 1); + // Check if this register for this opcode is a read/write operation. + uint8_t r_w = (register_info >> (2 * i + 1) & 1); + TaggedValue register_value = TaggedValue::from(0); + if (mem_op == 1) { + if (r_w == 1) { + // If this is a write operation, we need to get the value from the output. + register_value = ex_event.output[output_counter++]; + } else { + // If this is a read operation, we need to get the value from the input. + register_value = ex_event.inputs[input_counter++]; + } + } + registers[i] = { .value = register_value, .mem_op = mem_op, .r_w = r_w }; + } + auto dispatch_to_subtrace = SUBTRACE_INFO_MAP.at(ex_event.opcode); + + trace.set( + row, + { { + { C::execution_sel, 1 }, // active execution trace + { C::execution_ex_opcode, static_cast(ex_event.opcode) }, + { C::execution_bytecode_id, ex_event.bytecode_id }, + // Operands + { C::execution_op1, operands.at(0) }, + { C::execution_op2, operands.at(1) }, + { C::execution_op3, operands.at(2) }, + { C::execution_op4, operands.at(3) }, + { C::execution_op5, operands.at(4) }, + { C::execution_op6, operands.at(5) }, + { C::execution_op7, operands.at(6) }, + // Resolved Operands + { C::execution_rop1, resolved_operands.at(0) }, + { C::execution_rop2, resolved_operands.at(1) }, + { C::execution_rop3, resolved_operands.at(2) }, + { C::execution_rop4, resolved_operands.at(3) }, + { C::execution_rop5, resolved_operands.at(4) }, + { C::execution_rop6, resolved_operands.at(5) }, + { C::execution_rop7, resolved_operands.at(6) }, + // Selectors for memory operations + { C::execution_mem_op1, registers[0].mem_op }, + { C::execution_mem_op2, registers[1].mem_op }, + { C::execution_mem_op3, registers[2].mem_op }, + { C::execution_mem_op4, registers[3].mem_op }, + { C::execution_mem_op5, registers[4].mem_op }, + { C::execution_mem_op6, registers[5].mem_op }, + { C::execution_mem_op7, registers[6].mem_op }, + // Read / Write Selectors + { C::execution_rw1, registers[0].r_w }, + { C::execution_rw2, registers[1].r_w }, + { C::execution_rw3, registers[2].r_w }, + { C::execution_rw4, registers[3].r_w }, + { C::execution_rw5, registers[4].r_w }, + { C::execution_rw6, registers[5].r_w }, + { C::execution_rw7, registers[6].r_w }, + // Register Values + { C::execution_reg1, registers[0].value.as_ff() }, + { C::execution_reg2, registers[1].value.as_ff() }, + { C::execution_reg3, registers[2].value.as_ff() }, + { C::execution_reg4, registers[3].value.as_ff() }, + { C::execution_reg5, registers[4].value.as_ff() }, + { C::execution_reg6, registers[5].value.as_ff() }, + { C::execution_reg7, registers[6].value.as_ff() }, + // Associated Mem Tags of Register values + { C::execution_mem_tag1, static_cast(registers[0].value.get_tag()) }, + { C::execution_mem_tag2, static_cast(registers[1].value.get_tag()) }, + { C::execution_mem_tag3, static_cast(registers[2].value.get_tag()) }, + { C::execution_mem_tag4, static_cast(registers[3].value.get_tag()) }, + { C::execution_mem_tag5, static_cast(registers[4].value.get_tag()) }, + { C::execution_mem_tag6, static_cast(registers[5].value.get_tag()) }, + { C::execution_mem_tag7, static_cast(registers[6].value.get_tag()) }, + // Selector Id + { C::execution_subtrace_operation_id, dispatch_to_subtrace.subtrace_operation_id }, + // Selectors + { C::execution_alu_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::ALU ? 1 : 0 }, + { C::execution_bitwise_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::BITWISE ? 1 : 0 }, + { C::execution_poseidon2_perm_sel, + dispatch_to_subtrace.subtrace_selector == SubtraceSel::POSEIDON2PERM ? 1 : 0 }, + { C::execution_to_radix_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::TORADIXBE ? 1 : 0 }, + } }); auto operands_after_relative = addr_event.after_relative; assert(operands_after_relative.size() <= operand_columns); operands_after_relative.resize(operand_columns, simulation::Operand::from(0)); + // Addressing trace.set( row, { { @@ -77,10 +160,17 @@ void ExecutionTraceBuilder::process( { C::execution_sel_op2_is_address, addr_event.spec->num_addresses <= 2 ? 1 : 0 }, { C::execution_sel_op3_is_address, addr_event.spec->num_addresses <= 3 ? 1 : 0 }, { C::execution_sel_op4_is_address, addr_event.spec->num_addresses <= 4 ? 1 : 0 }, - { C::execution_op1_after_relative, static_cast(operands_after_relative.at(0)) }, - { C::execution_op2_after_relative, static_cast(operands_after_relative.at(1)) }, - { C::execution_op3_after_relative, static_cast(operands_after_relative.at(2)) }, - { C::execution_op4_after_relative, static_cast(operands_after_relative.at(3)) }, + { C::execution_sel_op5_is_address, addr_event.spec->num_addresses <= 5 ? 1 : 0 }, + { C::execution_sel_op6_is_address, addr_event.spec->num_addresses <= 6 ? 1 : 0 }, + { C::execution_sel_op7_is_address, addr_event.spec->num_addresses <= 7 ? 1 : 0 }, + // After Relative + { C::execution_op1_after_relative, operands_after_relative.at(0) }, + { C::execution_op2_after_relative, operands_after_relative.at(1) }, + { C::execution_op3_after_relative, operands_after_relative.at(2) }, + { C::execution_op4_after_relative, operands_after_relative.at(3) }, + { C::execution_op5_after_relative, operands_after_relative.at(4) }, + { C::execution_op6_after_relative, operands_after_relative.at(5) }, + { C::execution_op7_after_relative, operands_after_relative.at(6) }, } }); // Context diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp new file mode 100644 index 000000000000..a4e565956b87 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp @@ -0,0 +1,76 @@ +#include "barretenberg/vm2/tracegen/execution_trace.hpp" + +#include +#include +#include + +#include "barretenberg/vm2/common/aztec_constants.hpp" +#include "barretenberg/vm2/common/opcodes.hpp" +#include "barretenberg/vm2/constraining/flavor_settings.hpp" +#include "barretenberg/vm2/constraining/full_row.hpp" +#include "barretenberg/vm2/testing/instruction_builder.hpp" +#include "barretenberg/vm2/tracegen/range_check_trace.hpp" +#include "barretenberg/vm2/tracegen/test_trace_container.hpp" + +namespace bb::avm2::tracegen { +namespace { + +using ::bb::avm2::testing::InstructionBuilder; +using enum ::bb::avm2::WireOpCode; + +using ::testing::AllOf; +using ::testing::Contains; +using ::testing::Field; + +using R = TestTraceContainer::Row; +using FF = R::FF; + +TEST(ExecutionTraceGenTest, RegisterAllocation) +{ + TestTraceContainer trace; + ExecutionTraceBuilder builder; + + // Some inputs + ExecInstructionSpec spec = { + .num_addresses = 3, .gas_cost = { .base_l2 = AVM_ADD_BASE_L2_GAS, .base_da = 0, .dyn_l2 = 0, .dyn_da = 0 } + }; + // Use the instruction builder - we can make the operands more complex + const auto instr = InstructionBuilder(WireOpCode::ADD_8) + // All operands are direct - for simplicity + .operand(0) + .operand(0) + .operand(0) + .build(); + simulation::AddressingEvent addressing_event{ + .instruction = instr, + .spec = &spec, + }; + + auto ex_event = simulation::ExecutionEvent::allocate(); + ex_event.inputs = { TaggedValue::from_tag(ValueTag::U16, 5), TaggedValue::from_tag(ValueTag::U16, 3) }; + ex_event.output = { TaggedValue::from_tag(ValueTag::U16, 8) }; + ex_event.opcode = ExecutionOpCode::ADD; + + ex_event.addressing_event = addressing_event; + + builder.process({ ex_event }, trace); + // todo: Test doesnt check the other register fields are zeroed out. + EXPECT_THAT(trace.as_rows(), + AllOf(Contains(Field(&R::execution_sel, 1)), + Contains(Field(&R::execution_alu_sel, 1)), + Contains(Field(&R::execution_reg1, 5)), + Contains(Field(&R::execution_reg2, 3)), + Contains(Field(&R::execution_reg3, 8)), + Contains(Field(&R::execution_mem_tag1, /*U16=*/3)), + Contains(Field(&R::execution_mem_tag2, /*U16=*/3)), + Contains(Field(&R::execution_mem_tag3, /*U16=*/3)), + Contains(Field(&R::execution_mem_op1, 1)), + Contains(Field(&R::execution_mem_op2, 1)), + Contains(Field(&R::execution_mem_op3, 1)), + Contains(Field(&R::execution_rw1, 0)), + Contains(Field(&R::execution_rw2, 0)), + Contains(Field(&R::execution_rw3, 1)))); +} + +} // namespace +} // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp new file mode 100644 index 000000000000..68237499cd13 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp @@ -0,0 +1,81 @@ +#include "barretenberg/vm2/tracegen/lib/instruction_spec.hpp" + +#include +#include +#include +#include + +#include "barretenberg/vm2/common/aztec_constants.hpp" +#include "barretenberg/vm2/common/opcodes.hpp" + +namespace bb::avm2::tracegen { + +RegisterMemInfo& RegisterMemInfo::has_inputs(uint16_t num_inputs) +{ + for (uint16_t i = 0; i < num_inputs; ++i) { + encoded_register_info |= (read_encoding << (i * 2)); + } + write_index = num_inputs != 0 ? num_inputs : 2; // Hack in case of no inputs + return *this; +} + +RegisterMemInfo& RegisterMemInfo::has_outputs(uint16_t num_outputs) +{ + for (uint16_t i = 0; i < num_outputs; ++i) { + encoded_register_info |= (write_encoding << (write_index * 2)); + write_index++; + } + return *this; +} + +const std::unordered_map SUBTRACE_INFO_MAP = { + // Map each ExecutionOpcode to a SubtraceInfo + { ExecutionOpCode::ADD, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 0 } }, + { ExecutionOpCode::SUB, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 1 } }, + { ExecutionOpCode::MUL, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 2 } }, + { ExecutionOpCode::DIV, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 3 } }, + { ExecutionOpCode::FDIV, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 4 } }, + { ExecutionOpCode::EQ, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 5 } }, + { ExecutionOpCode::LT, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 6 } }, + { ExecutionOpCode::LTE, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 7 } }, + // Bitwise + { ExecutionOpCode::AND, { .subtrace_selector = SubtraceSel::BITWISE, .subtrace_operation_id = 0 } }, + { ExecutionOpCode::OR, { .subtrace_selector = SubtraceSel::BITWISE, .subtrace_operation_id = 1 } }, + { ExecutionOpCode::XOR, { .subtrace_selector = SubtraceSel::BITWISE, .subtrace_operation_id = 2 } }, + // Toradixbe + { ExecutionOpCode::TORADIXBE, { .subtrace_selector = SubtraceSel::TORADIXBE, .subtrace_operation_id = 0 } }, + // ECC + { ExecutionOpCode::ECADD, { .subtrace_selector = SubtraceSel::ECC, .subtrace_operation_id = 0 } }, + // Data Copy + { ExecutionOpCode::CALLDATACOPY, { .subtrace_selector = SubtraceSel::DATACOPY, .subtrace_operation_id = 0 } }, + { ExecutionOpCode::RETURNDATACOPY, { .subtrace_selector = SubtraceSel::DATACOPY, .subtrace_operation_id = 1 } }, + // Poseidon2Perm + { ExecutionOpCode::POSEIDON2PERM, { .subtrace_selector = SubtraceSel::POSEIDON2PERM, .subtrace_operation_id = 0 } }, + // Execution + { ExecutionOpCode::SET, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 1 } }, + { ExecutionOpCode::MOV, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 2 } }, + { ExecutionOpCode::JUMP, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 3 } }, + { ExecutionOpCode::JUMPI, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 4 } }, + { ExecutionOpCode::CALL, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 5 } }, + { ExecutionOpCode::STATICCALL, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 6 } }, + { ExecutionOpCode::INTERNALCALL, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 7 } }, + { ExecutionOpCode::INTERNALRETURN, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 8 } }, + { ExecutionOpCode::RETURN, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 9 } }, + { ExecutionOpCode::REVERT, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 10 } }, + { ExecutionOpCode::SUCCESSCOPY, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 11 } }, + { ExecutionOpCode::RETURNDATASIZE, { .subtrace_selector = SubtraceSel::EXECUTION, .subtrace_operation_id = 12 } }, +}; + +// Maps Execution opcodes to their register + memory accesses +// TODO: This will need to revisited, we will only be sure of the access patterns when we do the opcodes +const std::unordered_map REGISTER_INFO_MAP = { { + { ExecutionOpCode::ADD, RegisterMemInfo().has_inputs(2).has_outputs(1).encode() }, + { ExecutionOpCode::SET, RegisterMemInfo().has_inputs(0).has_outputs(1).encode() }, + { ExecutionOpCode::MOV, RegisterMemInfo().has_inputs(1).has_outputs(1).encode() }, + { ExecutionOpCode::CALL, RegisterMemInfo().has_inputs(3).encode() }, + { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(1).encode() }, + { ExecutionOpCode::JUMP, RegisterMemInfo().encode() }, + { ExecutionOpCode::JUMPI, RegisterMemInfo().has_inputs(1).encode() }, +} }; + +} // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp new file mode 100644 index 000000000000..78d209f0f99e --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include +#include + +#include "barretenberg/vm2/common/opcodes.hpp" + +namespace bb::avm2::tracegen { + +enum class SubtraceSel : uint8_t { + ALU, + BITWISE, + TORADIXBE, + POSEIDON2PERM, + ECC, + DATACOPY, + EXECUTION, +}; + +struct SubtraceInfo { + SubtraceSel subtrace_selector; + uint8_t subtrace_operation_id; +}; + +// This builder is used to generate the register information based on the number of inputs and outputs. +// It encodes the information into a 16-bit integer based on the following scheme: +// (1) Each register's access is represented by 2 bits: a read/write bit and an is_active bit. +// (2) It is little-endian encoded where the least significant bit (LSB) is the active bit. +// (3) An input(read) register is therefore represented by 0b01, and an output(write) register is represented by 0b11. +// +// For example, if we have 2 inputs and 1 output: +// Encoded Value = 53 ==> (0b110101) +// Limitations: There is currently an assumption that if the number of inputs is <= 2, then the output is written to the +// 3rd register. This may change which will require an update of this class. +class RegisterMemInfo { + public: + uint16_t encode() const { return encoded_register_info; } + RegisterMemInfo& has_inputs(uint16_t num_inputs); + RegisterMemInfo& has_outputs(uint16_t num_outputs); + + private: + static const uint16_t read_encoding = 0b01; + static const uint16_t write_encoding = 0b11; + uint16_t encoded_register_info = 0; + uint16_t write_index = 0; +}; + +extern const std::unordered_map SUBTRACE_INFO_MAP; +extern const std::unordered_map REGISTER_INFO_MAP; + +} // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp index 1013f2858354..e898b2220c91 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp @@ -7,6 +7,7 @@ #include "barretenberg/vm2/common/instruction_spec.hpp" #include "barretenberg/vm2/common/memory_types.hpp" #include "barretenberg/vm2/common/to_radix.hpp" +#include "barretenberg/vm2/tracegen/lib/instruction_spec.hpp" namespace bb::avm2::tracegen { @@ -215,6 +216,53 @@ void PrecomputedTraceBuilder::process_wire_instruction_spec(TraceContainer& trac } } +void PrecomputedTraceBuilder::process_exec_instruction_spec(TraceContainer& trace) +{ + using C = Column; + + uint32_t row = 0; + for (const auto& [exec_opcode, exec_instruction_spec] : EXEC_INSTRUCTION_SPEC) { + auto dispatch_to_subtrace = SUBTRACE_INFO_MAP.at(exec_opcode); + uint8_t alu_sel = dispatch_to_subtrace.subtrace_selector == SubtraceSel::ALU ? 1 : 0; + uint8_t bitwise_sel = dispatch_to_subtrace.subtrace_selector == SubtraceSel::BITWISE ? 1 : 0; + uint8_t poseidon_sel = dispatch_to_subtrace.subtrace_selector == SubtraceSel::POSEIDON2PERM ? 1 : 0; + uint8_t to_radix_sel = dispatch_to_subtrace.subtrace_selector == SubtraceSel::TORADIXBE ? 1 : 0; + uint8_t ecc_sel = dispatch_to_subtrace.subtrace_selector == SubtraceSel::ECC ? 1 : 0; + + auto register_info = REGISTER_INFO_MAP.at(exec_opcode); + + trace.set(row, + { { { C::precomputed_exec_opcode_value, static_cast(exec_opcode) }, + { C::precomputed_exec_opcode_base_l2_gas, exec_instruction_spec.gas_cost.base_l2 }, + { C::precomputed_exec_opcode_base_da_gas, exec_instruction_spec.gas_cost.base_da }, + { C::precomputed_exec_opcode_dynamic_l2_gas, exec_instruction_spec.gas_cost.dyn_l2 }, + { C::precomputed_exec_opcode_dynamic_da_gas, exec_instruction_spec.gas_cost.dyn_da }, + // Memory Access for registers + { C::precomputed_mem_op_reg1, register_info & 1 }, + { C::precomputed_rw_1, (register_info >> 1) & 1 }, + { C::precomputed_mem_op_reg2, (register_info >> 2) & 1 }, + { C::precomputed_rw_2, (register_info >> 3) & 1 }, + { C::precomputed_mem_op_reg3, (register_info >> 4) & 1 }, + { C::precomputed_rw_3, (register_info >> 5) & 1 }, + { C::precomputed_mem_op_reg4, (register_info >> 6) & 1 }, + { C::precomputed_rw_4, (register_info >> 7) & 1 }, + { C::precomputed_mem_op_reg5, (register_info >> 8) & 1 }, + { C::precomputed_rw_5, (register_info >> 8) & 1 }, + { C::precomputed_mem_op_reg6, (register_info >> 10) & 1 }, + { C::precomputed_rw_6, (register_info >> 11) & 1 }, + { C::precomputed_mem_op_reg7, (register_info >> 12) & 1 }, + { C::precomputed_rw_7, (register_info >> 13) & 1 }, + // Gadget / Subtrace Selectors + { C::precomputed_op_alu_sel, alu_sel }, + { C::precomputed_op_bitwise_sel, bitwise_sel }, + { C::precomputed_op_poseidon_perm_sel, poseidon_sel }, + { C::precomputed_op_to_radix_sel, to_radix_sel }, + { C::precomputed_op_ecc_sel, ecc_sel }, + { C::precomputed_subtrace_operation_id, dispatch_to_subtrace.subtrace_operation_id } } }); + row++; + } +} + void PrecomputedTraceBuilder::process_to_radix_safe_limbs(TraceContainer& trace) { using C = Column; diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.hpp index c72ed406a4df..b27e2368b34e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.hpp @@ -18,6 +18,7 @@ class PrecomputedTraceBuilder final { void process_sha256_round_constants(TraceContainer& trace); void process_integral_tag_length(TraceContainer& trace); void process_wire_instruction_spec(TraceContainer& trace); + void process_exec_instruction_spec(TraceContainer& trace); void process_to_radix_safe_limbs(TraceContainer& trace); void process_to_radix_p_decompositions(TraceContainer& trace); void process_memory_tag_range(TraceContainer& trace); diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp index 60eed08a1ef9..0d0e4fc681ff 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp @@ -64,6 +64,8 @@ auto build_precomputed_columns_jobs(TraceContainer& trace) precomputed_builder.process_integral_tag_length(trace)); AVM_TRACK_TIME("tracegen/precomputed/operand_dec_selectors", precomputed_builder.process_wire_instruction_spec(trace)); + AVM_TRACK_TIME("tracegen/precomputed/exec_instruction_spec", + precomputed_builder.process_exec_instruction_spec(trace)); AVM_TRACK_TIME("tracegen/precomputed/to_radix_safe_limbs", precomputed_builder.process_to_radix_safe_limbs(trace)); AVM_TRACK_TIME("tracegen/precomputed/to_radix_p_decompositions", From ca46c21942e072f7da3e13c25228a4b4238e94c9 Mon Sep 17 00:00:00 2001 From: IlyasRidhuan Date: Mon, 21 Apr 2025 15:38:13 +0000 Subject: [PATCH 2/3] fix: add io for other opcodes --- .../cpp/src/barretenberg/vm2/simulation/execution.cpp | 9 ++++++++- .../barretenberg/vm2/tracegen/lib/instruction_spec.cpp | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp index 9e2aaf631006..7ddb42fb0c9c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp @@ -28,7 +28,9 @@ void Execution::add(ContextInterface& context, MemoryAddress a_addr, MemoryAddre // TODO: My dispatch system makes me have a uint8_t tag. Rethink. void Execution::set(ContextInterface& context, MemoryAddress dst_addr, uint8_t tag, FF value) { - context.get_memory().set(dst_addr, MemoryValue::from_tag(static_cast(tag), value)); + TaggedValue tagged_value = TaggedValue::from_tag(static_cast(tag), value); + context.get_memory().set(dst_addr, tagged_value); + set_outputs({ tagged_value }); } void Execution::mov(ContextInterface& context, MemoryAddress src_addr, MemoryAddress dst_addr) @@ -36,6 +38,9 @@ void Execution::mov(ContextInterface& context, MemoryAddress src_addr, MemoryAdd auto& memory = context.get_memory(); auto v = memory.get(src_addr); memory.set(dst_addr, v); + + set_inputs({ v }); + set_outputs({ v }); } void Execution::call(ContextInterface& context, MemoryAddress addr, MemoryAddress cd_offset, MemoryAddress cd_size) @@ -92,6 +97,8 @@ void Execution::jumpi(ContextInterface& context, MemoryAddress cond_addr, uint32 if (!resolved_cond.as_ff().is_zero()) { context.set_next_pc(loc); } + + set_inputs({ resolved_cond }); } // This context interface is an top-level enqueued one 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 68237499cd13..2fea6b697ade 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp @@ -72,8 +72,8 @@ const std::unordered_map REGISTER_INFO_MAP = { { { ExecutionOpCode::ADD, RegisterMemInfo().has_inputs(2).has_outputs(1).encode() }, { ExecutionOpCode::SET, RegisterMemInfo().has_inputs(0).has_outputs(1).encode() }, { ExecutionOpCode::MOV, RegisterMemInfo().has_inputs(1).has_outputs(1).encode() }, - { ExecutionOpCode::CALL, RegisterMemInfo().has_inputs(3).encode() }, - { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(1).encode() }, + { ExecutionOpCode::CALL, RegisterMemInfo().has_inputs(0).encode() }, + { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(0).encode() }, { ExecutionOpCode::JUMP, RegisterMemInfo().encode() }, { ExecutionOpCode::JUMPI, RegisterMemInfo().has_inputs(1).encode() }, } }; From d09effe99ac5b05dc9c7d1e76d14b7f06a355b83 Mon Sep 17 00:00:00 2001 From: IlyasRidhuan Date: Tue, 22 Apr 2025 12:15:28 +0000 Subject: [PATCH 3/3] fix: address comments --- barretenberg/cpp/pil/vm2/execution.pil | 10 +- barretenberg/cpp/pil/vm2/precomputed.pil | 10 +- .../barretenberg/vm2/common/tagged_value.hpp | 15 +-- .../barretenberg/vm2/generated/columns.hpp | 22 +---- .../vm2/generated/flavor_variables.hpp | 12 +-- .../vm2/tracegen/execution_trace.cpp | 92 ++++++++----------- .../vm2/tracegen/execution_trace.test.cpp | 2 +- .../vm2/tracegen/lib/instruction_spec.cpp | 33 +++++-- .../vm2/tracegen/lib/instruction_spec.hpp | 9 +- .../vm2/tracegen/precomputed_trace.cpp | 38 ++++---- 10 files changed, 115 insertions(+), 128 deletions(-) diff --git a/barretenberg/cpp/pil/vm2/execution.pil b/barretenberg/cpp/pil/vm2/execution.pil index 2e5fd2aaecd8..c6d0ef8182da 100644 --- a/barretenberg/cpp/pil/vm2/execution.pil +++ b/barretenberg/cpp/pil/vm2/execution.pil @@ -33,11 +33,11 @@ pol commit subtrace_operation_id; // Subtrace Dispatch selectors // These boolean selectors are constrained via the precomputed Execution Instruction Spec Table -pol commit alu_sel; -pol commit bitwise_sel; -pol commit to_radix_sel; -pol commit ecc_add_sel; -pol commit poseidon2_perm_sel; +pol commit sel_alu; +pol commit sel_bitwise; +pol commit sel_to_radix; +pol commit sel_ecc_add; +pol commit sel_poseidon2_perm; pol commit ex_opcode; pol commit indirect; diff --git a/barretenberg/cpp/pil/vm2/precomputed.pil b/barretenberg/cpp/pil/vm2/precomputed.pil index 71f751a059c8..64032e9974ab 100644 --- a/barretenberg/cpp/pil/vm2/precomputed.pil +++ b/barretenberg/cpp/pil/vm2/precomputed.pil @@ -114,11 +114,11 @@ pol constant mem_op_reg5, rw_5; pol constant mem_op_reg6, rw_6; pol constant mem_op_reg7, rw_7; // Subtrace/Gadget Selector -pol constant op_alu_sel; -pol constant op_bitwise_sel; -pol constant op_poseidon_perm_sel; -pol constant op_to_radix_sel; -pol constant op_ecc_sel; +pol constant sel_dispatch_alu; +pol constant sel_dispatch_bitwise; +pol constant sel_dispatch_poseidon_perm; +pol constant sel_dispatch_to_radix; +pol constant sel_dispatch_ecc; // Add more here pol constant subtrace_operation_id; diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp b/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp index e51fe24e1adc..351acc34117a 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/common/tagged_value.hpp @@ -6,19 +6,20 @@ #include #include "barretenberg/numeric/uint128/uint128.hpp" +#include "barretenberg/vm2/common/aztec_constants.hpp" #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/common/uint1.hpp" namespace bb::avm2 { enum class ValueTag { - FF = 0, - U1 = 1, - U8 = 2, - U16 = 3, - U32 = 4, - U64 = 5, - U128 = 6, + FF = MEM_TAG_FF, + U1 = MEM_TAG_U1, + U8 = MEM_TAG_U8, + U16 = MEM_TAG_U16, + U32 = MEM_TAG_U32, + U64 = MEM_TAG_U64, + U128 = MEM_TAG_U128, MAX = U128, }; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp index 88a15cd2f249..8804412b4be5 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp @@ -8,9 +8,8 @@ namespace bb::avm2 { // clang-format off -<<<<<<< HEAD -#define AVM2_PRECOMPUTED_ENTITIES_E(e) e precomputed_bitwise_input_a, e precomputed_bitwise_input_b, e precomputed_bitwise_op_id, e precomputed_bitwise_output, e precomputed_clk, e precomputed_exec_opcode, e precomputed_first_row, e precomputed_instr_size, e precomputed_integral_tag_length, e precomputed_opcode_out_of_range, e precomputed_p_decomposition_limb, e precomputed_p_decomposition_limb_index, e precomputed_p_decomposition_radix, e precomputed_power_of_2, e precomputed_sel_bitwise, e precomputed_sel_has_tag, e precomputed_sel_integral_tag, e precomputed_sel_mem_tag_out_of_range, 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_p_decomposition, e precomputed_sel_range_16, e precomputed_sel_range_8, e precomputed_sel_sha256_compression, e precomputed_sel_tag_is_op2, e precomputed_sel_to_radix_safe_limbs, e precomputed_sha256_compression_round_constant, e precomputed_to_radix_safe_limbs, e precomputed_zero -#define AVM2_WIRE_ENTITIES_E(e) e execution_input, 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_ia, e alu_ib, e alu_ic, e alu_op, e alu_sel_op_add, 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_block_number, e bc_retrieval_bytecode_id, e bc_retrieval_current_class_id, e bc_retrieval_deployer_addr, e bc_retrieval_deployer_protocol_contract_address, e bc_retrieval_err, e bc_retrieval_incoming_viewing_key_x, e bc_retrieval_incoming_viewing_key_y, e bc_retrieval_init_hash, e bc_retrieval_nullifier_exists, e bc_retrieval_nullifier_key_x, e bc_retrieval_nullifier_key_y, e bc_retrieval_nullifier_tree_root, e bc_retrieval_original_class_id, e bc_retrieval_outer_nullifier_domain_separator, e bc_retrieval_outgoing_viewing_key_x, e bc_retrieval_outgoing_viewing_key_y, e bc_retrieval_private_function_root, e bc_retrieval_public_bytecode_commitment, e bc_retrieval_public_data_tree_root, e bc_retrieval_salt, e bc_retrieval_sel, e bc_retrieval_siloed_address, e bc_retrieval_tagging_key_x, e bc_retrieval_tagging_key_y, 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_ia_byte, e bitwise_ib_byte, e bitwise_ic_byte, e bitwise_last, e bitwise_op_id, e bitwise_sel, e bitwise_start, e bitwise_tag, 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_contract_address, e context_stack_is_static, e context_stack_msg_sender, e context_stack_parent_calldata_offset_addr, e context_stack_parent_calldata_size_addr, e context_stack_pc, 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_x_match, e ecc_y_match, e execution_addressing_error_idx, e execution_addressing_error_kind, e execution_base_address_tag, e execution_base_address_val, e execution_bytecode_id, e execution_clk, e execution_context_id, e execution_contract_address, e execution_ex_opcode, e execution_indirect, e execution_is_static, e execution_last, e execution_last_child_returndata_offset_addr, e execution_last_child_returndata_size_addr, e execution_last_child_success, e execution_msg_sender, e execution_op1, e execution_op1_after_relative, e execution_op2, e execution_op2_after_relative, e execution_op3, e execution_op3_after_relative, e execution_op4, e execution_op4_after_relative, e execution_parent_calldata_offset_addr, e execution_parent_calldata_size_addr, e execution_pc, e execution_rop1, e execution_rop2, e execution_rop3, e execution_rop4, e execution_sel, e execution_sel_addressing_error, e execution_sel_op1_is_address, e execution_sel_op2_is_address, e execution_sel_op3_is_address, e execution_sel_op4_is_address, 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_gt, e ff_gt_sel_shift_rng, 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_parsing_err, 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_17, 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_pc_in_range, e instr_fetching_sel_tag_is_op2, e instr_fetching_tag_out_of_range, e instr_fetching_tag_value, e keccakf1600_keccak_0_, e keccakf1600_keccak_100_, e keccakf1600_keccak_101_, e keccakf1600_keccak_102_, e keccakf1600_keccak_103_, e keccakf1600_keccak_104_, e keccakf1600_keccak_105_, e keccakf1600_keccak_106_, e keccakf1600_keccak_107_, e keccakf1600_keccak_108_, e keccakf1600_keccak_109_, e keccakf1600_keccak_10_, e keccakf1600_keccak_110_, e keccakf1600_keccak_111_, e keccakf1600_keccak_112_, e keccakf1600_keccak_113_, e keccakf1600_keccak_114_, e keccakf1600_keccak_115_, e keccakf1600_keccak_116_, e keccakf1600_keccak_117_, e keccakf1600_keccak_118_, e keccakf1600_keccak_119_, e keccakf1600_keccak_11_, e keccakf1600_keccak_120_, e keccakf1600_keccak_121_, e keccakf1600_keccak_122_, e keccakf1600_keccak_123_, e keccakf1600_keccak_124_, e keccakf1600_keccak_125_, e keccakf1600_keccak_126_, e keccakf1600_keccak_127_, e keccakf1600_keccak_128_, e keccakf1600_keccak_129_, e keccakf1600_keccak_12_, e keccakf1600_keccak_130_, e keccakf1600_keccak_131_, e keccakf1600_keccak_132_, e keccakf1600_keccak_133_, e keccakf1600_keccak_134_, e keccakf1600_keccak_135_, e keccakf1600_keccak_136_, e keccakf1600_keccak_137_, e keccakf1600_keccak_138_, e keccakf1600_keccak_139_, e keccakf1600_keccak_13_, e keccakf1600_keccak_140_, e keccakf1600_keccak_141_, e keccakf1600_keccak_142_, e keccakf1600_keccak_143_, e keccakf1600_keccak_144_, e keccakf1600_keccak_145_, e keccakf1600_keccak_146_, e keccakf1600_keccak_147_, e keccakf1600_keccak_148_, e keccakf1600_keccak_149_, e keccakf1600_keccak_14_, e keccakf1600_keccak_150_, e keccakf1600_keccak_151_, e keccakf1600_keccak_152_, e keccakf1600_keccak_153_, e keccakf1600_keccak_154_, e keccakf1600_keccak_155_, e keccakf1600_keccak_156_, e keccakf1600_keccak_157_, e keccakf1600_keccak_158_, e keccakf1600_keccak_159_, e keccakf1600_keccak_15_, e keccakf1600_keccak_160_, e keccakf1600_keccak_161_, e keccakf1600_keccak_162_, e keccakf1600_keccak_163_, e keccakf1600_keccak_164_, e keccakf1600_keccak_165_, e keccakf1600_keccak_166_, e keccakf1600_keccak_167_, e keccakf1600_keccak_168_, e keccakf1600_keccak_169_, e keccakf1600_keccak_16_, e keccakf1600_keccak_170_, e keccakf1600_keccak_171_, e keccakf1600_keccak_172_, e keccakf1600_keccak_173_, e keccakf1600_keccak_174_, e keccakf1600_keccak_175_, e keccakf1600_keccak_176_, e keccakf1600_keccak_177_, e keccakf1600_keccak_178_, e keccakf1600_keccak_179_, e keccakf1600_keccak_17_, e keccakf1600_keccak_180_, e keccakf1600_keccak_181_, e keccakf1600_keccak_182_, e keccakf1600_keccak_183_, e keccakf1600_keccak_184_, e keccakf1600_keccak_185_, e keccakf1600_keccak_186_, e keccakf1600_keccak_187_, e keccakf1600_keccak_188_, e keccakf1600_keccak_189_, e keccakf1600_keccak_18_, e keccakf1600_keccak_190_, e keccakf1600_keccak_191_, e keccakf1600_keccak_192_, e keccakf1600_keccak_193_, e keccakf1600_keccak_194_, e keccakf1600_keccak_195_, e keccakf1600_keccak_196_, e keccakf1600_keccak_197_, e keccakf1600_keccak_198_, e keccakf1600_keccak_199_, e keccakf1600_keccak_19_, e keccakf1600_keccak_1_, e keccakf1600_keccak_200_, e keccakf1600_keccak_201_, e keccakf1600_keccak_202_, e keccakf1600_keccak_203_, e keccakf1600_keccak_204_, e keccakf1600_keccak_205_, e keccakf1600_keccak_206_, e keccakf1600_keccak_207_, e keccakf1600_keccak_208_, e keccakf1600_keccak_209_, e keccakf1600_keccak_20_, e keccakf1600_keccak_210_, e keccakf1600_keccak_211_, e keccakf1600_keccak_212_, e keccakf1600_keccak_213_, e keccakf1600_keccak_214_, e keccakf1600_keccak_215_, e keccakf1600_keccak_216_, e keccakf1600_keccak_217_, e keccakf1600_keccak_218_, e keccakf1600_keccak_219_, e keccakf1600_keccak_21_, e keccakf1600_keccak_220_, e keccakf1600_keccak_221_, e keccakf1600_keccak_222_, e keccakf1600_keccak_223_, e keccakf1600_keccak_224_, e keccakf1600_keccak_225_, e keccakf1600_keccak_226_, e keccakf1600_keccak_227_, e keccakf1600_keccak_228_, e keccakf1600_keccak_229_, e keccakf1600_keccak_22_, e keccakf1600_keccak_230_, e keccakf1600_keccak_231_, e keccakf1600_keccak_232_, e keccakf1600_keccak_233_, e keccakf1600_keccak_234_, e keccakf1600_keccak_235_, e keccakf1600_keccak_236_, e keccakf1600_keccak_237_, e keccakf1600_keccak_238_, e keccakf1600_keccak_239_, e keccakf1600_keccak_23_, e keccakf1600_keccak_240_, e keccakf1600_keccak_241_, e keccakf1600_keccak_242_, e keccakf1600_keccak_243_, e keccakf1600_keccak_244_, e keccakf1600_keccak_245_, e keccakf1600_keccak_246_, e keccakf1600_keccak_247_, e keccakf1600_keccak_248_, e keccakf1600_keccak_249_, e keccakf1600_keccak_24_, e keccakf1600_keccak_250_, e keccakf1600_keccak_251_, e keccakf1600_keccak_252_, e keccakf1600_keccak_253_, e keccakf1600_keccak_254_, e keccakf1600_keccak_255_, e keccakf1600_keccak_256_, e keccakf1600_keccak_257_, e keccakf1600_keccak_258_, e keccakf1600_keccak_259_, e keccakf1600_keccak_25_, e keccakf1600_keccak_260_, e keccakf1600_keccak_261_, e keccakf1600_keccak_262_, e keccakf1600_keccak_263_, e keccakf1600_keccak_264_, e keccakf1600_keccak_265_, e keccakf1600_keccak_266_, e keccakf1600_keccak_267_, e keccakf1600_keccak_268_, e keccakf1600_keccak_269_, e keccakf1600_keccak_26_, e keccakf1600_keccak_270_, e keccakf1600_keccak_271_, e keccakf1600_keccak_272_, e keccakf1600_keccak_273_, e keccakf1600_keccak_274_, e keccakf1600_keccak_275_, e keccakf1600_keccak_276_, e keccakf1600_keccak_277_, e keccakf1600_keccak_278_, e keccakf1600_keccak_279_, e keccakf1600_keccak_27_, e keccakf1600_keccak_280_, e keccakf1600_keccak_281_, e keccakf1600_keccak_282_, e keccakf1600_keccak_283_, e keccakf1600_keccak_284_, e keccakf1600_keccak_285_, e keccakf1600_keccak_286_, e keccakf1600_keccak_287_, e keccakf1600_keccak_288_, e keccakf1600_keccak_289_, e keccakf1600_keccak_28_, e keccakf1600_keccak_290_, e keccakf1600_keccak_291_, e keccakf1600_keccak_292_, e keccakf1600_keccak_293_, e keccakf1600_keccak_294_, e keccakf1600_keccak_295_, e keccakf1600_keccak_296_, e keccakf1600_keccak_297_, e keccakf1600_keccak_298_, e keccakf1600_keccak_299_, e keccakf1600_keccak_29_, e keccakf1600_keccak_2_, e keccakf1600_keccak_300_, e keccakf1600_keccak_301_, e keccakf1600_keccak_302_, e keccakf1600_keccak_303_, e keccakf1600_keccak_304_, e keccakf1600_keccak_305_, e keccakf1600_keccak_306_, e keccakf1600_keccak_307_, e keccakf1600_keccak_308_, e keccakf1600_keccak_309_, e keccakf1600_keccak_30_, e keccakf1600_keccak_310_, e keccakf1600_keccak_311_, e keccakf1600_keccak_312_, e keccakf1600_keccak_313_, e keccakf1600_keccak_314_, e keccakf1600_keccak_315_, e keccakf1600_keccak_316_, e keccakf1600_keccak_317_, e keccakf1600_keccak_318_, e keccakf1600_keccak_319_, e keccakf1600_keccak_31_, e keccakf1600_keccak_320_, e keccakf1600_keccak_321_, e keccakf1600_keccak_322_, e keccakf1600_keccak_323_, e keccakf1600_keccak_324_, e keccakf1600_keccak_325_, e keccakf1600_keccak_326_, e keccakf1600_keccak_327_, e keccakf1600_keccak_328_, e keccakf1600_keccak_329_, e keccakf1600_keccak_32_, e keccakf1600_keccak_330_, e keccakf1600_keccak_331_, e keccakf1600_keccak_332_, e keccakf1600_keccak_333_, e keccakf1600_keccak_334_, e keccakf1600_keccak_335_, e keccakf1600_keccak_336_, e keccakf1600_keccak_337_, e keccakf1600_keccak_338_, e keccakf1600_keccak_339_, e keccakf1600_keccak_33_, e keccakf1600_keccak_340_, e keccakf1600_keccak_341_, e keccakf1600_keccak_342_, e keccakf1600_keccak_343_, e keccakf1600_keccak_344_, e keccakf1600_keccak_345_, e keccakf1600_keccak_346_, e keccakf1600_keccak_347_, e keccakf1600_keccak_348_, e keccakf1600_keccak_349_, e keccakf1600_keccak_34_, e keccakf1600_keccak_350_, e keccakf1600_keccak_351_, e keccakf1600_keccak_352_, e keccakf1600_keccak_353_, e keccakf1600_keccak_354_, e keccakf1600_keccak_355_, e keccakf1600_keccak_356_, e keccakf1600_keccak_357_, e keccakf1600_keccak_358_, e keccakf1600_keccak_359_, e keccakf1600_keccak_35_, e keccakf1600_keccak_360_, e keccakf1600_keccak_361_, e keccakf1600_keccak_362_, e keccakf1600_keccak_363_, e keccakf1600_keccak_364_, e keccakf1600_keccak_365_, e keccakf1600_keccak_366_, e keccakf1600_keccak_367_, e keccakf1600_keccak_368_, e keccakf1600_keccak_369_, e keccakf1600_keccak_36_, e keccakf1600_keccak_370_, e keccakf1600_keccak_371_, e keccakf1600_keccak_372_, e keccakf1600_keccak_373_, e keccakf1600_keccak_374_, e keccakf1600_keccak_375_, e keccakf1600_keccak_376_, e keccakf1600_keccak_377_, e keccakf1600_keccak_378_, e keccakf1600_keccak_379_, e keccakf1600_keccak_37_, e keccakf1600_keccak_380_, e keccakf1600_keccak_381_, e keccakf1600_keccak_382_, e keccakf1600_keccak_383_, e keccakf1600_keccak_384_, e keccakf1600_keccak_385_, e keccakf1600_keccak_386_, e keccakf1600_keccak_387_, e keccakf1600_keccak_388_, e keccakf1600_keccak_389_, e keccakf1600_keccak_38_, e keccakf1600_keccak_390_, e keccakf1600_keccak_391_, e keccakf1600_keccak_392_, e keccakf1600_keccak_393_, e keccakf1600_keccak_394_, e keccakf1600_keccak_395_, e keccakf1600_keccak_396_, e keccakf1600_keccak_397_, e keccakf1600_keccak_398_, e keccakf1600_keccak_399_, e keccakf1600_keccak_39_, e keccakf1600_keccak_3_, e keccakf1600_keccak_400_, e keccakf1600_keccak_401_, e keccakf1600_keccak_402_, e keccakf1600_keccak_403_, e keccakf1600_keccak_404_, e keccakf1600_keccak_405_, e keccakf1600_keccak_406_, e keccakf1600_keccak_407_, e keccakf1600_keccak_408_, e keccakf1600_keccak_409_, e keccakf1600_keccak_40_, e keccakf1600_keccak_410_, e keccakf1600_keccak_411_, e keccakf1600_keccak_412_, e keccakf1600_keccak_413_, e keccakf1600_keccak_414_, e keccakf1600_keccak_415_, e keccakf1600_keccak_416_, e keccakf1600_keccak_417_, e keccakf1600_keccak_418_, e keccakf1600_keccak_419_, e keccakf1600_keccak_41_, e keccakf1600_keccak_420_, e keccakf1600_keccak_421_, e keccakf1600_keccak_422_, e keccakf1600_keccak_423_, e keccakf1600_keccak_424_, e keccakf1600_keccak_425_, e keccakf1600_keccak_426_, e keccakf1600_keccak_427_, e keccakf1600_keccak_428_, e keccakf1600_keccak_429_, e keccakf1600_keccak_42_, e keccakf1600_keccak_430_, e keccakf1600_keccak_431_, e keccakf1600_keccak_432_, e keccakf1600_keccak_433_, e keccakf1600_keccak_434_, e keccakf1600_keccak_435_, e keccakf1600_keccak_436_, e keccakf1600_keccak_437_, e keccakf1600_keccak_438_, e keccakf1600_keccak_439_, e keccakf1600_keccak_43_, e keccakf1600_keccak_440_, e keccakf1600_keccak_441_, e keccakf1600_keccak_442_, e keccakf1600_keccak_443_, e keccakf1600_keccak_444_, e keccakf1600_keccak_445_, e keccakf1600_keccak_446_, e keccakf1600_keccak_447_, e keccakf1600_keccak_448_, e keccakf1600_keccak_449_, e keccakf1600_keccak_44_, e keccakf1600_keccak_450_, e keccakf1600_keccak_451_, e keccakf1600_keccak_452_, e keccakf1600_keccak_453_, e keccakf1600_keccak_454_, e keccakf1600_keccak_455_, e keccakf1600_keccak_456_, e keccakf1600_keccak_457_, e keccakf1600_keccak_458_, e keccakf1600_keccak_459_, e keccakf1600_keccak_45_, e keccakf1600_keccak_460_, e keccakf1600_keccak_461_, e keccakf1600_keccak_462_, e keccakf1600_keccak_463_, e keccakf1600_keccak_464_, e keccakf1600_keccak_465_, e keccakf1600_keccak_466_, e keccakf1600_keccak_467_, e keccakf1600_keccak_468_, e keccakf1600_keccak_469_, e keccakf1600_keccak_46_, e keccakf1600_keccak_470_, e keccakf1600_keccak_471_, e keccakf1600_keccak_472_, e keccakf1600_keccak_473_, e keccakf1600_keccak_474_, e keccakf1600_keccak_475_, e keccakf1600_keccak_476_, e keccakf1600_keccak_477_, e keccakf1600_keccak_478_, e keccakf1600_keccak_479_, e keccakf1600_keccak_47_, e keccakf1600_keccak_480_, e keccakf1600_keccak_481_, e keccakf1600_keccak_482_, e keccakf1600_keccak_483_, e keccakf1600_keccak_484_, e keccakf1600_keccak_485_, e keccakf1600_keccak_486_, e keccakf1600_keccak_487_, e keccakf1600_keccak_488_, e keccakf1600_keccak_489_, e keccakf1600_keccak_48_, e keccakf1600_keccak_490_, e keccakf1600_keccak_491_, e keccakf1600_keccak_492_, e keccakf1600_keccak_493_, e keccakf1600_keccak_494_, e keccakf1600_keccak_495_, e keccakf1600_keccak_496_, e keccakf1600_keccak_497_, e keccakf1600_keccak_498_, e keccakf1600_keccak_499_, e keccakf1600_keccak_49_, e keccakf1600_keccak_4_, e keccakf1600_keccak_500_, e keccakf1600_keccak_501_, e keccakf1600_keccak_502_, e keccakf1600_keccak_503_, e keccakf1600_keccak_504_, e keccakf1600_keccak_505_, e keccakf1600_keccak_506_, e keccakf1600_keccak_507_, e keccakf1600_keccak_508_, e keccakf1600_keccak_509_, e keccakf1600_keccak_50_, e keccakf1600_keccak_510_, e keccakf1600_keccak_511_, e keccakf1600_keccak_512_, e keccakf1600_keccak_513_, e keccakf1600_keccak_514_, e keccakf1600_keccak_515_, e keccakf1600_keccak_516_, e keccakf1600_keccak_517_, e keccakf1600_keccak_518_, e keccakf1600_keccak_519_, e keccakf1600_keccak_51_, e keccakf1600_keccak_520_, e keccakf1600_keccak_521_, e keccakf1600_keccak_522_, e keccakf1600_keccak_523_, e keccakf1600_keccak_524_, e keccakf1600_keccak_525_, e keccakf1600_keccak_526_, e keccakf1600_keccak_527_, e keccakf1600_keccak_528_, e keccakf1600_keccak_529_, e keccakf1600_keccak_52_, e keccakf1600_keccak_530_, e keccakf1600_keccak_531_, e keccakf1600_keccak_532_, e keccakf1600_keccak_533_, e keccakf1600_keccak_534_, e keccakf1600_keccak_535_, e keccakf1600_keccak_536_, e keccakf1600_keccak_537_, e keccakf1600_keccak_538_, e keccakf1600_keccak_539_, e keccakf1600_keccak_53_, e keccakf1600_keccak_540_, e keccakf1600_keccak_541_, e keccakf1600_keccak_542_, e keccakf1600_keccak_543_, e keccakf1600_keccak_544_, e keccakf1600_keccak_545_, e keccakf1600_keccak_546_, e keccakf1600_keccak_547_, e keccakf1600_keccak_548_, e keccakf1600_keccak_549_, e keccakf1600_keccak_54_, e keccakf1600_keccak_550_, e keccakf1600_keccak_551_, e keccakf1600_keccak_552_, e keccakf1600_keccak_553_, e keccakf1600_keccak_554_, e keccakf1600_keccak_555_, e keccakf1600_keccak_556_, e keccakf1600_keccak_557_, e keccakf1600_keccak_558_, e keccakf1600_keccak_559_, e keccakf1600_keccak_55_, e keccakf1600_keccak_560_, e keccakf1600_keccak_561_, e keccakf1600_keccak_562_, e keccakf1600_keccak_563_, e keccakf1600_keccak_564_, e keccakf1600_keccak_565_, e keccakf1600_keccak_566_, e keccakf1600_keccak_567_, e keccakf1600_keccak_568_, e keccakf1600_keccak_569_, e keccakf1600_keccak_56_, e keccakf1600_keccak_570_, e keccakf1600_keccak_571_, e keccakf1600_keccak_572_, e keccakf1600_keccak_573_, e keccakf1600_keccak_574_, e keccakf1600_keccak_575_, e keccakf1600_keccak_576_, e keccakf1600_keccak_577_, e keccakf1600_keccak_578_, e keccakf1600_keccak_579_, e keccakf1600_keccak_57_, e keccakf1600_keccak_580_, e keccakf1600_keccak_581_, e keccakf1600_keccak_582_, e keccakf1600_keccak_583_, e keccakf1600_keccak_584_, e keccakf1600_keccak_585_, e keccakf1600_keccak_586_, e keccakf1600_keccak_587_, e keccakf1600_keccak_588_, e keccakf1600_keccak_589_, e keccakf1600_keccak_58_, e keccakf1600_keccak_590_, e keccakf1600_keccak_591_, e keccakf1600_keccak_592_, e keccakf1600_keccak_593_, e keccakf1600_keccak_594_, e keccakf1600_keccak_595_, e keccakf1600_keccak_596_, e keccakf1600_keccak_597_, e keccakf1600_keccak_598_, e keccakf1600_keccak_599_, e keccakf1600_keccak_59_, e keccakf1600_keccak_5_, e keccakf1600_keccak_600_, e keccakf1600_keccak_601_, e keccakf1600_keccak_602_, e keccakf1600_keccak_603_, e keccakf1600_keccak_604_, e keccakf1600_keccak_605_, e keccakf1600_keccak_606_, e keccakf1600_keccak_607_, e keccakf1600_keccak_608_, e keccakf1600_keccak_609_, e keccakf1600_keccak_60_, e keccakf1600_keccak_610_, e keccakf1600_keccak_611_, e keccakf1600_keccak_612_, e keccakf1600_keccak_613_, e keccakf1600_keccak_614_, e keccakf1600_keccak_615_, e keccakf1600_keccak_616_, e keccakf1600_keccak_617_, e keccakf1600_keccak_618_, e keccakf1600_keccak_619_, e keccakf1600_keccak_61_, e keccakf1600_keccak_620_, e keccakf1600_keccak_621_, e keccakf1600_keccak_622_, e keccakf1600_keccak_623_, e keccakf1600_keccak_624_, e keccakf1600_keccak_625_, e keccakf1600_keccak_626_, e keccakf1600_keccak_627_, e keccakf1600_keccak_628_, e keccakf1600_keccak_629_, e keccakf1600_keccak_62_, e keccakf1600_keccak_630_, e keccakf1600_keccak_631_, e keccakf1600_keccak_632_, e keccakf1600_keccak_633_, e keccakf1600_keccak_634_, e keccakf1600_keccak_635_, e keccakf1600_keccak_636_, e keccakf1600_keccak_637_, e keccakf1600_keccak_638_, e keccakf1600_keccak_639_, e keccakf1600_keccak_63_, e keccakf1600_keccak_640_, e keccakf1600_keccak_641_, e keccakf1600_keccak_642_, e keccakf1600_keccak_643_, e keccakf1600_keccak_644_, e keccakf1600_keccak_645_, e keccakf1600_keccak_646_, e keccakf1600_keccak_647_, e keccakf1600_keccak_648_, e keccakf1600_keccak_649_, e keccakf1600_keccak_64_, e keccakf1600_keccak_650_, e keccakf1600_keccak_651_, e keccakf1600_keccak_652_, e keccakf1600_keccak_653_, e keccakf1600_keccak_654_, e keccakf1600_keccak_655_, e keccakf1600_keccak_656_, e keccakf1600_keccak_657_, e keccakf1600_keccak_658_, e keccakf1600_keccak_659_, e keccakf1600_keccak_65_, e keccakf1600_keccak_660_, e keccakf1600_keccak_661_, e keccakf1600_keccak_662_, e keccakf1600_keccak_663_, e keccakf1600_keccak_664_, e keccakf1600_keccak_665_, e keccakf1600_keccak_666_, e keccakf1600_keccak_667_, e keccakf1600_keccak_668_, e keccakf1600_keccak_669_, e keccakf1600_keccak_66_, e keccakf1600_keccak_670_, e keccakf1600_keccak_671_, e keccakf1600_keccak_672_, e keccakf1600_keccak_673_, e keccakf1600_keccak_674_, e keccakf1600_keccak_675_, e keccakf1600_keccak_676_, e keccakf1600_keccak_677_, e keccakf1600_keccak_678_, e keccakf1600_keccak_679_, e keccakf1600_keccak_67_, e keccakf1600_keccak_680_, e keccakf1600_keccak_681_, e keccakf1600_keccak_682_, e keccakf1600_keccak_683_, e keccakf1600_keccak_684_, e keccakf1600_keccak_685_, e keccakf1600_keccak_686_, e keccakf1600_keccak_687_, e keccakf1600_keccak_688_, e keccakf1600_keccak_689_, e keccakf1600_keccak_68_, e keccakf1600_keccak_690_, e keccakf1600_keccak_691_, e keccakf1600_keccak_692_, e keccakf1600_keccak_693_, e keccakf1600_keccak_694_, e keccakf1600_keccak_695_, e keccakf1600_keccak_696_, e keccakf1600_keccak_697_, e keccakf1600_keccak_698_, e keccakf1600_keccak_699_, e keccakf1600_keccak_69_, e keccakf1600_keccak_6_, e keccakf1600_keccak_700_, e keccakf1600_keccak_701_, e keccakf1600_keccak_702_, e keccakf1600_keccak_703_, e keccakf1600_keccak_704_, e keccakf1600_keccak_705_, e keccakf1600_keccak_706_, e keccakf1600_keccak_707_, e keccakf1600_keccak_708_, e keccakf1600_keccak_709_, e keccakf1600_keccak_70_, e keccakf1600_keccak_710_, e keccakf1600_keccak_711_, e keccakf1600_keccak_712_, e keccakf1600_keccak_713_, e keccakf1600_keccak_714_, e keccakf1600_keccak_715_, e keccakf1600_keccak_716_, e keccakf1600_keccak_717_, e keccakf1600_keccak_718_, e keccakf1600_keccak_719_, e keccakf1600_keccak_71_, e keccakf1600_keccak_720_, e keccakf1600_keccak_721_, e keccakf1600_keccak_722_, e keccakf1600_keccak_723_, e keccakf1600_keccak_724_, e keccakf1600_keccak_725_, e keccakf1600_keccak_726_, e keccakf1600_keccak_727_, e keccakf1600_keccak_728_, e keccakf1600_keccak_729_, e keccakf1600_keccak_72_, e keccakf1600_keccak_730_, e keccakf1600_keccak_731_, e keccakf1600_keccak_732_, e keccakf1600_keccak_733_, e keccakf1600_keccak_734_, e keccakf1600_keccak_735_, e keccakf1600_keccak_736_, e keccakf1600_keccak_737_, e keccakf1600_keccak_738_, e keccakf1600_keccak_739_, e keccakf1600_keccak_73_, e keccakf1600_keccak_740_, e keccakf1600_keccak_741_, e keccakf1600_keccak_742_, e keccakf1600_keccak_743_, e keccakf1600_keccak_744_, e keccakf1600_keccak_745_, e keccakf1600_keccak_746_, e keccakf1600_keccak_747_, e keccakf1600_keccak_748_, e keccakf1600_keccak_749_, e keccakf1600_keccak_74_, e keccakf1600_keccak_750_, e keccakf1600_keccak_751_, e keccakf1600_keccak_752_, e keccakf1600_keccak_753_, e keccakf1600_keccak_754_, e keccakf1600_keccak_755_, e keccakf1600_keccak_756_, e keccakf1600_keccak_757_, e keccakf1600_keccak_758_, e keccakf1600_keccak_759_, e keccakf1600_keccak_75_, e keccakf1600_keccak_760_, e keccakf1600_keccak_761_, e keccakf1600_keccak_762_, e keccakf1600_keccak_763_, e keccakf1600_keccak_764_, e keccakf1600_keccak_765_, e keccakf1600_keccak_766_, e keccakf1600_keccak_767_, e keccakf1600_keccak_768_, e keccakf1600_keccak_769_, e keccakf1600_keccak_76_, e keccakf1600_keccak_770_, e keccakf1600_keccak_771_, e keccakf1600_keccak_772_, e keccakf1600_keccak_773_, e keccakf1600_keccak_774_, e keccakf1600_keccak_775_, e keccakf1600_keccak_776_, e keccakf1600_keccak_777_, e keccakf1600_keccak_778_, e keccakf1600_keccak_779_, e keccakf1600_keccak_77_, e keccakf1600_keccak_780_, e keccakf1600_keccak_781_, e keccakf1600_keccak_782_, e keccakf1600_keccak_783_, e keccakf1600_keccak_784_, e keccakf1600_keccak_785_, e keccakf1600_keccak_786_, e keccakf1600_keccak_787_, e keccakf1600_keccak_788_, e keccakf1600_keccak_789_, e keccakf1600_keccak_78_, e keccakf1600_keccak_790_, e keccakf1600_keccak_791_, e keccakf1600_keccak_792_, e keccakf1600_keccak_793_, e keccakf1600_keccak_794_, e keccakf1600_keccak_795_, e keccakf1600_keccak_796_, e keccakf1600_keccak_797_, e keccakf1600_keccak_798_, e keccakf1600_keccak_799_, e keccakf1600_keccak_79_, e keccakf1600_keccak_7_, e keccakf1600_keccak_800_, e keccakf1600_keccak_801_, e keccakf1600_keccak_802_, e keccakf1600_keccak_803_, e keccakf1600_keccak_804_, e keccakf1600_keccak_805_, e keccakf1600_keccak_806_, e keccakf1600_keccak_807_, e keccakf1600_keccak_808_, e keccakf1600_keccak_809_, e keccakf1600_keccak_80_, e keccakf1600_keccak_810_, e keccakf1600_keccak_811_, e keccakf1600_keccak_812_, e keccakf1600_keccak_813_, e keccakf1600_keccak_814_, e keccakf1600_keccak_815_, e keccakf1600_keccak_816_, e keccakf1600_keccak_817_, e keccakf1600_keccak_818_, e keccakf1600_keccak_819_, e keccakf1600_keccak_81_, e keccakf1600_keccak_820_, e keccakf1600_keccak_821_, e keccakf1600_keccak_822_, e keccakf1600_keccak_823_, e keccakf1600_keccak_824_, e keccakf1600_keccak_825_, e keccakf1600_keccak_826_, e keccakf1600_keccak_827_, e keccakf1600_keccak_828_, e keccakf1600_keccak_829_, e keccakf1600_keccak_82_, e keccakf1600_keccak_830_, e keccakf1600_keccak_831_, e keccakf1600_keccak_832_, e keccakf1600_keccak_833_, e keccakf1600_keccak_834_, e keccakf1600_keccak_835_, e keccakf1600_keccak_836_, e keccakf1600_keccak_837_, e keccakf1600_keccak_838_, e keccakf1600_keccak_839_, e keccakf1600_keccak_83_, e keccakf1600_keccak_840_, e keccakf1600_keccak_841_, e keccakf1600_keccak_842_, e keccakf1600_keccak_843_, e keccakf1600_keccak_844_, e keccakf1600_keccak_845_, e keccakf1600_keccak_846_, e keccakf1600_keccak_847_, e keccakf1600_keccak_848_, e keccakf1600_keccak_849_, e keccakf1600_keccak_84_, e keccakf1600_keccak_850_, e keccakf1600_keccak_851_, e keccakf1600_keccak_852_, e keccakf1600_keccak_853_, e keccakf1600_keccak_854_, e keccakf1600_keccak_855_, e keccakf1600_keccak_856_, e keccakf1600_keccak_857_, e keccakf1600_keccak_858_, e keccakf1600_keccak_859_, e keccakf1600_keccak_85_, e keccakf1600_keccak_860_, e keccakf1600_keccak_861_, e keccakf1600_keccak_862_, e keccakf1600_keccak_863_, e keccakf1600_keccak_864_, e keccakf1600_keccak_865_, e keccakf1600_keccak_866_, e keccakf1600_keccak_867_, e keccakf1600_keccak_868_, e keccakf1600_keccak_869_, e keccakf1600_keccak_86_, e keccakf1600_keccak_870_, e keccakf1600_keccak_871_, e keccakf1600_keccak_872_, e keccakf1600_keccak_873_, e keccakf1600_keccak_874_, e keccakf1600_keccak_875_, e keccakf1600_keccak_876_, e keccakf1600_keccak_877_, e keccakf1600_keccak_878_, e keccakf1600_keccak_879_, e keccakf1600_keccak_87_, e keccakf1600_keccak_880_, e keccakf1600_keccak_881_, e keccakf1600_keccak_882_, e keccakf1600_keccak_883_, e keccakf1600_keccak_884_, e keccakf1600_keccak_885_, e keccakf1600_keccak_886_, e keccakf1600_keccak_887_, e keccakf1600_keccak_888_, e keccakf1600_keccak_889_, e keccakf1600_keccak_88_, e keccakf1600_keccak_890_, e keccakf1600_keccak_891_, e keccakf1600_keccak_892_, e keccakf1600_keccak_893_, e keccakf1600_keccak_894_, e keccakf1600_keccak_895_, e keccakf1600_keccak_896_, e keccakf1600_keccak_897_, e keccakf1600_keccak_898_, e keccakf1600_keccak_899_, e keccakf1600_keccak_89_, e keccakf1600_keccak_8_, e keccakf1600_keccak_900_, e keccakf1600_keccak_901_, e keccakf1600_keccak_902_, e keccakf1600_keccak_903_, e keccakf1600_keccak_904_, e keccakf1600_keccak_905_, e keccakf1600_keccak_906_, e keccakf1600_keccak_907_, e keccakf1600_keccak_908_, e keccakf1600_keccak_909_, e keccakf1600_keccak_90_, e keccakf1600_keccak_910_, e keccakf1600_keccak_911_, e keccakf1600_keccak_912_, e keccakf1600_keccak_913_, e keccakf1600_keccak_914_, e keccakf1600_keccak_915_, e keccakf1600_keccak_916_, e keccakf1600_keccak_917_, e keccakf1600_keccak_918_, e keccakf1600_keccak_919_, e keccakf1600_keccak_91_, e keccakf1600_keccak_920_, e keccakf1600_keccak_921_, e keccakf1600_keccak_922_, e keccakf1600_keccak_923_, e keccakf1600_keccak_924_, e keccakf1600_keccak_925_, e keccakf1600_keccak_926_, e keccakf1600_keccak_927_, e keccakf1600_keccak_928_, e keccakf1600_keccak_929_, e keccakf1600_keccak_92_, e keccakf1600_keccak_930_, e keccakf1600_keccak_931_, e keccakf1600_keccak_932_, e keccakf1600_keccak_933_, e keccakf1600_keccak_934_, e keccakf1600_keccak_935_, e keccakf1600_keccak_936_, e keccakf1600_keccak_937_, e keccakf1600_keccak_938_, e keccakf1600_keccak_939_, e keccakf1600_keccak_93_, e keccakf1600_keccak_940_, e keccakf1600_keccak_941_, e keccakf1600_keccak_942_, e keccakf1600_keccak_943_, e keccakf1600_keccak_944_, e keccakf1600_keccak_945_, e keccakf1600_keccak_946_, e keccakf1600_keccak_947_, e keccakf1600_keccak_948_, e keccakf1600_keccak_949_, e keccakf1600_keccak_94_, e keccakf1600_keccak_950_, e keccakf1600_keccak_951_, e keccakf1600_keccak_952_, e keccakf1600_keccak_953_, e keccakf1600_keccak_954_, e keccakf1600_keccak_955_, e keccakf1600_keccak_956_, e keccakf1600_keccak_957_, e keccakf1600_keccak_958_, e keccakf1600_keccak_959_, e keccakf1600_keccak_95_, e keccakf1600_keccak_960_, e keccakf1600_keccak_961_, e keccakf1600_keccak_962_, e keccakf1600_keccak_963_, e keccakf1600_keccak_964_, e keccakf1600_keccak_965_, e keccakf1600_keccak_966_, e keccakf1600_keccak_967_, e keccakf1600_keccak_968_, e keccakf1600_keccak_969_, e keccakf1600_keccak_96_, e keccakf1600_keccak_970_, e keccakf1600_keccak_971_, e keccakf1600_keccak_972_, e keccakf1600_keccak_973_, e keccakf1600_keccak_974_, e keccakf1600_keccak_975_, e keccakf1600_keccak_976_, e keccakf1600_keccak_977_, e keccakf1600_keccak_978_, e keccakf1600_keccak_979_, e keccakf1600_keccak_97_, e keccakf1600_keccak_980_, e keccakf1600_keccak_981_, e keccakf1600_keccak_982_, e keccakf1600_keccak_983_, e keccakf1600_keccak_984_, e keccakf1600_keccak_985_, e keccakf1600_keccak_986_, e keccakf1600_keccak_987_, e keccakf1600_keccak_988_, e keccakf1600_keccak_989_, e keccakf1600_keccak_98_, e keccakf1600_keccak_990_, e keccakf1600_keccak_991_, e keccakf1600_keccak_992_, e keccakf1600_keccak_993_, e keccakf1600_keccak_994_, e keccakf1600_keccak_995_, e keccakf1600_keccak_996_, e keccakf1600_keccak_997_, e keccakf1600_keccak_998_, e keccakf1600_keccak_999_, e keccakf1600_keccak_99_, e keccakf1600_keccak_9_, e memory_address, 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 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_low_leaf_nullifier_diff_inv, e nullifier_check_one, e nullifier_check_root, e nullifier_check_sel, e nullifier_check_tree_height, e nullifier_check_tree_size_before_write, e nullifier_check_updated_low_leaf_hash, e nullifier_check_write, e nullifier_check_write_low_leaf_next_index, e nullifier_check_write_low_leaf_next_nullifier, 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_sel, e public_data_read_leaf_not_exists, e public_data_read_low_leaf_hash, e public_data_read_low_leaf_index, e public_data_read_low_leaf_next_index, e public_data_read_low_leaf_next_slot, e public_data_read_low_leaf_slot, e public_data_read_low_leaf_value, e public_data_read_next_slot_inv, e public_data_read_next_slot_is_nonzero, e public_data_read_one, e public_data_read_root, e public_data_read_sel, e public_data_read_slot, e public_data_read_slot_low_leaf_slot_diff_inv, e public_data_read_tree_height, e public_data_read_value, 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 update_check_address, e update_check_block_number, e update_check_block_number_bit_size, e update_check_block_number_is_lt_block_of_change, e update_check_block_of_change_subtraction, e update_check_current_class_id, 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_shared_mutable_hash_slot, e update_check_shared_mutable_leaf_slot, e update_check_shared_mutable_slot, e update_check_update_block_of_change, 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 lookup_poseidon2_hash_poseidon2_perm_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_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_bc_hashing_poseidon2_hash_counts, 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_merkle_check_merkle_poseidon2_read_counts, e lookup_merkle_check_merkle_poseidon2_write_counts, e lookup_ff_gt_a_lo_range_counts, e lookup_ff_gt_a_hi_range_counts, e lookup_public_data_read_low_leaf_poseidon2_0_counts, e lookup_public_data_read_low_leaf_poseidon2_1_counts, e lookup_public_data_read_low_leaf_membership_counts, e lookup_public_data_read_low_leaf_slot_validation_counts, e lookup_public_data_read_low_leaf_next_slot_validation_counts, e lookup_update_check_shared_mutable_slot_poseidon2_counts, e lookup_update_check_shared_mutable_leaf_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_block_of_change_cmp_range_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_bc_retrieval_silo_deployment_nullifier_poseidon2_counts, e lookup_bc_retrieval_deployment_nullifier_read_counts, e lookup_bc_retrieval_address_derivation_counts, e lookup_bc_retrieval_update_check_counts, e lookup_bc_retrieval_class_id_derivation_counts, e lookup_bc_retrieval_bytecode_hash_is_correct_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_bitwise_integral_tag_length_counts, e lookup_bitwise_byte_operations_counts, e lookup_sha256_round_constant_counts +#define AVM2_PRECOMPUTED_ENTITIES_E(e) e precomputed_bitwise_input_a, e precomputed_bitwise_input_b, e precomputed_bitwise_op_id, e precomputed_bitwise_output, e precomputed_clk, e precomputed_exec_opcode, e precomputed_exec_opcode_base_da_gas, e precomputed_exec_opcode_base_l2_gas, e precomputed_exec_opcode_dynamic_da_gas, e precomputed_exec_opcode_dynamic_l2_gas, e precomputed_exec_opcode_value, e precomputed_first_row, e precomputed_instr_size, e precomputed_integral_tag_length, e precomputed_mem_op_reg1, e precomputed_mem_op_reg2, e precomputed_mem_op_reg3, e precomputed_mem_op_reg4, e precomputed_mem_op_reg5, e precomputed_mem_op_reg6, e precomputed_mem_op_reg7, e precomputed_opcode_out_of_range, e precomputed_p_decomposition_limb, e precomputed_p_decomposition_limb_index, e precomputed_p_decomposition_radix, e precomputed_power_of_2, e precomputed_rw_1, e precomputed_rw_2, e precomputed_rw_3, e precomputed_rw_4, e precomputed_rw_5, e precomputed_rw_6, e precomputed_rw_7, e precomputed_sel_bitwise, e precomputed_sel_dispatch_alu, e precomputed_sel_dispatch_bitwise, e precomputed_sel_dispatch_ecc, e precomputed_sel_dispatch_poseidon_perm, e precomputed_sel_dispatch_to_radix, e precomputed_sel_has_tag, e precomputed_sel_integral_tag, e precomputed_sel_mem_tag_out_of_range, 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_p_decomposition, e precomputed_sel_range_16, e precomputed_sel_range_8, e precomputed_sel_sha256_compression, e precomputed_sel_tag_is_op2, e precomputed_sel_to_radix_safe_limbs, e precomputed_sha256_compression_round_constant, e precomputed_subtrace_operation_id, e precomputed_to_radix_safe_limbs, e precomputed_zero +#define AVM2_WIRE_ENTITIES_E(e) e execution_input, 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_ia, e alu_ib, e alu_ic, e alu_op, e alu_sel_op_add, 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_block_number, e bc_retrieval_bytecode_id, e bc_retrieval_current_class_id, e bc_retrieval_deployer_addr, e bc_retrieval_deployer_protocol_contract_address, e bc_retrieval_err, e bc_retrieval_incoming_viewing_key_x, e bc_retrieval_incoming_viewing_key_y, e bc_retrieval_init_hash, e bc_retrieval_nullifier_exists, e bc_retrieval_nullifier_key_x, e bc_retrieval_nullifier_key_y, e bc_retrieval_nullifier_tree_root, e bc_retrieval_original_class_id, e bc_retrieval_outer_nullifier_domain_separator, e bc_retrieval_outgoing_viewing_key_x, e bc_retrieval_outgoing_viewing_key_y, e bc_retrieval_private_function_root, e bc_retrieval_public_bytecode_commitment, e bc_retrieval_public_data_tree_root, e bc_retrieval_salt, e bc_retrieval_sel, e bc_retrieval_siloed_address, e bc_retrieval_tagging_key_x, e bc_retrieval_tagging_key_y, 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_ia_byte, e bitwise_ib_byte, e bitwise_ic_byte, e bitwise_last, e bitwise_op_id, e bitwise_sel, e bitwise_start, e bitwise_tag, 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_contract_address, e context_stack_is_static, e context_stack_msg_sender, e context_stack_parent_calldata_offset_addr, e context_stack_parent_calldata_size_addr, e context_stack_pc, 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_x_match, e ecc_y_match, e execution_addressing_error_idx, e execution_addressing_error_kind, e execution_base_address_tag, e execution_base_address_val, e execution_bytecode_id, e execution_context_id, e execution_contract_address, e execution_ex_opcode, e execution_indirect, e execution_is_static, e execution_last, e execution_last_child_returndata_offset_addr, e execution_last_child_returndata_size_addr, e execution_last_child_success, e execution_mem_op1, e execution_mem_op2, e execution_mem_op3, e execution_mem_op4, e execution_mem_op5, e execution_mem_op6, e execution_mem_op7, e execution_mem_tag1, e execution_mem_tag2, e execution_mem_tag3, e execution_mem_tag4, e execution_mem_tag5, e execution_mem_tag6, e execution_mem_tag7, e execution_msg_sender, e execution_op1, e execution_op1_after_relative, e execution_op2, e execution_op2_after_relative, e execution_op3, e execution_op3_after_relative, e execution_op4, e execution_op4_after_relative, e execution_op5, e execution_op5_after_relative, e execution_op6, e execution_op6_after_relative, e execution_op7, e execution_op7_after_relative, e execution_parent_calldata_offset_addr, e execution_parent_calldata_size_addr, e execution_pc, e execution_reg1, e execution_reg2, e execution_reg3, e execution_reg4, e execution_reg5, e execution_reg6, e execution_reg7, e execution_rop1, e execution_rop2, e execution_rop3, e execution_rop4, e execution_rop5, e execution_rop6, e execution_rop7, e execution_rw1, e execution_rw2, e execution_rw3, e execution_rw4, e execution_rw5, e execution_rw6, e execution_rw7, e execution_sel, e execution_sel_addressing_error, e execution_sel_alu, e execution_sel_bitwise, e execution_sel_ecc_add, e execution_sel_op1_is_address, e execution_sel_op2_is_address, e execution_sel_op3_is_address, e execution_sel_op4_is_address, e execution_sel_op5_is_address, e execution_sel_op6_is_address, e execution_sel_op7_is_address, e execution_sel_poseidon2_perm, e execution_sel_to_radix, e execution_subtrace_operation_id, 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_gt, e ff_gt_sel_shift_rng, 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_parsing_err, 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_17, 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_pc_in_range, e instr_fetching_sel_tag_is_op2, e instr_fetching_tag_out_of_range, e instr_fetching_tag_value, e keccakf1600_keccak_0_, e keccakf1600_keccak_100_, e keccakf1600_keccak_101_, e keccakf1600_keccak_102_, e keccakf1600_keccak_103_, e keccakf1600_keccak_104_, e keccakf1600_keccak_105_, e keccakf1600_keccak_106_, e keccakf1600_keccak_107_, e keccakf1600_keccak_108_, e keccakf1600_keccak_109_, e keccakf1600_keccak_10_, e keccakf1600_keccak_110_, e keccakf1600_keccak_111_, e keccakf1600_keccak_112_, e keccakf1600_keccak_113_, e keccakf1600_keccak_114_, e keccakf1600_keccak_115_, e keccakf1600_keccak_116_, e keccakf1600_keccak_117_, e keccakf1600_keccak_118_, e keccakf1600_keccak_119_, e keccakf1600_keccak_11_, e keccakf1600_keccak_120_, e keccakf1600_keccak_121_, e keccakf1600_keccak_122_, e keccakf1600_keccak_123_, e keccakf1600_keccak_124_, e keccakf1600_keccak_125_, e keccakf1600_keccak_126_, e keccakf1600_keccak_127_, e keccakf1600_keccak_128_, e keccakf1600_keccak_129_, e keccakf1600_keccak_12_, e keccakf1600_keccak_130_, e keccakf1600_keccak_131_, e keccakf1600_keccak_132_, e keccakf1600_keccak_133_, e keccakf1600_keccak_134_, e keccakf1600_keccak_135_, e keccakf1600_keccak_136_, e keccakf1600_keccak_137_, e keccakf1600_keccak_138_, e keccakf1600_keccak_139_, e keccakf1600_keccak_13_, e keccakf1600_keccak_140_, e keccakf1600_keccak_141_, e keccakf1600_keccak_142_, e keccakf1600_keccak_143_, e keccakf1600_keccak_144_, e keccakf1600_keccak_145_, e keccakf1600_keccak_146_, e keccakf1600_keccak_147_, e keccakf1600_keccak_148_, e keccakf1600_keccak_149_, e keccakf1600_keccak_14_, e keccakf1600_keccak_150_, e keccakf1600_keccak_151_, e keccakf1600_keccak_152_, e keccakf1600_keccak_153_, e keccakf1600_keccak_154_, e keccakf1600_keccak_155_, e keccakf1600_keccak_156_, e keccakf1600_keccak_157_, e keccakf1600_keccak_158_, e keccakf1600_keccak_159_, e keccakf1600_keccak_15_, e keccakf1600_keccak_160_, e keccakf1600_keccak_161_, e keccakf1600_keccak_162_, e keccakf1600_keccak_163_, e keccakf1600_keccak_164_, e keccakf1600_keccak_165_, e keccakf1600_keccak_166_, e keccakf1600_keccak_167_, e keccakf1600_keccak_168_, e keccakf1600_keccak_169_, e keccakf1600_keccak_16_, e keccakf1600_keccak_170_, e keccakf1600_keccak_171_, e keccakf1600_keccak_172_, e keccakf1600_keccak_173_, e keccakf1600_keccak_174_, e keccakf1600_keccak_175_, e keccakf1600_keccak_176_, e keccakf1600_keccak_177_, e keccakf1600_keccak_178_, e keccakf1600_keccak_179_, e keccakf1600_keccak_17_, e keccakf1600_keccak_180_, e keccakf1600_keccak_181_, e keccakf1600_keccak_182_, e keccakf1600_keccak_183_, e keccakf1600_keccak_184_, e keccakf1600_keccak_185_, e keccakf1600_keccak_186_, e keccakf1600_keccak_187_, e keccakf1600_keccak_188_, e keccakf1600_keccak_189_, e keccakf1600_keccak_18_, e keccakf1600_keccak_190_, e keccakf1600_keccak_191_, e keccakf1600_keccak_192_, e keccakf1600_keccak_193_, e keccakf1600_keccak_194_, e keccakf1600_keccak_195_, e keccakf1600_keccak_196_, e keccakf1600_keccak_197_, e keccakf1600_keccak_198_, e keccakf1600_keccak_199_, e keccakf1600_keccak_19_, e keccakf1600_keccak_1_, e keccakf1600_keccak_200_, e keccakf1600_keccak_201_, e keccakf1600_keccak_202_, e keccakf1600_keccak_203_, e keccakf1600_keccak_204_, e keccakf1600_keccak_205_, e keccakf1600_keccak_206_, e keccakf1600_keccak_207_, e keccakf1600_keccak_208_, e keccakf1600_keccak_209_, e keccakf1600_keccak_20_, e keccakf1600_keccak_210_, e keccakf1600_keccak_211_, e keccakf1600_keccak_212_, e keccakf1600_keccak_213_, e keccakf1600_keccak_214_, e keccakf1600_keccak_215_, e keccakf1600_keccak_216_, e keccakf1600_keccak_217_, e keccakf1600_keccak_218_, e keccakf1600_keccak_219_, e keccakf1600_keccak_21_, e keccakf1600_keccak_220_, e keccakf1600_keccak_221_, e keccakf1600_keccak_222_, e keccakf1600_keccak_223_, e keccakf1600_keccak_224_, e keccakf1600_keccak_225_, e keccakf1600_keccak_226_, e keccakf1600_keccak_227_, e keccakf1600_keccak_228_, e keccakf1600_keccak_229_, e keccakf1600_keccak_22_, e keccakf1600_keccak_230_, e keccakf1600_keccak_231_, e keccakf1600_keccak_232_, e keccakf1600_keccak_233_, e keccakf1600_keccak_234_, e keccakf1600_keccak_235_, e keccakf1600_keccak_236_, e keccakf1600_keccak_237_, e keccakf1600_keccak_238_, e keccakf1600_keccak_239_, e keccakf1600_keccak_23_, e keccakf1600_keccak_240_, e keccakf1600_keccak_241_, e keccakf1600_keccak_242_, e keccakf1600_keccak_243_, e keccakf1600_keccak_244_, e keccakf1600_keccak_245_, e keccakf1600_keccak_246_, e keccakf1600_keccak_247_, e keccakf1600_keccak_248_, e keccakf1600_keccak_249_, e keccakf1600_keccak_24_, e keccakf1600_keccak_250_, e keccakf1600_keccak_251_, e keccakf1600_keccak_252_, e keccakf1600_keccak_253_, e keccakf1600_keccak_254_, e keccakf1600_keccak_255_, e keccakf1600_keccak_256_, e keccakf1600_keccak_257_, e keccakf1600_keccak_258_, e keccakf1600_keccak_259_, e keccakf1600_keccak_25_, e keccakf1600_keccak_260_, e keccakf1600_keccak_261_, e keccakf1600_keccak_262_, e keccakf1600_keccak_263_, e keccakf1600_keccak_264_, e keccakf1600_keccak_265_, e keccakf1600_keccak_266_, e keccakf1600_keccak_267_, e keccakf1600_keccak_268_, e keccakf1600_keccak_269_, e keccakf1600_keccak_26_, e keccakf1600_keccak_270_, e keccakf1600_keccak_271_, e keccakf1600_keccak_272_, e keccakf1600_keccak_273_, e keccakf1600_keccak_274_, e keccakf1600_keccak_275_, e keccakf1600_keccak_276_, e keccakf1600_keccak_277_, e keccakf1600_keccak_278_, e keccakf1600_keccak_279_, e keccakf1600_keccak_27_, e keccakf1600_keccak_280_, e keccakf1600_keccak_281_, e keccakf1600_keccak_282_, e keccakf1600_keccak_283_, e keccakf1600_keccak_284_, e keccakf1600_keccak_285_, e keccakf1600_keccak_286_, e keccakf1600_keccak_287_, e keccakf1600_keccak_288_, e keccakf1600_keccak_289_, e keccakf1600_keccak_28_, e keccakf1600_keccak_290_, e keccakf1600_keccak_291_, e keccakf1600_keccak_292_, e keccakf1600_keccak_293_, e keccakf1600_keccak_294_, e keccakf1600_keccak_295_, e keccakf1600_keccak_296_, e keccakf1600_keccak_297_, e keccakf1600_keccak_298_, e keccakf1600_keccak_299_, e keccakf1600_keccak_29_, e keccakf1600_keccak_2_, e keccakf1600_keccak_300_, e keccakf1600_keccak_301_, e keccakf1600_keccak_302_, e keccakf1600_keccak_303_, e keccakf1600_keccak_304_, e keccakf1600_keccak_305_, e keccakf1600_keccak_306_, e keccakf1600_keccak_307_, e keccakf1600_keccak_308_, e keccakf1600_keccak_309_, e keccakf1600_keccak_30_, e keccakf1600_keccak_310_, e keccakf1600_keccak_311_, e keccakf1600_keccak_312_, e keccakf1600_keccak_313_, e keccakf1600_keccak_314_, e keccakf1600_keccak_315_, e keccakf1600_keccak_316_, e keccakf1600_keccak_317_, e keccakf1600_keccak_318_, e keccakf1600_keccak_319_, e keccakf1600_keccak_31_, e keccakf1600_keccak_320_, e keccakf1600_keccak_321_, e keccakf1600_keccak_322_, e keccakf1600_keccak_323_, e keccakf1600_keccak_324_, e keccakf1600_keccak_325_, e keccakf1600_keccak_326_, e keccakf1600_keccak_327_, e keccakf1600_keccak_328_, e keccakf1600_keccak_329_, e keccakf1600_keccak_32_, e keccakf1600_keccak_330_, e keccakf1600_keccak_331_, e keccakf1600_keccak_332_, e keccakf1600_keccak_333_, e keccakf1600_keccak_334_, e keccakf1600_keccak_335_, e keccakf1600_keccak_336_, e keccakf1600_keccak_337_, e keccakf1600_keccak_338_, e keccakf1600_keccak_339_, e keccakf1600_keccak_33_, e keccakf1600_keccak_340_, e keccakf1600_keccak_341_, e keccakf1600_keccak_342_, e keccakf1600_keccak_343_, e keccakf1600_keccak_344_, e keccakf1600_keccak_345_, e keccakf1600_keccak_346_, e keccakf1600_keccak_347_, e keccakf1600_keccak_348_, e keccakf1600_keccak_349_, e keccakf1600_keccak_34_, e keccakf1600_keccak_350_, e keccakf1600_keccak_351_, e keccakf1600_keccak_352_, e keccakf1600_keccak_353_, e keccakf1600_keccak_354_, e keccakf1600_keccak_355_, e keccakf1600_keccak_356_, e keccakf1600_keccak_357_, e keccakf1600_keccak_358_, e keccakf1600_keccak_359_, e keccakf1600_keccak_35_, e keccakf1600_keccak_360_, e keccakf1600_keccak_361_, e keccakf1600_keccak_362_, e keccakf1600_keccak_363_, e keccakf1600_keccak_364_, e keccakf1600_keccak_365_, e keccakf1600_keccak_366_, e keccakf1600_keccak_367_, e keccakf1600_keccak_368_, e keccakf1600_keccak_369_, e keccakf1600_keccak_36_, e keccakf1600_keccak_370_, e keccakf1600_keccak_371_, e keccakf1600_keccak_372_, e keccakf1600_keccak_373_, e keccakf1600_keccak_374_, e keccakf1600_keccak_375_, e keccakf1600_keccak_376_, e keccakf1600_keccak_377_, e keccakf1600_keccak_378_, e keccakf1600_keccak_379_, e keccakf1600_keccak_37_, e keccakf1600_keccak_380_, e keccakf1600_keccak_381_, e keccakf1600_keccak_382_, e keccakf1600_keccak_383_, e keccakf1600_keccak_384_, e keccakf1600_keccak_385_, e keccakf1600_keccak_386_, e keccakf1600_keccak_387_, e keccakf1600_keccak_388_, e keccakf1600_keccak_389_, e keccakf1600_keccak_38_, e keccakf1600_keccak_390_, e keccakf1600_keccak_391_, e keccakf1600_keccak_392_, e keccakf1600_keccak_393_, e keccakf1600_keccak_394_, e keccakf1600_keccak_395_, e keccakf1600_keccak_396_, e keccakf1600_keccak_397_, e keccakf1600_keccak_398_, e keccakf1600_keccak_399_, e keccakf1600_keccak_39_, e keccakf1600_keccak_3_, e keccakf1600_keccak_400_, e keccakf1600_keccak_401_, e keccakf1600_keccak_402_, e keccakf1600_keccak_403_, e keccakf1600_keccak_404_, e keccakf1600_keccak_405_, e keccakf1600_keccak_406_, e keccakf1600_keccak_407_, e keccakf1600_keccak_408_, e keccakf1600_keccak_409_, e keccakf1600_keccak_40_, e keccakf1600_keccak_410_, e keccakf1600_keccak_411_, e keccakf1600_keccak_412_, e keccakf1600_keccak_413_, e keccakf1600_keccak_414_, e keccakf1600_keccak_415_, e keccakf1600_keccak_416_, e keccakf1600_keccak_417_, e keccakf1600_keccak_418_, e keccakf1600_keccak_419_, e keccakf1600_keccak_41_, e keccakf1600_keccak_420_, e keccakf1600_keccak_421_, e keccakf1600_keccak_422_, e keccakf1600_keccak_423_, e keccakf1600_keccak_424_, e keccakf1600_keccak_425_, e keccakf1600_keccak_426_, e keccakf1600_keccak_427_, e keccakf1600_keccak_428_, e keccakf1600_keccak_429_, e keccakf1600_keccak_42_, e keccakf1600_keccak_430_, e keccakf1600_keccak_431_, e keccakf1600_keccak_432_, e keccakf1600_keccak_433_, e keccakf1600_keccak_434_, e keccakf1600_keccak_435_, e keccakf1600_keccak_436_, e keccakf1600_keccak_437_, e keccakf1600_keccak_438_, e keccakf1600_keccak_439_, e keccakf1600_keccak_43_, e keccakf1600_keccak_440_, e keccakf1600_keccak_441_, e keccakf1600_keccak_442_, e keccakf1600_keccak_443_, e keccakf1600_keccak_444_, e keccakf1600_keccak_445_, e keccakf1600_keccak_446_, e keccakf1600_keccak_447_, e keccakf1600_keccak_448_, e keccakf1600_keccak_449_, e keccakf1600_keccak_44_, e keccakf1600_keccak_450_, e keccakf1600_keccak_451_, e keccakf1600_keccak_452_, e keccakf1600_keccak_453_, e keccakf1600_keccak_454_, e keccakf1600_keccak_455_, e keccakf1600_keccak_456_, e keccakf1600_keccak_457_, e keccakf1600_keccak_458_, e keccakf1600_keccak_459_, e keccakf1600_keccak_45_, e keccakf1600_keccak_460_, e keccakf1600_keccak_461_, e keccakf1600_keccak_462_, e keccakf1600_keccak_463_, e keccakf1600_keccak_464_, e keccakf1600_keccak_465_, e keccakf1600_keccak_466_, e keccakf1600_keccak_467_, e keccakf1600_keccak_468_, e keccakf1600_keccak_469_, e keccakf1600_keccak_46_, e keccakf1600_keccak_470_, e keccakf1600_keccak_471_, e keccakf1600_keccak_472_, e keccakf1600_keccak_473_, e keccakf1600_keccak_474_, e keccakf1600_keccak_475_, e keccakf1600_keccak_476_, e keccakf1600_keccak_477_, e keccakf1600_keccak_478_, e keccakf1600_keccak_479_, e keccakf1600_keccak_47_, e keccakf1600_keccak_480_, e keccakf1600_keccak_481_, e keccakf1600_keccak_482_, e keccakf1600_keccak_483_, e keccakf1600_keccak_484_, e keccakf1600_keccak_485_, e keccakf1600_keccak_486_, e keccakf1600_keccak_487_, e keccakf1600_keccak_488_, e keccakf1600_keccak_489_, e keccakf1600_keccak_48_, e keccakf1600_keccak_490_, e keccakf1600_keccak_491_, e keccakf1600_keccak_492_, e keccakf1600_keccak_493_, e keccakf1600_keccak_494_, e keccakf1600_keccak_495_, e keccakf1600_keccak_496_, e keccakf1600_keccak_497_, e keccakf1600_keccak_498_, e keccakf1600_keccak_499_, e keccakf1600_keccak_49_, e keccakf1600_keccak_4_, e keccakf1600_keccak_500_, e keccakf1600_keccak_501_, e keccakf1600_keccak_502_, e keccakf1600_keccak_503_, e keccakf1600_keccak_504_, e keccakf1600_keccak_505_, e keccakf1600_keccak_506_, e keccakf1600_keccak_507_, e keccakf1600_keccak_508_, e keccakf1600_keccak_509_, e keccakf1600_keccak_50_, e keccakf1600_keccak_510_, e keccakf1600_keccak_511_, e keccakf1600_keccak_512_, e keccakf1600_keccak_513_, e keccakf1600_keccak_514_, e keccakf1600_keccak_515_, e keccakf1600_keccak_516_, e keccakf1600_keccak_517_, e keccakf1600_keccak_518_, e keccakf1600_keccak_519_, e keccakf1600_keccak_51_, e keccakf1600_keccak_520_, e keccakf1600_keccak_521_, e keccakf1600_keccak_522_, e keccakf1600_keccak_523_, e keccakf1600_keccak_524_, e keccakf1600_keccak_525_, e keccakf1600_keccak_526_, e keccakf1600_keccak_527_, e keccakf1600_keccak_528_, e keccakf1600_keccak_529_, e keccakf1600_keccak_52_, e keccakf1600_keccak_530_, e keccakf1600_keccak_531_, e keccakf1600_keccak_532_, e keccakf1600_keccak_533_, e keccakf1600_keccak_534_, e keccakf1600_keccak_535_, e keccakf1600_keccak_536_, e keccakf1600_keccak_537_, e keccakf1600_keccak_538_, e keccakf1600_keccak_539_, e keccakf1600_keccak_53_, e keccakf1600_keccak_540_, e keccakf1600_keccak_541_, e keccakf1600_keccak_542_, e keccakf1600_keccak_543_, e keccakf1600_keccak_544_, e keccakf1600_keccak_545_, e keccakf1600_keccak_546_, e keccakf1600_keccak_547_, e keccakf1600_keccak_548_, e keccakf1600_keccak_549_, e keccakf1600_keccak_54_, e keccakf1600_keccak_550_, e keccakf1600_keccak_551_, e keccakf1600_keccak_552_, e keccakf1600_keccak_553_, e keccakf1600_keccak_554_, e keccakf1600_keccak_555_, e keccakf1600_keccak_556_, e keccakf1600_keccak_557_, e keccakf1600_keccak_558_, e keccakf1600_keccak_559_, e keccakf1600_keccak_55_, e keccakf1600_keccak_560_, e keccakf1600_keccak_561_, e keccakf1600_keccak_562_, e keccakf1600_keccak_563_, e keccakf1600_keccak_564_, e keccakf1600_keccak_565_, e keccakf1600_keccak_566_, e keccakf1600_keccak_567_, e keccakf1600_keccak_568_, e keccakf1600_keccak_569_, e keccakf1600_keccak_56_, e keccakf1600_keccak_570_, e keccakf1600_keccak_571_, e keccakf1600_keccak_572_, e keccakf1600_keccak_573_, e keccakf1600_keccak_574_, e keccakf1600_keccak_575_, e keccakf1600_keccak_576_, e keccakf1600_keccak_577_, e keccakf1600_keccak_578_, e keccakf1600_keccak_579_, e keccakf1600_keccak_57_, e keccakf1600_keccak_580_, e keccakf1600_keccak_581_, e keccakf1600_keccak_582_, e keccakf1600_keccak_583_, e keccakf1600_keccak_584_, e keccakf1600_keccak_585_, e keccakf1600_keccak_586_, e keccakf1600_keccak_587_, e keccakf1600_keccak_588_, e keccakf1600_keccak_589_, e keccakf1600_keccak_58_, e keccakf1600_keccak_590_, e keccakf1600_keccak_591_, e keccakf1600_keccak_592_, e keccakf1600_keccak_593_, e keccakf1600_keccak_594_, e keccakf1600_keccak_595_, e keccakf1600_keccak_596_, e keccakf1600_keccak_597_, e keccakf1600_keccak_598_, e keccakf1600_keccak_599_, e keccakf1600_keccak_59_, e keccakf1600_keccak_5_, e keccakf1600_keccak_600_, e keccakf1600_keccak_601_, e keccakf1600_keccak_602_, e keccakf1600_keccak_603_, e keccakf1600_keccak_604_, e keccakf1600_keccak_605_, e keccakf1600_keccak_606_, e keccakf1600_keccak_607_, e keccakf1600_keccak_608_, e keccakf1600_keccak_609_, e keccakf1600_keccak_60_, e keccakf1600_keccak_610_, e keccakf1600_keccak_611_, e keccakf1600_keccak_612_, e keccakf1600_keccak_613_, e keccakf1600_keccak_614_, e keccakf1600_keccak_615_, e keccakf1600_keccak_616_, e keccakf1600_keccak_617_, e keccakf1600_keccak_618_, e keccakf1600_keccak_619_, e keccakf1600_keccak_61_, e keccakf1600_keccak_620_, e keccakf1600_keccak_621_, e keccakf1600_keccak_622_, e keccakf1600_keccak_623_, e keccakf1600_keccak_624_, e keccakf1600_keccak_625_, e keccakf1600_keccak_626_, e keccakf1600_keccak_627_, e keccakf1600_keccak_628_, e keccakf1600_keccak_629_, e keccakf1600_keccak_62_, e keccakf1600_keccak_630_, e keccakf1600_keccak_631_, e keccakf1600_keccak_632_, e keccakf1600_keccak_633_, e keccakf1600_keccak_634_, e keccakf1600_keccak_635_, e keccakf1600_keccak_636_, e keccakf1600_keccak_637_, e keccakf1600_keccak_638_, e keccakf1600_keccak_639_, e keccakf1600_keccak_63_, e keccakf1600_keccak_640_, e keccakf1600_keccak_641_, e keccakf1600_keccak_642_, e keccakf1600_keccak_643_, e keccakf1600_keccak_644_, e keccakf1600_keccak_645_, e keccakf1600_keccak_646_, e keccakf1600_keccak_647_, e keccakf1600_keccak_648_, e keccakf1600_keccak_649_, e keccakf1600_keccak_64_, e keccakf1600_keccak_650_, e keccakf1600_keccak_651_, e keccakf1600_keccak_652_, e keccakf1600_keccak_653_, e keccakf1600_keccak_654_, e keccakf1600_keccak_655_, e keccakf1600_keccak_656_, e keccakf1600_keccak_657_, e keccakf1600_keccak_658_, e keccakf1600_keccak_659_, e keccakf1600_keccak_65_, e keccakf1600_keccak_660_, e keccakf1600_keccak_661_, e keccakf1600_keccak_662_, e keccakf1600_keccak_663_, e keccakf1600_keccak_664_, e keccakf1600_keccak_665_, e keccakf1600_keccak_666_, e keccakf1600_keccak_667_, e keccakf1600_keccak_668_, e keccakf1600_keccak_669_, e keccakf1600_keccak_66_, e keccakf1600_keccak_670_, e keccakf1600_keccak_671_, e keccakf1600_keccak_672_, e keccakf1600_keccak_673_, e keccakf1600_keccak_674_, e keccakf1600_keccak_675_, e keccakf1600_keccak_676_, e keccakf1600_keccak_677_, e keccakf1600_keccak_678_, e keccakf1600_keccak_679_, e keccakf1600_keccak_67_, e keccakf1600_keccak_680_, e keccakf1600_keccak_681_, e keccakf1600_keccak_682_, e keccakf1600_keccak_683_, e keccakf1600_keccak_684_, e keccakf1600_keccak_685_, e keccakf1600_keccak_686_, e keccakf1600_keccak_687_, e keccakf1600_keccak_688_, e keccakf1600_keccak_689_, e keccakf1600_keccak_68_, e keccakf1600_keccak_690_, e keccakf1600_keccak_691_, e keccakf1600_keccak_692_, e keccakf1600_keccak_693_, e keccakf1600_keccak_694_, e keccakf1600_keccak_695_, e keccakf1600_keccak_696_, e keccakf1600_keccak_697_, e keccakf1600_keccak_698_, e keccakf1600_keccak_699_, e keccakf1600_keccak_69_, e keccakf1600_keccak_6_, e keccakf1600_keccak_700_, e keccakf1600_keccak_701_, e keccakf1600_keccak_702_, e keccakf1600_keccak_703_, e keccakf1600_keccak_704_, e keccakf1600_keccak_705_, e keccakf1600_keccak_706_, e keccakf1600_keccak_707_, e keccakf1600_keccak_708_, e keccakf1600_keccak_709_, e keccakf1600_keccak_70_, e keccakf1600_keccak_710_, e keccakf1600_keccak_711_, e keccakf1600_keccak_712_, e keccakf1600_keccak_713_, e keccakf1600_keccak_714_, e keccakf1600_keccak_715_, e keccakf1600_keccak_716_, e keccakf1600_keccak_717_, e keccakf1600_keccak_718_, e keccakf1600_keccak_719_, e keccakf1600_keccak_71_, e keccakf1600_keccak_720_, e keccakf1600_keccak_721_, e keccakf1600_keccak_722_, e keccakf1600_keccak_723_, e keccakf1600_keccak_724_, e keccakf1600_keccak_725_, e keccakf1600_keccak_726_, e keccakf1600_keccak_727_, e keccakf1600_keccak_728_, e keccakf1600_keccak_729_, e keccakf1600_keccak_72_, e keccakf1600_keccak_730_, e keccakf1600_keccak_731_, e keccakf1600_keccak_732_, e keccakf1600_keccak_733_, e keccakf1600_keccak_734_, e keccakf1600_keccak_735_, e keccakf1600_keccak_736_, e keccakf1600_keccak_737_, e keccakf1600_keccak_738_, e keccakf1600_keccak_739_, e keccakf1600_keccak_73_, e keccakf1600_keccak_740_, e keccakf1600_keccak_741_, e keccakf1600_keccak_742_, e keccakf1600_keccak_743_, e keccakf1600_keccak_744_, e keccakf1600_keccak_745_, e keccakf1600_keccak_746_, e keccakf1600_keccak_747_, e keccakf1600_keccak_748_, e keccakf1600_keccak_749_, e keccakf1600_keccak_74_, e keccakf1600_keccak_750_, e keccakf1600_keccak_751_, e keccakf1600_keccak_752_, e keccakf1600_keccak_753_, e keccakf1600_keccak_754_, e keccakf1600_keccak_755_, e keccakf1600_keccak_756_, e keccakf1600_keccak_757_, e keccakf1600_keccak_758_, e keccakf1600_keccak_759_, e keccakf1600_keccak_75_, e keccakf1600_keccak_760_, e keccakf1600_keccak_761_, e keccakf1600_keccak_762_, e keccakf1600_keccak_763_, e keccakf1600_keccak_764_, e keccakf1600_keccak_765_, e keccakf1600_keccak_766_, e keccakf1600_keccak_767_, e keccakf1600_keccak_768_, e keccakf1600_keccak_769_, e keccakf1600_keccak_76_, e keccakf1600_keccak_770_, e keccakf1600_keccak_771_, e keccakf1600_keccak_772_, e keccakf1600_keccak_773_, e keccakf1600_keccak_774_, e keccakf1600_keccak_775_, e keccakf1600_keccak_776_, e keccakf1600_keccak_777_, e keccakf1600_keccak_778_, e keccakf1600_keccak_779_, e keccakf1600_keccak_77_, e keccakf1600_keccak_780_, e keccakf1600_keccak_781_, e keccakf1600_keccak_782_, e keccakf1600_keccak_783_, e keccakf1600_keccak_784_, e keccakf1600_keccak_785_, e keccakf1600_keccak_786_, e keccakf1600_keccak_787_, e keccakf1600_keccak_788_, e keccakf1600_keccak_789_, e keccakf1600_keccak_78_, e keccakf1600_keccak_790_, e keccakf1600_keccak_791_, e keccakf1600_keccak_792_, e keccakf1600_keccak_793_, e keccakf1600_keccak_794_, e keccakf1600_keccak_795_, e keccakf1600_keccak_796_, e keccakf1600_keccak_797_, e keccakf1600_keccak_798_, e keccakf1600_keccak_799_, e keccakf1600_keccak_79_, e keccakf1600_keccak_7_, e keccakf1600_keccak_800_, e keccakf1600_keccak_801_, e keccakf1600_keccak_802_, e keccakf1600_keccak_803_, e keccakf1600_keccak_804_, e keccakf1600_keccak_805_, e keccakf1600_keccak_806_, e keccakf1600_keccak_807_, e keccakf1600_keccak_808_, e keccakf1600_keccak_809_, e keccakf1600_keccak_80_, e keccakf1600_keccak_810_, e keccakf1600_keccak_811_, e keccakf1600_keccak_812_, e keccakf1600_keccak_813_, e keccakf1600_keccak_814_, e keccakf1600_keccak_815_, e keccakf1600_keccak_816_, e keccakf1600_keccak_817_, e keccakf1600_keccak_818_, e keccakf1600_keccak_819_, e keccakf1600_keccak_81_, e keccakf1600_keccak_820_, e keccakf1600_keccak_821_, e keccakf1600_keccak_822_, e keccakf1600_keccak_823_, e keccakf1600_keccak_824_, e keccakf1600_keccak_825_, e keccakf1600_keccak_826_, e keccakf1600_keccak_827_, e keccakf1600_keccak_828_, e keccakf1600_keccak_829_, e keccakf1600_keccak_82_, e keccakf1600_keccak_830_, e keccakf1600_keccak_831_, e keccakf1600_keccak_832_, e keccakf1600_keccak_833_, e keccakf1600_keccak_834_, e keccakf1600_keccak_835_, e keccakf1600_keccak_836_, e keccakf1600_keccak_837_, e keccakf1600_keccak_838_, e keccakf1600_keccak_839_, e keccakf1600_keccak_83_, e keccakf1600_keccak_840_, e keccakf1600_keccak_841_, e keccakf1600_keccak_842_, e keccakf1600_keccak_843_, e keccakf1600_keccak_844_, e keccakf1600_keccak_845_, e keccakf1600_keccak_846_, e keccakf1600_keccak_847_, e keccakf1600_keccak_848_, e keccakf1600_keccak_849_, e keccakf1600_keccak_84_, e keccakf1600_keccak_850_, e keccakf1600_keccak_851_, e keccakf1600_keccak_852_, e keccakf1600_keccak_853_, e keccakf1600_keccak_854_, e keccakf1600_keccak_855_, e keccakf1600_keccak_856_, e keccakf1600_keccak_857_, e keccakf1600_keccak_858_, e keccakf1600_keccak_859_, e keccakf1600_keccak_85_, e keccakf1600_keccak_860_, e keccakf1600_keccak_861_, e keccakf1600_keccak_862_, e keccakf1600_keccak_863_, e keccakf1600_keccak_864_, e keccakf1600_keccak_865_, e keccakf1600_keccak_866_, e keccakf1600_keccak_867_, e keccakf1600_keccak_868_, e keccakf1600_keccak_869_, e keccakf1600_keccak_86_, e keccakf1600_keccak_870_, e keccakf1600_keccak_871_, e keccakf1600_keccak_872_, e keccakf1600_keccak_873_, e keccakf1600_keccak_874_, e keccakf1600_keccak_875_, e keccakf1600_keccak_876_, e keccakf1600_keccak_877_, e keccakf1600_keccak_878_, e keccakf1600_keccak_879_, e keccakf1600_keccak_87_, e keccakf1600_keccak_880_, e keccakf1600_keccak_881_, e keccakf1600_keccak_882_, e keccakf1600_keccak_883_, e keccakf1600_keccak_884_, e keccakf1600_keccak_885_, e keccakf1600_keccak_886_, e keccakf1600_keccak_887_, e keccakf1600_keccak_888_, e keccakf1600_keccak_889_, e keccakf1600_keccak_88_, e keccakf1600_keccak_890_, e keccakf1600_keccak_891_, e keccakf1600_keccak_892_, e keccakf1600_keccak_893_, e keccakf1600_keccak_894_, e keccakf1600_keccak_895_, e keccakf1600_keccak_896_, e keccakf1600_keccak_897_, e keccakf1600_keccak_898_, e keccakf1600_keccak_899_, e keccakf1600_keccak_89_, e keccakf1600_keccak_8_, e keccakf1600_keccak_900_, e keccakf1600_keccak_901_, e keccakf1600_keccak_902_, e keccakf1600_keccak_903_, e keccakf1600_keccak_904_, e keccakf1600_keccak_905_, e keccakf1600_keccak_906_, e keccakf1600_keccak_907_, e keccakf1600_keccak_908_, e keccakf1600_keccak_909_, e keccakf1600_keccak_90_, e keccakf1600_keccak_910_, e keccakf1600_keccak_911_, e keccakf1600_keccak_912_, e keccakf1600_keccak_913_, e keccakf1600_keccak_914_, e keccakf1600_keccak_915_, e keccakf1600_keccak_916_, e keccakf1600_keccak_917_, e keccakf1600_keccak_918_, e keccakf1600_keccak_919_, e keccakf1600_keccak_91_, e keccakf1600_keccak_920_, e keccakf1600_keccak_921_, e keccakf1600_keccak_922_, e keccakf1600_keccak_923_, e keccakf1600_keccak_924_, e keccakf1600_keccak_925_, e keccakf1600_keccak_926_, e keccakf1600_keccak_927_, e keccakf1600_keccak_928_, e keccakf1600_keccak_929_, e keccakf1600_keccak_92_, e keccakf1600_keccak_930_, e keccakf1600_keccak_931_, e keccakf1600_keccak_932_, e keccakf1600_keccak_933_, e keccakf1600_keccak_934_, e keccakf1600_keccak_935_, e keccakf1600_keccak_936_, e keccakf1600_keccak_937_, e keccakf1600_keccak_938_, e keccakf1600_keccak_939_, e keccakf1600_keccak_93_, e keccakf1600_keccak_940_, e keccakf1600_keccak_941_, e keccakf1600_keccak_942_, e keccakf1600_keccak_943_, e keccakf1600_keccak_944_, e keccakf1600_keccak_945_, e keccakf1600_keccak_946_, e keccakf1600_keccak_947_, e keccakf1600_keccak_948_, e keccakf1600_keccak_949_, e keccakf1600_keccak_94_, e keccakf1600_keccak_950_, e keccakf1600_keccak_951_, e keccakf1600_keccak_952_, e keccakf1600_keccak_953_, e keccakf1600_keccak_954_, e keccakf1600_keccak_955_, e keccakf1600_keccak_956_, e keccakf1600_keccak_957_, e keccakf1600_keccak_958_, e keccakf1600_keccak_959_, e keccakf1600_keccak_95_, e keccakf1600_keccak_960_, e keccakf1600_keccak_961_, e keccakf1600_keccak_962_, e keccakf1600_keccak_963_, e keccakf1600_keccak_964_, e keccakf1600_keccak_965_, e keccakf1600_keccak_966_, e keccakf1600_keccak_967_, e keccakf1600_keccak_968_, e keccakf1600_keccak_969_, e keccakf1600_keccak_96_, e keccakf1600_keccak_970_, e keccakf1600_keccak_971_, e keccakf1600_keccak_972_, e keccakf1600_keccak_973_, e keccakf1600_keccak_974_, e keccakf1600_keccak_975_, e keccakf1600_keccak_976_, e keccakf1600_keccak_977_, e keccakf1600_keccak_978_, e keccakf1600_keccak_979_, e keccakf1600_keccak_97_, e keccakf1600_keccak_980_, e keccakf1600_keccak_981_, e keccakf1600_keccak_982_, e keccakf1600_keccak_983_, e keccakf1600_keccak_984_, e keccakf1600_keccak_985_, e keccakf1600_keccak_986_, e keccakf1600_keccak_987_, e keccakf1600_keccak_988_, e keccakf1600_keccak_989_, e keccakf1600_keccak_98_, e keccakf1600_keccak_990_, e keccakf1600_keccak_991_, e keccakf1600_keccak_992_, e keccakf1600_keccak_993_, e keccakf1600_keccak_994_, e keccakf1600_keccak_995_, e keccakf1600_keccak_996_, e keccakf1600_keccak_997_, e keccakf1600_keccak_998_, e keccakf1600_keccak_999_, e keccakf1600_keccak_99_, e keccakf1600_keccak_9_, e memory_address, 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 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_low_leaf_nullifier_diff_inv, e nullifier_check_one, e nullifier_check_root, e nullifier_check_sel, e nullifier_check_tree_height, e nullifier_check_tree_size_before_write, e nullifier_check_updated_low_leaf_hash, e nullifier_check_write, e nullifier_check_write_low_leaf_next_index, e nullifier_check_write_low_leaf_next_nullifier, 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_sel, e public_data_read_leaf_not_exists, e public_data_read_low_leaf_hash, e public_data_read_low_leaf_index, e public_data_read_low_leaf_next_index, e public_data_read_low_leaf_next_slot, e public_data_read_low_leaf_slot, e public_data_read_low_leaf_value, e public_data_read_next_slot_inv, e public_data_read_next_slot_is_nonzero, e public_data_read_one, e public_data_read_root, e public_data_read_sel, e public_data_read_slot, e public_data_read_slot_low_leaf_slot_diff_inv, e public_data_read_tree_height, e public_data_read_value, 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 update_check_address, e update_check_block_number, e update_check_block_number_bit_size, e update_check_block_number_is_lt_block_of_change, e update_check_block_of_change_subtraction, e update_check_current_class_id, 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_shared_mutable_hash_slot, e update_check_shared_mutable_leaf_slot, e update_check_shared_mutable_slot, e update_check_update_block_of_change, 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 lookup_poseidon2_hash_poseidon2_perm_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_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_bc_hashing_poseidon2_hash_counts, 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_merkle_check_merkle_poseidon2_read_counts, e lookup_merkle_check_merkle_poseidon2_write_counts, e lookup_ff_gt_a_lo_range_counts, e lookup_ff_gt_a_hi_range_counts, e lookup_public_data_read_low_leaf_poseidon2_0_counts, e lookup_public_data_read_low_leaf_poseidon2_1_counts, e lookup_public_data_read_low_leaf_membership_counts, e lookup_public_data_read_low_leaf_slot_validation_counts, e lookup_public_data_read_low_leaf_next_slot_validation_counts, e lookup_update_check_shared_mutable_slot_poseidon2_counts, e lookup_update_check_shared_mutable_leaf_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_block_of_change_cmp_range_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_bc_retrieval_silo_deployment_nullifier_poseidon2_counts, e lookup_bc_retrieval_deployment_nullifier_read_counts, e lookup_bc_retrieval_address_derivation_counts, e lookup_bc_retrieval_update_check_counts, e lookup_bc_retrieval_class_id_derivation_counts, e lookup_bc_retrieval_bytecode_hash_is_correct_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_bitwise_integral_tag_length_counts, e lookup_bitwise_byte_operations_counts, e lookup_sha256_round_constant_counts #define AVM2_DERIVED_WITNESS_ENTITIES_E(e) e lookup_poseidon2_hash_poseidon2_perm_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_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_bc_hashing_poseidon2_hash_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_merkle_check_merkle_poseidon2_read_inv, e lookup_merkle_check_merkle_poseidon2_write_inv, e lookup_ff_gt_a_lo_range_inv, e lookup_ff_gt_a_hi_range_inv, e lookup_public_data_read_low_leaf_poseidon2_0_inv, e lookup_public_data_read_low_leaf_poseidon2_1_inv, e lookup_public_data_read_low_leaf_membership_inv, e lookup_public_data_read_low_leaf_slot_validation_inv, e lookup_public_data_read_low_leaf_next_slot_validation_inv, e lookup_update_check_shared_mutable_slot_poseidon2_inv, e lookup_update_check_shared_mutable_leaf_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_block_of_change_cmp_range_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_bc_retrieval_silo_deployment_nullifier_poseidon2_inv, e lookup_bc_retrieval_deployment_nullifier_read_inv, e lookup_bc_retrieval_address_derivation_inv, e lookup_bc_retrieval_update_check_inv, e lookup_bc_retrieval_class_id_derivation_inv, e lookup_bc_retrieval_bytecode_hash_is_correct_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_bitwise_integral_tag_length_inv, e lookup_bitwise_byte_operations_inv, e lookup_sha256_round_constant_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 bitwise_acc_ia_shift, e bitwise_acc_ib_shift, e bitwise_acc_ic_shift, e bitwise_ctr_shift, e bitwise_op_id_shift, e execution_sel_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_gt_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 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 #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 bitwise_acc_ia, e bitwise_acc_ib, e bitwise_acc_ic, e bitwise_ctr, e bitwise_op_id, e execution_sel, 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_gt, 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 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 @@ -21,14 +20,6 @@ namespace bb::avm2 { #define AVM2_DERIVED_WITNESS_ENTITIES AVM2_DERIVED_WITNESS_ENTITIES_E() #define AVM2_SHIFTED_ENTITIES AVM2_SHIFTED_ENTITIES_E() -======= -#define AVM2_PRECOMPUTED_ENTITIES precomputed_bitwise_input_a, precomputed_bitwise_input_b, precomputed_bitwise_op_id, precomputed_bitwise_output, precomputed_clk, precomputed_exec_opcode, precomputed_exec_opcode_base_da_gas, precomputed_exec_opcode_base_l2_gas, precomputed_exec_opcode_dynamic_da_gas, precomputed_exec_opcode_dynamic_l2_gas, precomputed_exec_opcode_value, precomputed_first_row, precomputed_instr_size, precomputed_integral_tag_length, precomputed_mem_op_reg1, precomputed_mem_op_reg2, precomputed_mem_op_reg3, precomputed_mem_op_reg4, precomputed_mem_op_reg5, precomputed_mem_op_reg6, precomputed_mem_op_reg7, precomputed_op_alu_sel, precomputed_op_bitwise_sel, precomputed_op_ecc_sel, precomputed_op_poseidon_perm_sel, precomputed_op_to_radix_sel, precomputed_opcode_out_of_range, precomputed_p_decomposition_limb, precomputed_p_decomposition_limb_index, precomputed_p_decomposition_radix, precomputed_power_of_2, precomputed_rw_1, precomputed_rw_2, precomputed_rw_3, precomputed_rw_4, precomputed_rw_5, precomputed_rw_6, precomputed_rw_7, precomputed_sel_bitwise, precomputed_sel_has_tag, precomputed_sel_integral_tag, precomputed_sel_mem_tag_out_of_range, precomputed_sel_op_dc_0, precomputed_sel_op_dc_1, precomputed_sel_op_dc_10, precomputed_sel_op_dc_11, precomputed_sel_op_dc_12, precomputed_sel_op_dc_13, precomputed_sel_op_dc_14, precomputed_sel_op_dc_15, precomputed_sel_op_dc_16, precomputed_sel_op_dc_17, precomputed_sel_op_dc_2, precomputed_sel_op_dc_3, precomputed_sel_op_dc_4, precomputed_sel_op_dc_5, precomputed_sel_op_dc_6, precomputed_sel_op_dc_7, precomputed_sel_op_dc_8, precomputed_sel_op_dc_9, precomputed_sel_p_decomposition, precomputed_sel_range_16, precomputed_sel_range_8, precomputed_sel_sha256_compression, precomputed_sel_tag_is_op2, precomputed_sel_to_radix_safe_limbs, precomputed_sha256_compression_round_constant, precomputed_subtrace_operation_id, precomputed_to_radix_safe_limbs, precomputed_zero -#define AVM2_WIRE_ENTITIES execution_input, address_derivation_address, address_derivation_address_y, address_derivation_class_id, address_derivation_deployer_addr, address_derivation_g1_x, address_derivation_g1_y, address_derivation_incoming_viewing_key_x, address_derivation_incoming_viewing_key_y, address_derivation_init_hash, address_derivation_nullifier_key_x, address_derivation_nullifier_key_y, address_derivation_outgoing_viewing_key_x, address_derivation_outgoing_viewing_key_y, address_derivation_partial_address, address_derivation_partial_address_domain_separator, address_derivation_preaddress, address_derivation_preaddress_domain_separator, address_derivation_preaddress_public_key_x, address_derivation_preaddress_public_key_y, address_derivation_public_keys_hash, address_derivation_public_keys_hash_domain_separator, address_derivation_salt, address_derivation_salted_init_hash, address_derivation_sel, address_derivation_tagging_key_x, address_derivation_tagging_key_y, alu_ia, alu_ib, alu_ic, alu_op, alu_sel_op_add, bc_decomposition_abs_diff, bc_decomposition_bytes, bc_decomposition_bytes_pc_plus_1, bc_decomposition_bytes_pc_plus_10, bc_decomposition_bytes_pc_plus_11, bc_decomposition_bytes_pc_plus_12, bc_decomposition_bytes_pc_plus_13, bc_decomposition_bytes_pc_plus_14, bc_decomposition_bytes_pc_plus_15, bc_decomposition_bytes_pc_plus_16, bc_decomposition_bytes_pc_plus_17, bc_decomposition_bytes_pc_plus_18, bc_decomposition_bytes_pc_plus_19, bc_decomposition_bytes_pc_plus_2, bc_decomposition_bytes_pc_plus_20, bc_decomposition_bytes_pc_plus_21, bc_decomposition_bytes_pc_plus_22, bc_decomposition_bytes_pc_plus_23, bc_decomposition_bytes_pc_plus_24, bc_decomposition_bytes_pc_plus_25, bc_decomposition_bytes_pc_plus_26, bc_decomposition_bytes_pc_plus_27, bc_decomposition_bytes_pc_plus_28, bc_decomposition_bytes_pc_plus_29, bc_decomposition_bytes_pc_plus_3, bc_decomposition_bytes_pc_plus_30, bc_decomposition_bytes_pc_plus_31, bc_decomposition_bytes_pc_plus_32, bc_decomposition_bytes_pc_plus_33, bc_decomposition_bytes_pc_plus_34, bc_decomposition_bytes_pc_plus_35, bc_decomposition_bytes_pc_plus_36, bc_decomposition_bytes_pc_plus_4, bc_decomposition_bytes_pc_plus_5, bc_decomposition_bytes_pc_plus_6, bc_decomposition_bytes_pc_plus_7, bc_decomposition_bytes_pc_plus_8, bc_decomposition_bytes_pc_plus_9, bc_decomposition_bytes_rem_inv, bc_decomposition_bytes_rem_min_one_inv, bc_decomposition_bytes_remaining, bc_decomposition_bytes_to_read, bc_decomposition_id, bc_decomposition_last_of_contract, bc_decomposition_packed_field, bc_decomposition_pc, bc_decomposition_sel, bc_decomposition_sel_overflow_correction_needed, bc_decomposition_sel_packed, bc_hashing_bytecode_id, bc_hashing_incremental_hash, bc_hashing_latch, bc_hashing_output_hash, bc_hashing_packed_field, bc_hashing_pc_index, bc_hashing_sel, bc_hashing_start, bc_retrieval_address, bc_retrieval_artifact_hash, bc_retrieval_block_number, bc_retrieval_bytecode_id, bc_retrieval_current_class_id, bc_retrieval_deployer_addr, bc_retrieval_deployer_protocol_contract_address, bc_retrieval_err, bc_retrieval_incoming_viewing_key_x, bc_retrieval_incoming_viewing_key_y, bc_retrieval_init_hash, bc_retrieval_nullifier_exists, bc_retrieval_nullifier_key_x, bc_retrieval_nullifier_key_y, bc_retrieval_nullifier_tree_root, bc_retrieval_original_class_id, bc_retrieval_outer_nullifier_domain_separator, bc_retrieval_outgoing_viewing_key_x, bc_retrieval_outgoing_viewing_key_y, bc_retrieval_private_function_root, bc_retrieval_public_bytecode_commitment, bc_retrieval_public_data_tree_root, bc_retrieval_salt, bc_retrieval_sel, bc_retrieval_siloed_address, bc_retrieval_tagging_key_x, bc_retrieval_tagging_key_y, bitwise_acc_ia, bitwise_acc_ib, bitwise_acc_ic, bitwise_ctr, bitwise_ctr_inv, bitwise_ctr_min_one_inv, bitwise_ia_byte, bitwise_ib_byte, bitwise_ic_byte, bitwise_last, bitwise_op_id, bitwise_sel, bitwise_start, bitwise_tag, class_id_derivation_artifact_hash, class_id_derivation_class_id, class_id_derivation_private_function_root, class_id_derivation_public_bytecode_commitment, class_id_derivation_sel, class_id_derivation_temp_constant_for_lookup, context_stack_context_id, context_stack_contract_address, context_stack_is_static, context_stack_msg_sender, context_stack_parent_calldata_offset_addr, context_stack_parent_calldata_size_addr, context_stack_pc, ecc_add_op, ecc_double_op, ecc_inv_2_p_y, ecc_inv_x_diff, ecc_inv_y_diff, ecc_lambda, ecc_p_is_inf, ecc_p_x, ecc_p_y, ecc_q_is_inf, ecc_q_x, ecc_q_y, ecc_r_is_inf, ecc_r_x, ecc_r_y, ecc_result_infinity, ecc_sel, ecc_x_match, ecc_y_match, execution_addressing_error_idx, execution_addressing_error_kind, execution_alu_sel, execution_base_address_tag, execution_base_address_val, execution_bitwise_sel, execution_bytecode_id, execution_context_id, execution_contract_address, execution_ecc_add_sel, execution_ex_opcode, execution_indirect, execution_is_static, execution_last, execution_last_child_returndata_offset_addr, execution_last_child_returndata_size_addr, execution_last_child_success, execution_mem_op1, execution_mem_op2, execution_mem_op3, execution_mem_op4, execution_mem_op5, execution_mem_op6, execution_mem_op7, execution_mem_tag1, execution_mem_tag2, execution_mem_tag3, execution_mem_tag4, execution_mem_tag5, execution_mem_tag6, execution_mem_tag7, execution_msg_sender, execution_op1, execution_op1_after_relative, execution_op2, execution_op2_after_relative, execution_op3, execution_op3_after_relative, execution_op4, execution_op4_after_relative, execution_op5, execution_op5_after_relative, execution_op6, execution_op6_after_relative, execution_op7, execution_op7_after_relative, execution_parent_calldata_offset_addr, execution_parent_calldata_size_addr, execution_pc, execution_poseidon2_perm_sel, execution_reg1, execution_reg2, execution_reg3, execution_reg4, execution_reg5, execution_reg6, execution_reg7, execution_rop1, execution_rop2, execution_rop3, execution_rop4, execution_rop5, execution_rop6, execution_rop7, execution_rw1, execution_rw2, execution_rw3, execution_rw4, execution_rw5, execution_rw6, execution_rw7, execution_sel, execution_sel_addressing_error, execution_sel_op1_is_address, execution_sel_op2_is_address, execution_sel_op3_is_address, execution_sel_op4_is_address, execution_sel_op5_is_address, execution_sel_op6_is_address, execution_sel_op7_is_address, execution_subtrace_operation_id, execution_to_radix_sel, ff_gt_a, ff_gt_a_hi, ff_gt_a_lo, ff_gt_b, ff_gt_b_hi, ff_gt_b_lo, ff_gt_borrow, ff_gt_cmp_rng_ctr, ff_gt_cmp_rng_ctr_inv, ff_gt_constant_128, ff_gt_p_a_borrow, ff_gt_p_b_borrow, ff_gt_p_sub_a_hi, ff_gt_p_sub_a_lo, ff_gt_p_sub_b_hi, ff_gt_p_sub_b_lo, ff_gt_res_hi, ff_gt_res_lo, ff_gt_result, ff_gt_sel, ff_gt_sel_gt, ff_gt_sel_shift_rng, instr_fetching_bd0, instr_fetching_bd1, instr_fetching_bd10, instr_fetching_bd11, instr_fetching_bd12, instr_fetching_bd13, instr_fetching_bd14, instr_fetching_bd15, instr_fetching_bd16, instr_fetching_bd17, instr_fetching_bd18, instr_fetching_bd19, instr_fetching_bd2, instr_fetching_bd20, instr_fetching_bd21, instr_fetching_bd22, instr_fetching_bd23, instr_fetching_bd24, instr_fetching_bd25, instr_fetching_bd26, instr_fetching_bd27, instr_fetching_bd28, instr_fetching_bd29, instr_fetching_bd3, instr_fetching_bd30, instr_fetching_bd31, instr_fetching_bd32, instr_fetching_bd33, instr_fetching_bd34, instr_fetching_bd35, instr_fetching_bd36, instr_fetching_bd4, instr_fetching_bd5, instr_fetching_bd6, instr_fetching_bd7, instr_fetching_bd8, instr_fetching_bd9, instr_fetching_bytecode_id, instr_fetching_bytecode_size, instr_fetching_bytes_to_read, instr_fetching_exec_opcode, instr_fetching_indirect, instr_fetching_instr_abs_diff, instr_fetching_instr_out_of_range, instr_fetching_instr_size, instr_fetching_op1, instr_fetching_op2, instr_fetching_op3, instr_fetching_op4, instr_fetching_op5, instr_fetching_op6, instr_fetching_op7, instr_fetching_opcode_out_of_range, instr_fetching_parsing_err, instr_fetching_pc, instr_fetching_pc_abs_diff, instr_fetching_pc_out_of_range, instr_fetching_pc_size_in_bits, instr_fetching_sel, instr_fetching_sel_has_tag, instr_fetching_sel_op_dc_0, instr_fetching_sel_op_dc_1, instr_fetching_sel_op_dc_10, instr_fetching_sel_op_dc_11, instr_fetching_sel_op_dc_12, instr_fetching_sel_op_dc_13, instr_fetching_sel_op_dc_14, instr_fetching_sel_op_dc_15, instr_fetching_sel_op_dc_16, instr_fetching_sel_op_dc_17, instr_fetching_sel_op_dc_2, instr_fetching_sel_op_dc_3, instr_fetching_sel_op_dc_4, instr_fetching_sel_op_dc_5, instr_fetching_sel_op_dc_6, instr_fetching_sel_op_dc_7, instr_fetching_sel_op_dc_8, instr_fetching_sel_op_dc_9, instr_fetching_sel_pc_in_range, instr_fetching_sel_tag_is_op2, instr_fetching_tag_out_of_range, instr_fetching_tag_value, memory_address, memory_rw, memory_sel, memory_space_id, memory_tag, memory_value, merkle_check_constant_2, merkle_check_end, merkle_check_index, merkle_check_index_is_even, merkle_check_path_len, merkle_check_read_left_node, merkle_check_read_node, merkle_check_read_output_hash, merkle_check_read_right_node, merkle_check_read_root, merkle_check_remaining_path_len_inv, merkle_check_sel, merkle_check_sibling, merkle_check_start, merkle_check_write, merkle_check_write_left_node, merkle_check_write_node, merkle_check_write_output_hash, merkle_check_write_right_node, merkle_check_write_root, nullifier_check_exists, nullifier_check_intermediate_root, nullifier_check_leaf_not_exists, nullifier_check_low_leaf_hash, nullifier_check_low_leaf_index, nullifier_check_low_leaf_next_index, nullifier_check_low_leaf_next_nullifier, nullifier_check_low_leaf_nullifier, nullifier_check_new_leaf_hash, nullifier_check_next_nullifier_inv, nullifier_check_next_nullifier_is_nonzero, nullifier_check_nullifier, nullifier_check_nullifier_low_leaf_nullifier_diff_inv, nullifier_check_one, nullifier_check_root, nullifier_check_sel, nullifier_check_tree_height, nullifier_check_tree_size_before_write, nullifier_check_updated_low_leaf_hash, nullifier_check_write, nullifier_check_write_low_leaf_next_index, nullifier_check_write_low_leaf_next_nullifier, nullifier_check_write_root, poseidon2_hash_a_0, poseidon2_hash_a_1, poseidon2_hash_a_2, poseidon2_hash_a_3, poseidon2_hash_b_0, poseidon2_hash_b_1, poseidon2_hash_b_2, poseidon2_hash_b_3, poseidon2_hash_end, poseidon2_hash_input_0, poseidon2_hash_input_1, poseidon2_hash_input_2, poseidon2_hash_input_len, poseidon2_hash_num_perm_rounds_rem, poseidon2_hash_num_perm_rounds_rem_inv, poseidon2_hash_output, poseidon2_hash_padding, poseidon2_hash_sel, poseidon2_hash_start, poseidon2_perm_B_10_0, poseidon2_perm_B_10_1, poseidon2_perm_B_10_2, poseidon2_perm_B_10_3, poseidon2_perm_B_11_0, poseidon2_perm_B_11_1, poseidon2_perm_B_11_2, poseidon2_perm_B_11_3, poseidon2_perm_B_12_0, poseidon2_perm_B_12_1, poseidon2_perm_B_12_2, poseidon2_perm_B_12_3, poseidon2_perm_B_13_0, poseidon2_perm_B_13_1, poseidon2_perm_B_13_2, poseidon2_perm_B_13_3, poseidon2_perm_B_14_0, poseidon2_perm_B_14_1, poseidon2_perm_B_14_2, poseidon2_perm_B_14_3, poseidon2_perm_B_15_0, poseidon2_perm_B_15_1, poseidon2_perm_B_15_2, poseidon2_perm_B_15_3, poseidon2_perm_B_16_0, poseidon2_perm_B_16_1, poseidon2_perm_B_16_2, poseidon2_perm_B_16_3, poseidon2_perm_B_17_0, poseidon2_perm_B_17_1, poseidon2_perm_B_17_2, poseidon2_perm_B_17_3, poseidon2_perm_B_18_0, poseidon2_perm_B_18_1, poseidon2_perm_B_18_2, poseidon2_perm_B_18_3, poseidon2_perm_B_19_0, poseidon2_perm_B_19_1, poseidon2_perm_B_19_2, poseidon2_perm_B_19_3, poseidon2_perm_B_20_0, poseidon2_perm_B_20_1, poseidon2_perm_B_20_2, poseidon2_perm_B_20_3, poseidon2_perm_B_21_0, poseidon2_perm_B_21_1, poseidon2_perm_B_21_2, poseidon2_perm_B_21_3, poseidon2_perm_B_22_0, poseidon2_perm_B_22_1, poseidon2_perm_B_22_2, poseidon2_perm_B_22_3, poseidon2_perm_B_23_0, poseidon2_perm_B_23_1, poseidon2_perm_B_23_2, poseidon2_perm_B_23_3, poseidon2_perm_B_24_0, poseidon2_perm_B_24_1, poseidon2_perm_B_24_2, poseidon2_perm_B_24_3, poseidon2_perm_B_25_0, poseidon2_perm_B_25_1, poseidon2_perm_B_25_2, poseidon2_perm_B_25_3, poseidon2_perm_B_26_0, poseidon2_perm_B_26_1, poseidon2_perm_B_26_2, poseidon2_perm_B_26_3, poseidon2_perm_B_27_0, poseidon2_perm_B_27_1, poseidon2_perm_B_27_2, poseidon2_perm_B_27_3, poseidon2_perm_B_28_0, poseidon2_perm_B_28_1, poseidon2_perm_B_28_2, poseidon2_perm_B_28_3, poseidon2_perm_B_29_0, poseidon2_perm_B_29_1, poseidon2_perm_B_29_2, poseidon2_perm_B_29_3, poseidon2_perm_B_30_0, poseidon2_perm_B_30_1, poseidon2_perm_B_30_2, poseidon2_perm_B_30_3, poseidon2_perm_B_31_0, poseidon2_perm_B_31_1, poseidon2_perm_B_31_2, poseidon2_perm_B_31_3, poseidon2_perm_B_32_0, poseidon2_perm_B_32_1, poseidon2_perm_B_32_2, poseidon2_perm_B_32_3, poseidon2_perm_B_33_0, poseidon2_perm_B_33_1, poseidon2_perm_B_33_2, poseidon2_perm_B_33_3, poseidon2_perm_B_34_0, poseidon2_perm_B_34_1, poseidon2_perm_B_34_2, poseidon2_perm_B_34_3, poseidon2_perm_B_35_0, poseidon2_perm_B_35_1, poseidon2_perm_B_35_2, poseidon2_perm_B_35_3, poseidon2_perm_B_36_0, poseidon2_perm_B_36_1, poseidon2_perm_B_36_2, poseidon2_perm_B_36_3, poseidon2_perm_B_37_0, poseidon2_perm_B_37_1, poseidon2_perm_B_37_2, poseidon2_perm_B_37_3, poseidon2_perm_B_38_0, poseidon2_perm_B_38_1, poseidon2_perm_B_38_2, poseidon2_perm_B_38_3, poseidon2_perm_B_39_0, poseidon2_perm_B_39_1, poseidon2_perm_B_39_2, poseidon2_perm_B_39_3, poseidon2_perm_B_40_0, poseidon2_perm_B_40_1, poseidon2_perm_B_40_2, poseidon2_perm_B_40_3, poseidon2_perm_B_41_0, poseidon2_perm_B_41_1, poseidon2_perm_B_41_2, poseidon2_perm_B_41_3, poseidon2_perm_B_42_0, poseidon2_perm_B_42_1, poseidon2_perm_B_42_2, poseidon2_perm_B_42_3, poseidon2_perm_B_43_0, poseidon2_perm_B_43_1, poseidon2_perm_B_43_2, poseidon2_perm_B_43_3, poseidon2_perm_B_44_0, poseidon2_perm_B_44_1, poseidon2_perm_B_44_2, poseidon2_perm_B_44_3, poseidon2_perm_B_45_0, poseidon2_perm_B_45_1, poseidon2_perm_B_45_2, poseidon2_perm_B_45_3, poseidon2_perm_B_46_0, poseidon2_perm_B_46_1, poseidon2_perm_B_46_2, poseidon2_perm_B_46_3, poseidon2_perm_B_47_0, poseidon2_perm_B_47_1, poseidon2_perm_B_47_2, poseidon2_perm_B_47_3, poseidon2_perm_B_48_0, poseidon2_perm_B_48_1, poseidon2_perm_B_48_2, poseidon2_perm_B_48_3, poseidon2_perm_B_49_0, poseidon2_perm_B_49_1, poseidon2_perm_B_49_2, poseidon2_perm_B_49_3, poseidon2_perm_B_4_0, poseidon2_perm_B_4_1, poseidon2_perm_B_4_2, poseidon2_perm_B_4_3, poseidon2_perm_B_50_0, poseidon2_perm_B_50_1, poseidon2_perm_B_50_2, poseidon2_perm_B_50_3, poseidon2_perm_B_51_0, poseidon2_perm_B_51_1, poseidon2_perm_B_51_2, poseidon2_perm_B_51_3, poseidon2_perm_B_52_0, poseidon2_perm_B_52_1, poseidon2_perm_B_52_2, poseidon2_perm_B_52_3, poseidon2_perm_B_53_0, poseidon2_perm_B_53_1, poseidon2_perm_B_53_2, poseidon2_perm_B_53_3, poseidon2_perm_B_54_0, poseidon2_perm_B_54_1, poseidon2_perm_B_54_2, poseidon2_perm_B_54_3, poseidon2_perm_B_55_0, poseidon2_perm_B_55_1, poseidon2_perm_B_55_2, poseidon2_perm_B_55_3, poseidon2_perm_B_56_0, poseidon2_perm_B_56_1, poseidon2_perm_B_56_2, poseidon2_perm_B_56_3, poseidon2_perm_B_57_0, poseidon2_perm_B_57_1, poseidon2_perm_B_57_2, poseidon2_perm_B_57_3, poseidon2_perm_B_58_0, poseidon2_perm_B_58_1, poseidon2_perm_B_58_2, poseidon2_perm_B_58_3, poseidon2_perm_B_59_0, poseidon2_perm_B_59_1, poseidon2_perm_B_59_2, poseidon2_perm_B_59_3, poseidon2_perm_B_5_0, poseidon2_perm_B_5_1, poseidon2_perm_B_5_2, poseidon2_perm_B_5_3, poseidon2_perm_B_6_0, poseidon2_perm_B_6_1, poseidon2_perm_B_6_2, poseidon2_perm_B_6_3, poseidon2_perm_B_7_0, poseidon2_perm_B_7_1, poseidon2_perm_B_7_2, poseidon2_perm_B_7_3, poseidon2_perm_B_8_0, poseidon2_perm_B_8_1, poseidon2_perm_B_8_2, poseidon2_perm_B_8_3, poseidon2_perm_B_9_0, poseidon2_perm_B_9_1, poseidon2_perm_B_9_2, poseidon2_perm_B_9_3, poseidon2_perm_EXT_LAYER_4, poseidon2_perm_EXT_LAYER_5, poseidon2_perm_EXT_LAYER_6, poseidon2_perm_EXT_LAYER_7, poseidon2_perm_T_0_4, poseidon2_perm_T_0_5, poseidon2_perm_T_0_6, poseidon2_perm_T_0_7, poseidon2_perm_T_1_4, poseidon2_perm_T_1_5, poseidon2_perm_T_1_6, poseidon2_perm_T_1_7, poseidon2_perm_T_2_4, poseidon2_perm_T_2_5, poseidon2_perm_T_2_6, poseidon2_perm_T_2_7, poseidon2_perm_T_3_4, poseidon2_perm_T_3_5, poseidon2_perm_T_3_6, poseidon2_perm_T_3_7, poseidon2_perm_T_60_4, poseidon2_perm_T_60_5, poseidon2_perm_T_60_6, poseidon2_perm_T_60_7, poseidon2_perm_T_61_4, poseidon2_perm_T_61_5, poseidon2_perm_T_61_6, poseidon2_perm_T_61_7, poseidon2_perm_T_62_4, poseidon2_perm_T_62_5, poseidon2_perm_T_62_6, poseidon2_perm_T_62_7, poseidon2_perm_T_63_4, poseidon2_perm_T_63_5, poseidon2_perm_T_63_6, poseidon2_perm_T_63_7, poseidon2_perm_a_0, poseidon2_perm_a_1, poseidon2_perm_a_2, poseidon2_perm_a_3, poseidon2_perm_b_0, poseidon2_perm_b_1, poseidon2_perm_b_2, poseidon2_perm_b_3, poseidon2_perm_sel, public_data_read_leaf_not_exists, public_data_read_low_leaf_hash, public_data_read_low_leaf_index, public_data_read_low_leaf_next_index, public_data_read_low_leaf_next_slot, public_data_read_low_leaf_slot, public_data_read_low_leaf_value, public_data_read_next_slot_inv, public_data_read_next_slot_is_nonzero, public_data_read_one, public_data_read_root, public_data_read_sel, public_data_read_slot, public_data_read_slot_low_leaf_slot_diff_inv, public_data_read_tree_height, public_data_read_value, range_check_dyn_diff, range_check_dyn_rng_chk_bits, range_check_dyn_rng_chk_pow_2, range_check_is_lte_u112, range_check_is_lte_u128, range_check_is_lte_u16, range_check_is_lte_u32, range_check_is_lte_u48, range_check_is_lte_u64, range_check_is_lte_u80, range_check_is_lte_u96, range_check_rng_chk_bits, range_check_sel, range_check_sel_r0_16_bit_rng_lookup, range_check_sel_r1_16_bit_rng_lookup, range_check_sel_r2_16_bit_rng_lookup, range_check_sel_r3_16_bit_rng_lookup, range_check_sel_r4_16_bit_rng_lookup, range_check_sel_r5_16_bit_rng_lookup, range_check_sel_r6_16_bit_rng_lookup, range_check_u16_r0, range_check_u16_r1, range_check_u16_r2, range_check_u16_r3, range_check_u16_r4, range_check_u16_r5, range_check_u16_r6, range_check_u16_r7, range_check_value, scalar_mul_bit, scalar_mul_bit_idx, scalar_mul_bit_radix, scalar_mul_end, scalar_mul_not_end, scalar_mul_point_inf, scalar_mul_point_x, scalar_mul_point_y, scalar_mul_res_inf, scalar_mul_res_x, scalar_mul_res_y, scalar_mul_scalar, scalar_mul_sel, scalar_mul_should_add, scalar_mul_start, scalar_mul_temp_inf, scalar_mul_temp_x, scalar_mul_temp_y, sha256_a, sha256_a_and_b, sha256_a_and_b_xor_a_and_c, sha256_a_and_c, sha256_a_rotr_13, sha256_a_rotr_2, sha256_a_rotr_22, sha256_a_rotr_2_xor_a_rotr_13, sha256_and_sel, sha256_b, sha256_b_and_c, sha256_c, sha256_ch, sha256_clk, sha256_computed_w_lhs, sha256_computed_w_rhs, sha256_d, sha256_e, sha256_e_and_f, sha256_e_rotr_11, sha256_e_rotr_25, sha256_e_rotr_6, sha256_e_rotr_6_xor_e_rotr_11, sha256_f, sha256_g, sha256_h, sha256_helper_w0, sha256_helper_w1, sha256_helper_w10, sha256_helper_w11, sha256_helper_w12, sha256_helper_w13, sha256_helper_w14, sha256_helper_w15, sha256_helper_w2, sha256_helper_w3, sha256_helper_w4, sha256_helper_w5, sha256_helper_w6, sha256_helper_w7, sha256_helper_w8, sha256_helper_w9, sha256_init_a, sha256_init_b, sha256_init_c, sha256_init_d, sha256_init_e, sha256_init_f, sha256_init_g, sha256_init_h, sha256_input_offset, sha256_is_input_round, sha256_latch, sha256_lhs_a_13, sha256_lhs_a_2, sha256_lhs_a_22, sha256_lhs_e_11, sha256_lhs_e_25, sha256_lhs_e_6, sha256_lhs_w_10, sha256_lhs_w_17, sha256_lhs_w_18, sha256_lhs_w_19, sha256_lhs_w_3, sha256_lhs_w_7, sha256_maj, sha256_next_a_lhs, sha256_next_a_rhs, sha256_next_e_lhs, sha256_next_e_rhs, sha256_not_e, sha256_not_e_and_g, sha256_output_a_lhs, sha256_output_a_rhs, sha256_output_b_lhs, sha256_output_b_rhs, sha256_output_c_lhs, sha256_output_c_rhs, sha256_output_d_lhs, sha256_output_d_rhs, sha256_output_e_lhs, sha256_output_e_rhs, sha256_output_f_lhs, sha256_output_f_rhs, sha256_output_g_lhs, sha256_output_g_rhs, sha256_output_h_lhs, sha256_output_h_rhs, sha256_output_offset, sha256_perform_round, sha256_rhs_a_13, sha256_rhs_a_2, sha256_rhs_a_22, sha256_rhs_e_11, sha256_rhs_e_25, sha256_rhs_e_6, sha256_rhs_w_10, sha256_rhs_w_17, sha256_rhs_w_18, sha256_rhs_w_19, sha256_rhs_w_3, sha256_rhs_w_7, sha256_round_constant, sha256_round_count, sha256_rounds_remaining, sha256_rounds_remaining_inv, sha256_s_0, sha256_s_1, sha256_sel, sha256_start, sha256_state_offset, sha256_w, sha256_w_15_rotr_18, sha256_w_15_rotr_7, sha256_w_15_rotr_7_xor_w_15_rotr_18, sha256_w_15_rshift_3, sha256_w_2_rotr_17, sha256_w_2_rotr_17_xor_w_2_rotr_19, sha256_w_2_rotr_19, sha256_w_2_rshift_10, sha256_w_s_0, sha256_w_s_1, sha256_xor_sel, to_radix_acc, to_radix_acc_under_p, to_radix_end, to_radix_exponent, to_radix_found, to_radix_is_unsafe_limb, to_radix_limb, to_radix_limb_eq_p, to_radix_limb_index, to_radix_limb_lt_p, to_radix_limb_p_diff, to_radix_limb_radix_diff, to_radix_not_end, to_radix_not_padding_limb, to_radix_p_limb, to_radix_radix, to_radix_rem_inverse, to_radix_safe_limbs, to_radix_safety_diff_inverse, to_radix_sel, to_radix_start, to_radix_value, update_check_address, update_check_block_number, update_check_block_number_bit_size, update_check_block_number_is_lt_block_of_change, update_check_block_of_change_subtraction, update_check_current_class_id, update_check_deployer_protocol_contract_address, update_check_hash_not_zero, update_check_original_class_id, update_check_public_data_tree_root, update_check_public_leaf_index_domain_separator, update_check_sel, update_check_shared_mutable_hash_slot, update_check_shared_mutable_leaf_slot, update_check_shared_mutable_slot, update_check_update_block_of_change, update_check_update_hash, update_check_update_hash_inv, update_check_update_hi_metadata, update_check_update_hi_metadata_bit_size, update_check_update_post_class_id_is_zero, update_check_update_post_class_inv, update_check_update_pre_class_id_is_zero, update_check_update_pre_class_inv, update_check_update_preimage_metadata, update_check_update_preimage_post_class_id, update_check_update_preimage_pre_class_id, update_check_updated_class_ids_slot, lookup_poseidon2_hash_poseidon2_perm_counts, lookup_to_radix_limb_range_counts, lookup_to_radix_limb_less_than_radix_range_counts, lookup_to_radix_fetch_safe_limbs_counts, lookup_to_radix_fetch_p_limb_counts, lookup_to_radix_limb_p_diff_range_counts, lookup_scalar_mul_to_radix_counts, lookup_scalar_mul_double_counts, lookup_scalar_mul_add_counts, lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts, lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts, lookup_address_derivation_partial_address_poseidon2_counts, lookup_address_derivation_public_keys_hash_poseidon2_0_counts, lookup_address_derivation_public_keys_hash_poseidon2_1_counts, lookup_address_derivation_public_keys_hash_poseidon2_2_counts, lookup_address_derivation_public_keys_hash_poseidon2_3_counts, lookup_address_derivation_public_keys_hash_poseidon2_4_counts, lookup_address_derivation_preaddress_poseidon2_counts, lookup_address_derivation_preaddress_scalar_mul_counts, lookup_address_derivation_address_ecadd_counts, lookup_bc_decomposition_bytes_are_bytes_counts, lookup_bc_decomposition_abs_diff_is_u16_counts, lookup_bc_hashing_get_packed_field_counts, lookup_bc_hashing_iv_is_len_counts, lookup_bc_hashing_poseidon2_hash_counts, lookup_range_check_dyn_rng_chk_pow_2_counts, lookup_range_check_dyn_diff_is_u16_counts, lookup_range_check_r0_is_u16_counts, lookup_range_check_r1_is_u16_counts, lookup_range_check_r2_is_u16_counts, lookup_range_check_r3_is_u16_counts, lookup_range_check_r4_is_u16_counts, lookup_range_check_r5_is_u16_counts, lookup_range_check_r6_is_u16_counts, lookup_range_check_r7_is_u16_counts, lookup_merkle_check_merkle_poseidon2_read_counts, lookup_merkle_check_merkle_poseidon2_write_counts, lookup_ff_gt_a_lo_range_counts, lookup_ff_gt_a_hi_range_counts, lookup_public_data_read_low_leaf_poseidon2_0_counts, lookup_public_data_read_low_leaf_poseidon2_1_counts, lookup_public_data_read_low_leaf_membership_counts, lookup_public_data_read_low_leaf_slot_validation_counts, lookup_public_data_read_low_leaf_next_slot_validation_counts, lookup_update_check_shared_mutable_slot_poseidon2_counts, lookup_update_check_shared_mutable_leaf_slot_poseidon2_counts, lookup_update_check_update_hash_public_data_read_counts, lookup_update_check_update_hash_poseidon2_counts, lookup_update_check_update_hi_metadata_range_counts, lookup_update_check_update_lo_metadata_range_counts, lookup_update_check_block_of_change_cmp_range_counts, lookup_nullifier_check_low_leaf_poseidon2_counts, lookup_nullifier_check_updated_low_leaf_poseidon2_counts, lookup_nullifier_check_low_leaf_merkle_check_counts, lookup_nullifier_check_low_leaf_nullifier_validation_counts, lookup_nullifier_check_low_leaf_next_nullifier_validation_counts, lookup_nullifier_check_new_leaf_poseidon2_counts, lookup_nullifier_check_new_leaf_merkle_check_counts, lookup_bc_retrieval_silo_deployment_nullifier_poseidon2_counts, lookup_bc_retrieval_deployment_nullifier_read_counts, lookup_bc_retrieval_address_derivation_counts, lookup_bc_retrieval_update_check_counts, lookup_bc_retrieval_class_id_derivation_counts, lookup_bc_retrieval_bytecode_hash_is_correct_counts, lookup_instr_fetching_pc_abs_diff_positive_counts, lookup_instr_fetching_instr_abs_diff_positive_counts, lookup_instr_fetching_tag_value_validation_counts, lookup_instr_fetching_bytecode_size_from_bc_dec_counts, lookup_instr_fetching_bytes_from_bc_dec_counts, lookup_instr_fetching_wire_instruction_info_counts, lookup_class_id_derivation_class_id_poseidon2_0_counts, lookup_class_id_derivation_class_id_poseidon2_1_counts, lookup_bitwise_integral_tag_length_counts, lookup_bitwise_byte_operations_counts, lookup_sha256_round_constant_counts -#define AVM2_DERIVED_WITNESS_ENTITIES lookup_poseidon2_hash_poseidon2_perm_inv, lookup_to_radix_limb_range_inv, lookup_to_radix_limb_less_than_radix_range_inv, lookup_to_radix_fetch_safe_limbs_inv, lookup_to_radix_fetch_p_limb_inv, lookup_to_radix_limb_p_diff_range_inv, lookup_scalar_mul_to_radix_inv, lookup_scalar_mul_double_inv, lookup_scalar_mul_add_inv, lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv, lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv, lookup_address_derivation_partial_address_poseidon2_inv, lookup_address_derivation_public_keys_hash_poseidon2_0_inv, lookup_address_derivation_public_keys_hash_poseidon2_1_inv, lookup_address_derivation_public_keys_hash_poseidon2_2_inv, lookup_address_derivation_public_keys_hash_poseidon2_3_inv, lookup_address_derivation_public_keys_hash_poseidon2_4_inv, lookup_address_derivation_preaddress_poseidon2_inv, lookup_address_derivation_preaddress_scalar_mul_inv, lookup_address_derivation_address_ecadd_inv, lookup_bc_decomposition_bytes_are_bytes_inv, lookup_bc_decomposition_abs_diff_is_u16_inv, lookup_bc_hashing_get_packed_field_inv, lookup_bc_hashing_iv_is_len_inv, lookup_bc_hashing_poseidon2_hash_inv, lookup_range_check_dyn_rng_chk_pow_2_inv, lookup_range_check_dyn_diff_is_u16_inv, lookup_range_check_r0_is_u16_inv, lookup_range_check_r1_is_u16_inv, lookup_range_check_r2_is_u16_inv, lookup_range_check_r3_is_u16_inv, lookup_range_check_r4_is_u16_inv, lookup_range_check_r5_is_u16_inv, lookup_range_check_r6_is_u16_inv, lookup_range_check_r7_is_u16_inv, lookup_merkle_check_merkle_poseidon2_read_inv, lookup_merkle_check_merkle_poseidon2_write_inv, lookup_ff_gt_a_lo_range_inv, lookup_ff_gt_a_hi_range_inv, lookup_public_data_read_low_leaf_poseidon2_0_inv, lookup_public_data_read_low_leaf_poseidon2_1_inv, lookup_public_data_read_low_leaf_membership_inv, lookup_public_data_read_low_leaf_slot_validation_inv, lookup_public_data_read_low_leaf_next_slot_validation_inv, lookup_update_check_shared_mutable_slot_poseidon2_inv, lookup_update_check_shared_mutable_leaf_slot_poseidon2_inv, lookup_update_check_update_hash_public_data_read_inv, lookup_update_check_update_hash_poseidon2_inv, lookup_update_check_update_hi_metadata_range_inv, lookup_update_check_update_lo_metadata_range_inv, lookup_update_check_block_of_change_cmp_range_inv, lookup_nullifier_check_low_leaf_poseidon2_inv, lookup_nullifier_check_updated_low_leaf_poseidon2_inv, lookup_nullifier_check_low_leaf_merkle_check_inv, lookup_nullifier_check_low_leaf_nullifier_validation_inv, lookup_nullifier_check_low_leaf_next_nullifier_validation_inv, lookup_nullifier_check_new_leaf_poseidon2_inv, lookup_nullifier_check_new_leaf_merkle_check_inv, lookup_bc_retrieval_silo_deployment_nullifier_poseidon2_inv, lookup_bc_retrieval_deployment_nullifier_read_inv, lookup_bc_retrieval_address_derivation_inv, lookup_bc_retrieval_update_check_inv, lookup_bc_retrieval_class_id_derivation_inv, lookup_bc_retrieval_bytecode_hash_is_correct_inv, lookup_instr_fetching_pc_abs_diff_positive_inv, lookup_instr_fetching_instr_abs_diff_positive_inv, lookup_instr_fetching_tag_value_validation_inv, lookup_instr_fetching_bytecode_size_from_bc_dec_inv, lookup_instr_fetching_bytes_from_bc_dec_inv, lookup_instr_fetching_wire_instruction_info_inv, lookup_class_id_derivation_class_id_poseidon2_0_inv, lookup_class_id_derivation_class_id_poseidon2_1_inv, lookup_bitwise_integral_tag_length_inv, lookup_bitwise_byte_operations_inv, lookup_sha256_round_constant_inv -#define AVM2_SHIFTED_ENTITIES bc_decomposition_bytes_shift, bc_decomposition_bytes_pc_plus_1_shift, bc_decomposition_bytes_pc_plus_10_shift, bc_decomposition_bytes_pc_plus_11_shift, bc_decomposition_bytes_pc_plus_12_shift, bc_decomposition_bytes_pc_plus_13_shift, bc_decomposition_bytes_pc_plus_14_shift, bc_decomposition_bytes_pc_plus_15_shift, bc_decomposition_bytes_pc_plus_16_shift, bc_decomposition_bytes_pc_plus_17_shift, bc_decomposition_bytes_pc_plus_18_shift, bc_decomposition_bytes_pc_plus_19_shift, bc_decomposition_bytes_pc_plus_2_shift, bc_decomposition_bytes_pc_plus_20_shift, bc_decomposition_bytes_pc_plus_21_shift, bc_decomposition_bytes_pc_plus_22_shift, bc_decomposition_bytes_pc_plus_23_shift, bc_decomposition_bytes_pc_plus_24_shift, bc_decomposition_bytes_pc_plus_25_shift, bc_decomposition_bytes_pc_plus_26_shift, bc_decomposition_bytes_pc_plus_27_shift, bc_decomposition_bytes_pc_plus_28_shift, bc_decomposition_bytes_pc_plus_29_shift, bc_decomposition_bytes_pc_plus_3_shift, bc_decomposition_bytes_pc_plus_30_shift, bc_decomposition_bytes_pc_plus_31_shift, bc_decomposition_bytes_pc_plus_32_shift, bc_decomposition_bytes_pc_plus_33_shift, bc_decomposition_bytes_pc_plus_34_shift, bc_decomposition_bytes_pc_plus_35_shift, bc_decomposition_bytes_pc_plus_4_shift, bc_decomposition_bytes_pc_plus_5_shift, bc_decomposition_bytes_pc_plus_6_shift, bc_decomposition_bytes_pc_plus_7_shift, bc_decomposition_bytes_pc_plus_8_shift, bc_decomposition_bytes_pc_plus_9_shift, bc_decomposition_bytes_remaining_shift, bc_decomposition_id_shift, bc_decomposition_pc_shift, bc_decomposition_sel_shift, bc_hashing_bytecode_id_shift, bc_hashing_incremental_hash_shift, bc_hashing_pc_index_shift, bc_hashing_sel_shift, bc_hashing_start_shift, bitwise_acc_ia_shift, bitwise_acc_ib_shift, bitwise_acc_ic_shift, bitwise_ctr_shift, bitwise_op_id_shift, execution_sel_shift, ff_gt_a_hi_shift, ff_gt_a_lo_shift, ff_gt_b_hi_shift, ff_gt_b_lo_shift, ff_gt_cmp_rng_ctr_shift, ff_gt_p_sub_a_hi_shift, ff_gt_p_sub_a_lo_shift, ff_gt_p_sub_b_hi_shift, ff_gt_p_sub_b_lo_shift, ff_gt_sel_shift, ff_gt_sel_gt_shift, merkle_check_index_shift, merkle_check_path_len_shift, merkle_check_read_node_shift, merkle_check_read_root_shift, merkle_check_sel_shift, merkle_check_start_shift, merkle_check_write_shift, merkle_check_write_node_shift, merkle_check_write_root_shift, poseidon2_hash_a_0_shift, poseidon2_hash_a_1_shift, poseidon2_hash_a_2_shift, poseidon2_hash_a_3_shift, poseidon2_hash_input_0_shift, poseidon2_hash_input_1_shift, poseidon2_hash_input_2_shift, poseidon2_hash_num_perm_rounds_rem_shift, poseidon2_hash_output_shift, poseidon2_hash_sel_shift, poseidon2_hash_start_shift, scalar_mul_bit_idx_shift, scalar_mul_point_inf_shift, scalar_mul_point_x_shift, scalar_mul_point_y_shift, scalar_mul_res_inf_shift, scalar_mul_res_x_shift, scalar_mul_res_y_shift, scalar_mul_scalar_shift, scalar_mul_sel_shift, scalar_mul_start_shift, scalar_mul_temp_inf_shift, scalar_mul_temp_x_shift, scalar_mul_temp_y_shift, sha256_a_shift, sha256_b_shift, sha256_c_shift, sha256_d_shift, sha256_e_shift, sha256_f_shift, sha256_g_shift, sha256_h_shift, sha256_helper_w0_shift, sha256_helper_w1_shift, sha256_helper_w10_shift, sha256_helper_w11_shift, sha256_helper_w12_shift, sha256_helper_w13_shift, sha256_helper_w14_shift, sha256_helper_w15_shift, sha256_helper_w2_shift, sha256_helper_w3_shift, sha256_helper_w4_shift, sha256_helper_w5_shift, sha256_helper_w6_shift, sha256_helper_w7_shift, sha256_helper_w8_shift, sha256_helper_w9_shift, sha256_rounds_remaining_shift, sha256_sel_shift, sha256_start_shift, to_radix_acc_shift, to_radix_acc_under_p_shift, to_radix_exponent_shift, to_radix_limb_shift, to_radix_limb_eq_p_shift, to_radix_limb_index_shift, to_radix_limb_lt_p_shift, to_radix_not_padding_limb_shift, to_radix_radix_shift, to_radix_safe_limbs_shift, to_radix_sel_shift, to_radix_start_shift, to_radix_value_shift -#define AVM2_TO_BE_SHIFTED(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.bitwise_acc_ia, e.bitwise_acc_ib, e.bitwise_acc_ic, e.bitwise_ctr, e.bitwise_op_id, e.execution_sel, 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_gt, 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.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 -#define AVM2_ALL_ENTITIES AVM2_PRECOMPUTED_ENTITIES, AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES, AVM2_SHIFTED_ENTITIES ->>>>>>> e9be05ff21 (feat: exec opcode spec table) #define AVM2_UNSHIFTED_ENTITIES AVM2_PRECOMPUTED_ENTITIES, AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES #define AVM2_WITNESS_ENTITIES AVM2_WIRE_ENTITIES, AVM2_DERIVED_WITNESS_ENTITIES #define AVM2_ALL_ENTITIES AVM2_ALL_ENTITIES_E() @@ -46,13 +37,8 @@ enum class ColumnAndShifts { SENTINEL_DO_NOT_USE, }; -<<<<<<< HEAD -constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2206; -constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2071; -======= -constexpr auto NUM_COLUMNS_WITH_SHIFTS = 1276; -constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 1141; ->>>>>>> 71547c5a4a (feat: exec opcode spec table) +constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2276; +constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2141; 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 d02bd407ea04..b9d74e92cbb7 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp @@ -50,19 +50,11 @@ namespace bb::avm2 { struct AvmFlavorVariables { -<<<<<<< HEAD - static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 45; - static constexpr size_t NUM_WITNESS_ENTITIES = 2026; - static constexpr size_t NUM_SHIFTED_ENTITIES = 135; - static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; - static constexpr size_t NUM_ALL_ENTITIES = 2206; -======= static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 70; - static constexpr size_t NUM_WITNESS_ENTITIES = 1071; + static constexpr size_t NUM_WITNESS_ENTITIES = 2071; static constexpr size_t NUM_SHIFTED_ENTITIES = 135; static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; - static constexpr size_t NUM_ALL_ENTITIES = 1276; ->>>>>>> 71547c5a4a (feat: exec opcode spec table) + static constexpr size_t NUM_ALL_ENTITIES = 2276; // Need to be templated for recursive verifier template diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp index 7afe1b60c61c..518a12976959 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp @@ -19,12 +19,6 @@ namespace { constexpr size_t operand_columns = 7; -struct RegisterInfo { - TaggedValue value = TaggedValue::from(0); - uint8_t mem_op = 0; - uint8_t r_w = 0; -}; - } // namespace // TODO: Currently we accept the execution opcode, we need a way to map this to the actual selector for the circuit @@ -55,28 +49,22 @@ void ExecutionTraceBuilder::process( assert(resolved_operands.size() <= operand_columns); resolved_operands.resize(operand_columns, simulation::Operand::from(0)); - std::array registers = {}; + std::array registers = {}; size_t input_counter = 0; size_t output_counter = 0; - for (size_t i = 0; i < operand_columns; ++i) { - auto register_info = REGISTER_INFO_MAP.at(ex_event.opcode); - // Check if this register for this opcode is a memory operation. - uint8_t mem_op = (register_info >> (2 * i) & 1); - // Check if this register for this opcode is a read/write operation. - uint8_t r_w = (register_info >> (2 * i + 1) & 1); - TaggedValue register_value = TaggedValue::from(0); - if (mem_op == 1) { - if (r_w == 1) { + auto register_info = REGISTER_INFO_MAP.at(ex_event.opcode); + for (uint8_t i = 0; i < operand_columns; ++i) { + if (register_info.is_active(i)) { + if (register_info.is_write(i)) { // If this is a write operation, we need to get the value from the output. - register_value = ex_event.output[output_counter++]; + registers[i] = ex_event.output[output_counter++]; } else { // If this is a read operation, we need to get the value from the input. - register_value = ex_event.inputs[input_counter++]; + registers[i] = ex_event.inputs[input_counter++]; } } - registers[i] = { .value = register_value, .mem_op = mem_op, .r_w = r_w }; } - auto dispatch_to_subtrace = SUBTRACE_INFO_MAP.at(ex_event.opcode); + const SubtraceInfo& dispatch_to_subtrace = SUBTRACE_INFO_MAP.at(ex_event.opcode); trace.set( row, @@ -101,45 +89,45 @@ void ExecutionTraceBuilder::process( { C::execution_rop6, resolved_operands.at(5) }, { C::execution_rop7, resolved_operands.at(6) }, // Selectors for memory operations - { C::execution_mem_op1, registers[0].mem_op }, - { C::execution_mem_op2, registers[1].mem_op }, - { C::execution_mem_op3, registers[2].mem_op }, - { C::execution_mem_op4, registers[3].mem_op }, - { C::execution_mem_op5, registers[4].mem_op }, - { C::execution_mem_op6, registers[5].mem_op }, - { C::execution_mem_op7, registers[6].mem_op }, + { C::execution_mem_op1, register_info.is_active(0) ? 1 : 0 }, + { C::execution_mem_op2, register_info.is_active(1) ? 1 : 0 }, + { C::execution_mem_op3, register_info.is_active(2) ? 1 : 0 }, + { C::execution_mem_op4, register_info.is_active(3) ? 1 : 0 }, + { C::execution_mem_op5, register_info.is_active(4) ? 1 : 0 }, + { C::execution_mem_op6, register_info.is_active(5) ? 1 : 0 }, + { C::execution_mem_op7, register_info.is_active(6) ? 1 : 0 }, // Read / Write Selectors - { C::execution_rw1, registers[0].r_w }, - { C::execution_rw2, registers[1].r_w }, - { C::execution_rw3, registers[2].r_w }, - { C::execution_rw4, registers[3].r_w }, - { C::execution_rw5, registers[4].r_w }, - { C::execution_rw6, registers[5].r_w }, - { C::execution_rw7, registers[6].r_w }, + { C::execution_rw1, register_info.is_write(0) ? 1 : 0 }, + { C::execution_rw2, register_info.is_write(1) ? 1 : 0 }, + { C::execution_rw3, register_info.is_write(2) ? 1 : 0 }, + { C::execution_rw4, register_info.is_write(3) ? 1 : 0 }, + { C::execution_rw5, register_info.is_write(4) ? 1 : 0 }, + { C::execution_rw6, register_info.is_write(5) ? 1 : 0 }, + { C::execution_rw7, register_info.is_write(6) ? 1 : 0 }, // Register Values - { C::execution_reg1, registers[0].value.as_ff() }, - { C::execution_reg2, registers[1].value.as_ff() }, - { C::execution_reg3, registers[2].value.as_ff() }, - { C::execution_reg4, registers[3].value.as_ff() }, - { C::execution_reg5, registers[4].value.as_ff() }, - { C::execution_reg6, registers[5].value.as_ff() }, - { C::execution_reg7, registers[6].value.as_ff() }, + { C::execution_reg1, registers[0].as_ff() }, + { C::execution_reg2, registers[1].as_ff() }, + { C::execution_reg3, registers[2].as_ff() }, + { C::execution_reg4, registers[3].as_ff() }, + { C::execution_reg5, registers[4].as_ff() }, + { C::execution_reg6, registers[5].as_ff() }, + { C::execution_reg7, registers[6].as_ff() }, // Associated Mem Tags of Register values - { C::execution_mem_tag1, static_cast(registers[0].value.get_tag()) }, - { C::execution_mem_tag2, static_cast(registers[1].value.get_tag()) }, - { C::execution_mem_tag3, static_cast(registers[2].value.get_tag()) }, - { C::execution_mem_tag4, static_cast(registers[3].value.get_tag()) }, - { C::execution_mem_tag5, static_cast(registers[4].value.get_tag()) }, - { C::execution_mem_tag6, static_cast(registers[5].value.get_tag()) }, - { C::execution_mem_tag7, static_cast(registers[6].value.get_tag()) }, + { C::execution_mem_tag1, static_cast(registers[0].get_tag()) }, + { C::execution_mem_tag2, static_cast(registers[1].get_tag()) }, + { C::execution_mem_tag3, static_cast(registers[2].get_tag()) }, + { C::execution_mem_tag4, static_cast(registers[3].get_tag()) }, + { C::execution_mem_tag5, static_cast(registers[4].get_tag()) }, + { C::execution_mem_tag6, static_cast(registers[5].get_tag()) }, + { C::execution_mem_tag7, static_cast(registers[6].get_tag()) }, // Selector Id { C::execution_subtrace_operation_id, dispatch_to_subtrace.subtrace_operation_id }, // Selectors - { C::execution_alu_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::ALU ? 1 : 0 }, - { C::execution_bitwise_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::BITWISE ? 1 : 0 }, - { C::execution_poseidon2_perm_sel, + { C::execution_sel_alu, dispatch_to_subtrace.subtrace_selector == SubtraceSel::ALU ? 1 : 0 }, + { C::execution_sel_bitwise, dispatch_to_subtrace.subtrace_selector == SubtraceSel::BITWISE ? 1 : 0 }, + { C::execution_sel_poseidon2_perm, dispatch_to_subtrace.subtrace_selector == SubtraceSel::POSEIDON2PERM ? 1 : 0 }, - { C::execution_to_radix_sel, dispatch_to_subtrace.subtrace_selector == SubtraceSel::TORADIXBE ? 1 : 0 }, + { C::execution_sel_to_radix, dispatch_to_subtrace.subtrace_selector == SubtraceSel::TORADIXBE ? 1 : 0 }, } }); auto operands_after_relative = addr_event.after_relative; diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp index a4e565956b87..518b0f867c45 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp @@ -57,7 +57,7 @@ TEST(ExecutionTraceGenTest, RegisterAllocation) // todo: Test doesnt check the other register fields are zeroed out. EXPECT_THAT(trace.as_rows(), AllOf(Contains(Field(&R::execution_sel, 1)), - Contains(Field(&R::execution_alu_sel, 1)), + Contains(Field(&R::execution_sel_alu, 1)), Contains(Field(&R::execution_reg1, 5)), Contains(Field(&R::execution_reg2, 3)), Contains(Field(&R::execution_reg3, 8)), 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 2fea6b697ade..d96a748214f9 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp @@ -10,6 +10,13 @@ namespace bb::avm2::tracegen { +namespace { + +const uint16_t read_encoding = 0b01; +const uint16_t write_encoding = 0b11; + +} // namespace + RegisterMemInfo& RegisterMemInfo::has_inputs(uint16_t num_inputs) { for (uint16_t i = 0; i < num_inputs; ++i) { @@ -28,6 +35,16 @@ RegisterMemInfo& RegisterMemInfo::has_outputs(uint16_t num_outputs) return *this; } +bool RegisterMemInfo::is_active(uint8_t index) const +{ + return ((encoded_register_info >> (2 * index)) & 1) == 1; +} + +bool RegisterMemInfo::is_write(uint8_t index) const +{ + return ((encoded_register_info >> (2 * index + 1)) & 1) == 1; +} + const std::unordered_map SUBTRACE_INFO_MAP = { // Map each ExecutionOpcode to a SubtraceInfo { ExecutionOpCode::ADD, { .subtrace_selector = SubtraceSel::ALU, .subtrace_operation_id = 0 } }, @@ -68,14 +85,14 @@ const std::unordered_map SUBTRACE_INFO_MAP = { // Maps Execution opcodes to their register + memory accesses // TODO: This will need to revisited, we will only be sure of the access patterns when we do the opcodes -const std::unordered_map REGISTER_INFO_MAP = { { - { ExecutionOpCode::ADD, RegisterMemInfo().has_inputs(2).has_outputs(1).encode() }, - { ExecutionOpCode::SET, RegisterMemInfo().has_inputs(0).has_outputs(1).encode() }, - { ExecutionOpCode::MOV, RegisterMemInfo().has_inputs(1).has_outputs(1).encode() }, - { ExecutionOpCode::CALL, RegisterMemInfo().has_inputs(0).encode() }, - { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(0).encode() }, - { ExecutionOpCode::JUMP, RegisterMemInfo().encode() }, - { ExecutionOpCode::JUMPI, RegisterMemInfo().has_inputs(1).encode() }, +const std::unordered_map REGISTER_INFO_MAP = { { + { ExecutionOpCode::ADD, RegisterMemInfo().has_inputs(2).has_outputs(1) }, + { ExecutionOpCode::SET, RegisterMemInfo().has_inputs(0).has_outputs(1) }, + { ExecutionOpCode::MOV, RegisterMemInfo().has_inputs(1).has_outputs(1) }, + { ExecutionOpCode::CALL, RegisterMemInfo().has_inputs(0) }, + { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(0) }, + { ExecutionOpCode::JUMP, RegisterMemInfo() }, + { ExecutionOpCode::JUMPI, RegisterMemInfo().has_inputs(1) }, } }; } // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp index 78d209f0f99e..814d61ae643c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.hpp @@ -38,14 +38,17 @@ class RegisterMemInfo { RegisterMemInfo& has_inputs(uint16_t num_inputs); RegisterMemInfo& has_outputs(uint16_t num_outputs); + // Given a register index, returns if the register is active for this instruction + bool is_active(uint8_t index) const; + // Given a register index, returns if the register is used for writing to memory + bool is_write(uint8_t index) const; + private: - static const uint16_t read_encoding = 0b01; - static const uint16_t write_encoding = 0b11; uint16_t encoded_register_info = 0; uint16_t write_index = 0; }; extern const std::unordered_map SUBTRACE_INFO_MAP; -extern const std::unordered_map REGISTER_INFO_MAP; +extern const std::unordered_map REGISTER_INFO_MAP; } // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp index e898b2220c91..f1e17b3492b4 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/precomputed_trace.cpp @@ -238,26 +238,26 @@ void PrecomputedTraceBuilder::process_exec_instruction_spec(TraceContainer& trac { C::precomputed_exec_opcode_dynamic_l2_gas, exec_instruction_spec.gas_cost.dyn_l2 }, { C::precomputed_exec_opcode_dynamic_da_gas, exec_instruction_spec.gas_cost.dyn_da }, // Memory Access for registers - { C::precomputed_mem_op_reg1, register_info & 1 }, - { C::precomputed_rw_1, (register_info >> 1) & 1 }, - { C::precomputed_mem_op_reg2, (register_info >> 2) & 1 }, - { C::precomputed_rw_2, (register_info >> 3) & 1 }, - { C::precomputed_mem_op_reg3, (register_info >> 4) & 1 }, - { C::precomputed_rw_3, (register_info >> 5) & 1 }, - { C::precomputed_mem_op_reg4, (register_info >> 6) & 1 }, - { C::precomputed_rw_4, (register_info >> 7) & 1 }, - { C::precomputed_mem_op_reg5, (register_info >> 8) & 1 }, - { C::precomputed_rw_5, (register_info >> 8) & 1 }, - { C::precomputed_mem_op_reg6, (register_info >> 10) & 1 }, - { C::precomputed_rw_6, (register_info >> 11) & 1 }, - { C::precomputed_mem_op_reg7, (register_info >> 12) & 1 }, - { C::precomputed_rw_7, (register_info >> 13) & 1 }, + { C::precomputed_mem_op_reg1, register_info.is_active(0) ? 1 : 0 }, + { C::precomputed_mem_op_reg2, register_info.is_active(1) ? 1 : 0 }, + { C::precomputed_mem_op_reg3, register_info.is_active(2) ? 1 : 0 }, + { C::precomputed_mem_op_reg4, register_info.is_active(3) ? 1 : 0 }, + { C::precomputed_mem_op_reg5, register_info.is_active(4) ? 1 : 0 }, + { C::precomputed_mem_op_reg6, register_info.is_active(5) ? 1 : 0 }, + { C::precomputed_mem_op_reg7, register_info.is_active(6) ? 1 : 0 }, + { C::precomputed_rw_1, register_info.is_write(0) ? 1 : 0 }, + { C::precomputed_rw_2, register_info.is_write(1) ? 1 : 0 }, + { C::precomputed_rw_3, register_info.is_write(2) ? 1 : 0 }, + { C::precomputed_rw_4, register_info.is_write(3) ? 1 : 0 }, + { C::precomputed_rw_5, register_info.is_write(4) ? 1 : 0 }, + { C::precomputed_rw_6, register_info.is_write(5) ? 1 : 0 }, + { C::precomputed_rw_7, register_info.is_write(6) ? 1 : 0 }, // Gadget / Subtrace Selectors - { C::precomputed_op_alu_sel, alu_sel }, - { C::precomputed_op_bitwise_sel, bitwise_sel }, - { C::precomputed_op_poseidon_perm_sel, poseidon_sel }, - { C::precomputed_op_to_radix_sel, to_radix_sel }, - { C::precomputed_op_ecc_sel, ecc_sel }, + { C::precomputed_sel_dispatch_alu, alu_sel }, + { C::precomputed_sel_dispatch_bitwise, bitwise_sel }, + { C::precomputed_sel_dispatch_poseidon_perm, poseidon_sel }, + { C::precomputed_sel_dispatch_to_radix, to_radix_sel }, + { C::precomputed_sel_dispatch_ecc, ecc_sel }, { C::precomputed_subtrace_operation_id, dispatch_to_subtrace.subtrace_operation_id } } }); row++; }