diff --git a/barretenberg/cpp/pil/vm2/context.pil b/barretenberg/cpp/pil/vm2/context.pil index 777b78b7a65d..2c94309c28be 100644 --- a/barretenberg/cpp/pil/vm2/context.pil +++ b/barretenberg/cpp/pil/vm2/context.pil @@ -1,13 +1,27 @@ // This is a virtual gadget, which is part of the execution trace. namespace execution; + // This the same sel as in execution + #[skippable_if] + sel = 0; + + // Useful to define some opcodes within this pil file + // Constrained to be boolean by execution instruction spec table + pol commit sel_call; + pol commit sel_static_call; + pol CALL = sel_call + sel_static_call; // Guaranteed to be mutually exclusive + // CALL & precomputed.first_row are NAND + CALL * precomputed.first_row = 0; + + // Context columns pol commit context_id; + pol commit parent_id; pol commit pc; + pol commit next_pc; pol commit msg_sender; pol commit contract_address; - + // Constrained boolean by tx trace (for enqueued call) and #[NEXT_IS_STATIC] for nested pol commit is_static; - is_static * (1 - is_static) = 0; pol commit parent_calldata_offset_addr; pol commit parent_calldata_size_addr; @@ -15,3 +29,57 @@ namespace execution; pol commit last_child_returndata_offset_addr; pol commit last_child_returndata_size_addr; pol commit last_child_success; // Careful with this for now... + + // ==== Helper columns ==== + // TODO: These context modifiers also need to factor in when a new enqueued call occurs + // REPLACE prefixed precomputed.first_row in relations with actual phase / enqueued call change + pol NOT_FIRST = (1 - precomputed.first_row); // Temp + + // next_context_id increments with each invocation of an external call or new enqueued call + pol commit next_context_id; // Can be replaced by clk + // The initial next_context_id = 2, in row = 1 + #[INCR_CONTEXT_ID] + NOT_FIRST * sel' * (next_context_id' - (next_context_id + CALL)) = 0; + + // CALL = 1 <==> context_id' = next_context_id + // CALL = 0 <==> context_id' = context_id + #[NEXT_CONTEXT_ID] + NOT_FIRST * sel' * ((next_context_id - context_id) * CALL + context_id + precomputed.first_row - context_id') = 0; + + // CALL = 1 <==> parent_id' = context_id + // CALL = 0 <==> parent_id' = parent_id + #[NEXT_PARENT_ID] + NOT_FIRST * sel' * ((context_id - parent_id) * (CALL + precomputed.first_row) + parent_id - parent_id') = 0; + + // CALL = 1 <==> pc' = 0 + // CALL = 0 <==> pc' = next_pc + #[NEXT_PC] + NOT_FIRST * sel' * (pc' - ((1 - CALL) * next_pc)) = 0; + + // CALL = 1 <==> msg_sender' = contract_address + // CALL = 0 <==> msg_sender' = msg_sender + #[NEXT_MSG_SENDER] + NOT_FIRST * sel' * ((contract_address - msg_sender) * CALL + msg_sender - msg_sender') = 0; + + // CALL = 1 <==> contract_address' = reg3 (intermediate register 3 from execution trace) + // CALL = 0 <==> contract_address' = contract_address + #[NEXT_CONTRACT_ADDR] + NOT_FIRST * sel' * ((reg3 - contract_address) * CALL + contract_address - contract_address') = 0; + + // CALL = 1 && static_call = 1 <==> is_static' = 1 + // CALL = 1 && static_call = 0 <==> is_static' = 0 + // CALL = 0 && static_call = 0 <==> is_static' = is_static + #[NEXT_IS_STATIC] + NOT_FIRST * sel' * (is_static' - (sel_static_call + (1 - CALL) * is_static)) = 0; + + // CALL = 1 <==> parent_calldata_offset_addr' = rop4 (resolved operand 4 from execution trace) + // CALL = 0 <==> parent_calldata_offset_addr' = parent_calldata_offset_addr + #[NEXT_CD_OFFSET] + NOT_FIRST * sel' * ((rop4 - parent_calldata_offset_addr) * CALL + parent_calldata_offset_addr - parent_calldata_offset_addr') = 0; + + // CALL = 1 <==> parent_calldata_size_addr' = rop5 (resolved operand 5 from execution trace) + // CALL = 0 <==> parent_calldata_size_addr' = parent_calldata_size_addr + #[NEXT_CD_SIZE] + NOT_FIRST * sel' * ((rop5 - parent_calldata_size_addr) * CALL + parent_calldata_size_addr - parent_calldata_size_addr') = 0; + + diff --git a/barretenberg/cpp/pil/vm2/context_stack.pil b/barretenberg/cpp/pil/vm2/context_stack.pil index d3ee944ac79d..fa5db9a4534a 100644 --- a/barretenberg/cpp/pil/vm2/context_stack.pil +++ b/barretenberg/cpp/pil/vm2/context_stack.pil @@ -1,12 +1,11 @@ namespace context_stack; pol commit context_id; - pol commit pc; + pol commit parent_id; + pol commit next_pc; pol commit msg_sender; pol commit contract_address; - pol commit is_static; - is_static * (1 - is_static) = 0; pol commit parent_calldata_offset_addr; pol commit parent_calldata_size_addr; diff --git a/barretenberg/cpp/pil/vm2/execution.pil b/barretenberg/cpp/pil/vm2/execution.pil index c6d0ef8182da..39bee12c07c4 100644 --- a/barretenberg/cpp/pil/vm2/execution.pil +++ b/barretenberg/cpp/pil/vm2/execution.pil @@ -28,6 +28,10 @@ include "nullifier_check.pil"; namespace execution; pol commit sel; // subtrace selector + +#[skippable_if] +sel = 0; + // Subtrace operation id pol commit subtrace_operation_id; 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 d31294bfc507..cb6b1630aec4 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/execution.test.cpp @@ -16,6 +16,7 @@ using tracegen::TestTraceContainer; using FF = AvmFlavorSettings::FF; using C = Column; using execution = bb::avm2::execution; +using context = bb::avm2::context; TEST(ExecutionConstrainingTest, Basic) { @@ -43,6 +44,50 @@ TEST(ExecutionConstrainingTest, Continuity) check_relation(trace, execution::SR_TRACE_CONTINUITY_1, execution::SR_TRACE_CONTINUITY_2); } +TEST(ExecutionConstrainingTest, ContextSwitchingCall) +{ + TestTraceContainer trace({ { + { C::execution_next_context_id, 0 }, + { C::precomputed_first_row, 1 }, + }, + // Dummy Row + { { C::execution_sel, 1 }, + { C::execution_pc, 0 }, + { C::execution_next_pc, 1 }, + { C::execution_context_id, 1 }, + { C::execution_next_context_id, 2 } }, + // CALL + { + { C::execution_sel, 1 }, + { C::execution_pc, 1 }, + { C::execution_next_pc, 2 }, + { C::execution_sel_call, 1 }, + { C::execution_context_id, 1 }, + { C::execution_next_context_id, 2 }, + { C::execution_rop4, /*cd offset=*/10 }, + { C::execution_rop5, /*cd size=*/1 }, + { C::execution_reg3, /*contract address=*/0xdeadbeef }, + }, + // Dummy Row in new context + { + { C::execution_sel, 1 }, + { C::execution_pc, 0 }, // pc=0 because it is after a CALL + { C::execution_next_pc, 20 }, + { C::execution_context_id, 2 }, // Previous row next_context_id + { C::execution_next_context_id, 3 }, // Incremented due to previous call + { C::execution_parent_id, 1 }, // Previous row context id + { C::execution_contract_address, 0xdeadbeef }, + { C::execution_parent_calldata_offset_addr, 10 }, + { C::execution_parent_calldata_size_addr, 1 }, + }, + { + { C::execution_sel, 0 }, + { C::execution_last, 1 }, + } }); + + check_relation(trace); +} + TEST(ExecutionConstrainingTest, ContinuityBrokenFirstRow) { // clang-format off diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp index 8804412b4be5..600ee463b986 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/columns.hpp @@ -9,10 +9,10 @@ namespace bb::avm2 { // clang-format off #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_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_next_pc, e context_stack_parent_calldata_offset_addr, e context_stack_parent_calldata_size_addr, e context_stack_parent_id, e ecc_add_op, e ecc_double_op, e ecc_inv_2_p_y, e ecc_inv_x_diff, e ecc_inv_y_diff, e ecc_lambda, e ecc_p_is_inf, e ecc_p_x, e ecc_p_y, e ecc_q_is_inf, e ecc_q_x, e ecc_q_y, e ecc_r_is_inf, e ecc_r_x, e ecc_r_y, e ecc_result_infinity, e ecc_sel, e ecc_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_next_context_id, e execution_next_pc, 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_parent_id, 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_call, 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_static_call, 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 +#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_context_id_shift, e execution_contract_address_shift, e execution_is_static_shift, e execution_msg_sender_shift, e execution_next_context_id_shift, e execution_parent_calldata_offset_addr_shift, e execution_parent_calldata_size_addr_shift, e execution_parent_id_shift, e execution_pc_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_context_id, e execution_contract_address, e execution_is_static, e execution_msg_sender, e execution_next_context_id, e execution_parent_calldata_offset_addr, e execution_parent_calldata_size_addr, e execution_parent_id, e execution_pc, 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_E(e) AVM2_PRECOMPUTED_ENTITIES_E(e), AVM2_WIRE_ENTITIES_E(e), AVM2_DERIVED_WITNESS_ENTITIES_E(e), AVM2_SHIFTED_ENTITIES_E(e) #define AVM2_PRECOMPUTED_ENTITIES AVM2_PRECOMPUTED_ENTITIES_E() @@ -37,8 +37,8 @@ enum class ColumnAndShifts { SENTINEL_DO_NOT_USE, }; -constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2276; -constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2141; +constexpr auto NUM_COLUMNS_WITH_SHIFTS = 2291; +constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS = 2147; 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 b9d74e92cbb7..e2f953d8055d 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/flavor_variables.hpp @@ -10,7 +10,6 @@ #include "relations/bitwise.hpp" #include "relations/class_id_derivation.hpp" #include "relations/context.hpp" -#include "relations/context_stack.hpp" #include "relations/ecc.hpp" #include "relations/execution.hpp" #include "relations/ff_gt.hpp" @@ -51,10 +50,10 @@ namespace bb::avm2 { struct AvmFlavorVariables { static constexpr size_t NUM_PRECOMPUTED_ENTITIES = 70; - static constexpr size_t NUM_WITNESS_ENTITIES = 2071; - static constexpr size_t NUM_SHIFTED_ENTITIES = 135; + static constexpr size_t NUM_WITNESS_ENTITIES = 2077; + static constexpr size_t NUM_SHIFTED_ENTITIES = 144; static constexpr size_t NUM_WIRES = NUM_WITNESS_ENTITIES + NUM_PRECOMPUTED_ENTITIES; - static constexpr size_t NUM_ALL_ENTITIES = 2276; + static constexpr size_t NUM_ALL_ENTITIES = 2291; // Need to be templated for recursive verifier template @@ -68,7 +67,6 @@ struct AvmFlavorVariables { avm2::bitwise, avm2::class_id_derivation, avm2::context, - avm2::context_stack, avm2::ecc, avm2::execution, avm2::ff_gt, diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context.hpp index 5b9961604f9c..7cc3eb12d854 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context.hpp @@ -12,7 +12,13 @@ template class contextImpl { public: using FF = FF_; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 4, 5, 5, 5, 5, 5, 5, 5, 5 }; + + template inline static bool skip(const AllEntities& in) + { + const auto& new_term = in; + return (new_term.execution_sel).is_zero(); + } template void static accumulate(ContainerOverSubrelations& evals, @@ -20,13 +26,93 @@ template class contextImpl { [[maybe_unused]] const RelationParameters&, [[maybe_unused]] const FF& scaling_factor) { + const auto execution_CALL = new_term.execution_sel_call + new_term.execution_sel_static_call; + const auto execution_NOT_FIRST = (FF(1) - new_term.precomputed_first_row); { using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = new_term.execution_is_static * (FF(1) - new_term.execution_is_static); + auto tmp = execution_CALL * new_term.precomputed_first_row; tmp *= scaling_factor; std::get<0>(evals) += typename Accumulator::View(tmp); } + { // INCR_CONTEXT_ID + using Accumulator = typename std::tuple_element_t<1, ContainerOverSubrelations>; + auto tmp = + execution_NOT_FIRST * new_term.execution_sel_shift * + (new_term.execution_next_context_id_shift - (new_term.execution_next_context_id + execution_CALL)); + tmp *= scaling_factor; + std::get<1>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_CONTEXT_ID + using Accumulator = typename std::tuple_element_t<2, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_next_context_id - new_term.execution_context_id) * execution_CALL + + new_term.execution_context_id + new_term.precomputed_first_row) - + new_term.execution_context_id_shift); + tmp *= scaling_factor; + std::get<2>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_PARENT_ID + using Accumulator = typename std::tuple_element_t<3, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_context_id - new_term.execution_parent_id) * + (execution_CALL + new_term.precomputed_first_row) + + new_term.execution_parent_id) - + new_term.execution_parent_id_shift); + tmp *= scaling_factor; + std::get<3>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_PC + using Accumulator = typename std::tuple_element_t<4, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (new_term.execution_pc_shift - (FF(1) - execution_CALL) * new_term.execution_next_pc); + tmp *= scaling_factor; + std::get<4>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_MSG_SENDER + using Accumulator = typename std::tuple_element_t<5, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_contract_address - new_term.execution_msg_sender) * execution_CALL + + new_term.execution_msg_sender) - + new_term.execution_msg_sender_shift); + tmp *= scaling_factor; + std::get<5>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_CONTRACT_ADDR + using Accumulator = typename std::tuple_element_t<6, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_reg3 - new_term.execution_contract_address) * execution_CALL + + new_term.execution_contract_address) - + new_term.execution_contract_address_shift); + tmp *= scaling_factor; + std::get<6>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_IS_STATIC + using Accumulator = typename std::tuple_element_t<7, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (new_term.execution_is_static_shift - + (new_term.execution_sel_static_call + (FF(1) - execution_CALL) * new_term.execution_is_static)); + tmp *= scaling_factor; + std::get<7>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_CD_OFFSET + using Accumulator = typename std::tuple_element_t<8, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_rop4 - new_term.execution_parent_calldata_offset_addr) * execution_CALL + + new_term.execution_parent_calldata_offset_addr) - + new_term.execution_parent_calldata_offset_addr_shift); + tmp *= scaling_factor; + std::get<8>(evals) += typename Accumulator::View(tmp); + } + { // NEXT_CD_SIZE + using Accumulator = typename std::tuple_element_t<9, ContainerOverSubrelations>; + auto tmp = execution_NOT_FIRST * new_term.execution_sel_shift * + (((new_term.execution_rop5 - new_term.execution_parent_calldata_size_addr) * execution_CALL + + new_term.execution_parent_calldata_size_addr) - + new_term.execution_parent_calldata_size_addr_shift); + tmp *= scaling_factor; + std::get<9>(evals) += typename Accumulator::View(tmp); + } } }; @@ -36,9 +122,39 @@ template class context : public Relation> { static std::string get_subrelation_label(size_t index) { - switch (index) {} + switch (index) { + case 1: + return "INCR_CONTEXT_ID"; + case 2: + return "NEXT_CONTEXT_ID"; + case 3: + return "NEXT_PARENT_ID"; + case 4: + return "NEXT_PC"; + case 5: + return "NEXT_MSG_SENDER"; + case 6: + return "NEXT_CONTRACT_ADDR"; + case 7: + return "NEXT_IS_STATIC"; + case 8: + return "NEXT_CD_OFFSET"; + case 9: + return "NEXT_CD_SIZE"; + } return std::to_string(index); } + + // Subrelation indices constants, to be used in tests. + static constexpr size_t SR_INCR_CONTEXT_ID = 1; + static constexpr size_t SR_NEXT_CONTEXT_ID = 2; + static constexpr size_t SR_NEXT_PARENT_ID = 3; + static constexpr size_t SR_NEXT_PC = 4; + static constexpr size_t SR_NEXT_MSG_SENDER = 5; + static constexpr size_t SR_NEXT_CONTRACT_ADDR = 6; + static constexpr size_t SR_NEXT_IS_STATIC = 7; + static constexpr size_t SR_NEXT_CD_OFFSET = 8; + static constexpr size_t SR_NEXT_CD_SIZE = 9; }; } // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context_stack.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context_stack.hpp deleted file mode 100644 index 03670ebc2ec4..000000000000 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/context_stack.hpp +++ /dev/null @@ -1,44 +0,0 @@ -// AUTOGENERATED FILE -#pragma once - -#include - -#include "barretenberg/relations/relation_parameters.hpp" -#include "barretenberg/relations/relation_types.hpp" - -namespace bb::avm2 { - -template class context_stackImpl { - public: - using FF = FF_; - - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3 }; - - template - void static accumulate(ContainerOverSubrelations& evals, - const AllEntities& new_term, - [[maybe_unused]] const RelationParameters&, - [[maybe_unused]] const FF& scaling_factor) - { - - { - using Accumulator = typename std::tuple_element_t<0, ContainerOverSubrelations>; - auto tmp = new_term.context_stack_is_static * (FF(1) - new_term.context_stack_is_static); - tmp *= scaling_factor; - std::get<0>(evals) += typename Accumulator::View(tmp); - } - } -}; - -template class context_stack : public Relation> { - public: - static constexpr const std::string_view NAME = "context_stack"; - - static std::string get_subrelation_label(size_t index) - { - switch (index) {} - return std::to_string(index); - } -}; - -} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/execution.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/execution.hpp index 087bbf772b48..a1eb73d1b49e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/execution.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/execution.hpp @@ -14,6 +14,12 @@ template class executionImpl { static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 4, 4, 3 }; + template inline static bool skip(const AllEntities& in) + { + const auto& new_term = in; + return (new_term.execution_sel).is_zero(); + } + template void static accumulate(ContainerOverSubrelations& evals, const AllEntities& new_term, diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/context.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/context.hpp index 600a633876c0..2f13890f8159 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/context.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/context.hpp @@ -30,8 +30,8 @@ class ContextInterface { virtual void set_next_pc(uint32_t new_next_pc) = 0; virtual bool halted() const = 0; virtual void halt() = 0; - virtual uint32_t get_context_id() const = 0; + virtual uint32_t get_parent_id() const = 0; // Environment. virtual const AztecAddress& get_address() const = 0; @@ -119,6 +119,7 @@ class BaseContext : public ContextInterface { uint32_t write_size = std::min(rd_offset + rd_size, returndata_size); std::vector retrieved_returndata; + retrieved_returndata.reserve(write_size); for (uint32_t i = 0; i < write_size; i++) { retrieved_returndata.push_back(child_memory.get(get_last_rd_offset() + i)); } @@ -163,19 +164,24 @@ class EnqueuedCallContext : public BaseContext { , calldata(calldata.begin(), calldata.end()) {} + uint32_t get_parent_id() const override { return 0; } // No parent context for the top-level context. // Event Emitting ContextEvent serialize_context_event() override { - return { .id = get_context_id(), - .pc = get_pc(), - .msg_sender = get_msg_sender(), - .contract_addr = get_address(), - .is_static = get_is_static(), - .parent_cd_addr = 0, - .parent_cd_size_addr = 0, - .last_child_rd_addr = get_last_rd_offset(), - .last_child_rd_size_addr = get_last_rd_size(), - .last_child_success = get_last_success() }; + return { + .id = get_context_id(), + .parent_id = 0, + .pc = get_pc(), + .next_pc = get_next_pc(), + .msg_sender = get_msg_sender(), + .contract_addr = get_address(), + .is_static = get_is_static(), + .parent_cd_addr = 0, + .parent_cd_size_addr = 0, + .last_child_rd_addr = get_last_rd_offset(), + .last_child_rd_size_addr = get_last_rd_size(), + .last_child_success = get_last_success(), + }; }; // Input / Output @@ -217,16 +223,25 @@ class NestedContext : public BaseContext { , parent_context(parent_context) {} + uint32_t get_parent_id() const override { return parent_context.get_context_id(); } + // Event Emitting ContextEvent serialize_context_event() override { - return { .id = get_context_id(), - .pc = get_pc(), - .msg_sender = get_msg_sender(), - .contract_addr = get_address(), - .is_static = get_is_static(), - .parent_cd_addr = parent_cd_offset, - .parent_cd_size_addr = parent_cd_size }; + return { + .id = get_context_id(), + .parent_id = get_parent_id(), + .pc = get_pc(), + .next_pc = get_next_pc(), + .msg_sender = get_msg_sender(), + .contract_addr = get_address(), + .is_static = get_is_static(), + .parent_cd_addr = parent_cd_offset, + .parent_cd_size_addr = parent_cd_size, + .last_child_rd_addr = get_last_rd_offset(), + .last_child_rd_size_addr = get_last_rd_size(), + .last_child_success = get_last_success(), + }; }; // Input / Output @@ -238,6 +253,7 @@ class NestedContext : public BaseContext { uint32_t read_size = std::min(cd_offset + cd_size, calldata_size); std::vector retrieved_calldata; + retrieved_calldata.reserve(read_size); for (uint32_t i = 0; i < read_size; i++) { retrieved_calldata.push_back(parent_context.get_memory().get(parent_cd_offset + i)); } diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/context_events.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/context_events.hpp index a45a52a9426e..d893d43255de 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/context_events.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/context_events.hpp @@ -8,10 +8,11 @@ namespace bb::avm2::simulation { struct ContextEvent { uint32_t id; - // uint32_t parent_id; + uint32_t parent_id; // State uint32_t pc; + uint32_t next_pc; AztecAddress msg_sender; AztecAddress contract_addr; bool is_static; @@ -38,7 +39,7 @@ struct ContextEvent { struct ContextStackEvent { uint32_t id; - // uint32_t parent_id; + uint32_t parent_id; // State uint32_t next_pc; 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 2f2b1ce7db65..ab3d0036a410 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/events/execution_event.hpp @@ -28,6 +28,9 @@ struct ExecutionEvent { // todo(ilyas): this is a vector because GETCONTRACTINSTANCE has 2 outputs, we should change this to 1 std::vector output; + // Context Id for the next context. + uint32_t next_context_id; + // 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 7ddb42fb0c9c..db2636f217f8 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.cpp @@ -43,19 +43,24 @@ void Execution::mov(ContextInterface& context, MemoryAddress src_addr, MemoryAdd set_outputs({ v }); } -void Execution::call(ContextInterface& context, MemoryAddress addr, MemoryAddress cd_offset, MemoryAddress cd_size) +void Execution::call(ContextInterface& context, + MemoryAddress l2_gas_offset, + MemoryAddress da_gas_offset, + MemoryAddress addr, + MemoryAddress cd_offset, + MemoryAddress cd_size) { // Emit Snapshot of current context emit_context_snapshot(context); auto& memory = context.get_memory(); - // TODO: Read more stuff from call operands (e.g., calldata, gas) // TODO(ilyas): How will we tag check these? - FF contract_address = memory.get(addr).as_ff(); + const auto& allocated_l2_gas_read = memory.get(l2_gas_offset); + const auto& allocated_da_gas_read = memory.get(da_gas_offset); + const auto& contract_address = memory.get(addr); - // We could load cd_size here, but to keep symmetry with cd_offset - we will defer the loads to a (possible) - // calldatacopy + // Cd size and cd offset loads are deferred to (possible) calldatacopy auto nested_context = execution_components.make_nested_context(contract_address, /*msg_sender=*/context.get_address(), /*parent_context=*/context, @@ -75,6 +80,9 @@ void Execution::call(ContextInterface& context, MemoryAddress addr, MemoryAddres context.set_last_rd_offset(result.rd_offset); context.set_last_rd_size(result.rd_size); context.set_last_success(result.success); + + // Set inputs and outputs for the event + set_inputs({ allocated_l2_gas_read, allocated_da_gas_read, contract_address }); } void Execution::ret(ContextInterface& context, MemoryAddress ret_offset, MemoryAddress ret_size_offset) @@ -142,6 +150,7 @@ ExecutionResult Execution::execute_internal(ContextInterface& context) // TODO: think about whether we need to know the success at this point auto context_event = context.serialize_context_event(); ex_event.context_event = context_event; + ex_event.next_context_id = execution_components.get_next_context_id(); // Execute the opcode. dispatch_opcode(opcode, context, resolved_operands); @@ -217,6 +226,7 @@ inline void Execution::call_with_operands(void (Execution::*f)(ContextInterface& void Execution::emit_context_snapshot(ContextInterface& context) { ctx_stack_events.emit({ .id = context.get_context_id(), + .parent_id = context.get_parent_id(), .next_pc = context.get_next_pc(), .msg_sender = context.get_msg_sender(), .contract_addr = context.get_address(), diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp index 278ba82b34de..3abfefc93e25 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.hpp @@ -64,7 +64,12 @@ class Execution : public ExecutionInterface { void mov(ContextInterface& context, MemoryAddress src_addr, MemoryAddress dst_addr); void jump(ContextInterface& context, uint32_t loc); void jumpi(ContextInterface& context, MemoryAddress cond_addr, uint32_t loc); - void call(ContextInterface& context, MemoryAddress addr, MemoryAddress cd_offset, MemoryAddress cd_size); + void call(ContextInterface& context, + MemoryAddress l2_gas_offset, + MemoryAddress da_gas_offset, + 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. diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp index 946a8053ef27..4180143d4ab9 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution.test.cpp @@ -58,18 +58,24 @@ TEST_F(ExecutionSimulationTest, Add) TEST_F(ExecutionSimulationTest, Call) { - AztecAddress parent_address = 1; - AztecAddress nested_address = 2; + AztecAddress parent_address = 0xdeadbeef; + AztecAddress nested_address = 0xc0ffee; MemoryValue nested_address_value = MemoryValue::from(nested_address); + MemoryValue l2_gas_allocated = MemoryValue::from(6); + MemoryValue da_gas_allocated = MemoryValue::from(7); + // Context snapshotting EXPECT_CALL(context, get_context_id); + EXPECT_CALL(context, get_parent_id); EXPECT_CALL(context, get_next_pc); EXPECT_CALL(context, get_is_static); EXPECT_CALL(context, get_msg_sender).WillOnce(ReturnRef(parent_address)); EXPECT_CALL(context, get_memory); EXPECT_CALL(context, get_address).WillRepeatedly(ReturnRef(parent_address)); - EXPECT_CALL(memory, get).WillOnce(ReturnRef(nested_address_value)); + EXPECT_CALL(memory, get(1)).WillOnce(ReturnRef(l2_gas_allocated)); // l2_gas_offset + EXPECT_CALL(memory, get(2)).WillOnce(ReturnRef(da_gas_allocated)); // da_gas_offset + EXPECT_CALL(memory, get(3)).WillOnce(ReturnRef(nested_address_value)); // contract_address auto nested_context = std::make_unique>(); ON_CALL(*nested_context, halted()) @@ -84,7 +90,12 @@ TEST_F(ExecutionSimulationTest, Call) EXPECT_CALL(context, set_last_rd_size(_)); EXPECT_CALL(context, set_last_success(_)); - execution.call(context, 10, 20, 30); + execution.call(context, + /*l2_gas_offset=*/1, + /*da_gas_offset=*/2, + /*addr=*/3, + /*cd_offset=*/5, + /*cd_size=*/4); } } // namespace diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution_components.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution_components.hpp index 3680616df949..6435b95518bc 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/execution_components.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/execution_components.hpp @@ -35,6 +35,9 @@ class ExecutionComponentsProviderInterface { bool is_static) = 0; virtual std::unique_ptr make_addressing(AddressingEvent& event) = 0; + + // This can be removed if we use clk for the context id + virtual uint32_t get_next_context_id() = 0; }; class ExecutionComponentsProvider : public ExecutionComponentsProviderInterface { @@ -60,8 +63,10 @@ class ExecutionComponentsProvider : public ExecutionComponentsProviderInterface bool is_static) override; std::unique_ptr make_addressing(AddressingEvent& event) override; + uint32_t get_next_context_id() override { return next_context_id; } + private: - uint32_t next_context_id = 0; + uint32_t next_context_id = 1; // 0 is reserved to denote the parent of a top level context TxBytecodeManagerInterface& tx_bytecode_manager; RangeCheckInterface& range_check; diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_context.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_context.hpp index d433c6be55da..a1476bbbe44b 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_context.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_context.hpp @@ -28,6 +28,7 @@ class MockContext : public ContextInterface { MOCK_METHOD(void, halt, (), (override)); MOCK_METHOD(uint32_t, get_context_id, (), (const, override)); + MOCK_METHOD(uint32_t, get_parent_id, (), (const, override)); // Environment. MOCK_METHOD(const AztecAddress&, get_address, (), (const, override)); diff --git a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_execution_components.hpp b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_execution_components.hpp index 7946b89f77fb..43cde46f466b 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_execution_components.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/simulation/testing/mock_execution_components.hpp @@ -33,6 +33,8 @@ class MockExecutionComponentsProvider : public ExecutionComponentsProviderInterf (override)); MOCK_METHOD(std::unique_ptr, make_addressing, (AddressingEvent & event), (override)); + + MOCK_METHOD(uint32_t, get_next_context_id, (), (override)); }; } // namespace bb::avm2::simulation diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.cpp index 3692a868a819..396ba1dd27d6 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.cpp @@ -17,7 +17,8 @@ void ContextStackTraceBuilder::process( for (const auto& event : ctx_stack_events) { trace.set(row, { { { C::context_stack_context_id, event.id }, - { C::context_stack_pc, event.next_pc }, + { C::context_stack_parent_id, event.parent_id }, + { C::context_stack_next_pc, event.next_pc }, { C::context_stack_msg_sender, event.msg_sender }, { C::context_stack_contract_address, event.contract_addr }, { C::context_stack_is_static, event.is_static }, diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.test.cpp index a255c4e5cf63..0e0951ad4403 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/context_stack_trace.test.cpp @@ -22,6 +22,7 @@ TEST(ContextStackTraceGenTest, TraceGenerationSnapshot) builder.process({ { .id = 1, + .parent_id = 0, .next_pc = 20, .msg_sender = 30, .contract_addr = 40, @@ -33,7 +34,8 @@ TEST(ContextStackTraceGenTest, TraceGenerationSnapshot) ElementsAre( // Only one row. AllOf(ROW_FIELD_EQ(R, context_stack_context_id, 1), - ROW_FIELD_EQ(R, context_stack_pc, 20), + ROW_FIELD_EQ(R, context_stack_parent_id, 0), + ROW_FIELD_EQ(R, context_stack_next_pc, 20), ROW_FIELD_EQ(R, context_stack_msg_sender, 30), ROW_FIELD_EQ(R, context_stack_contract_address, 40), ROW_FIELD_EQ(R, context_stack_is_static, false)))); diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp index 518a12976959..dd127846528b 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.cpp @@ -71,6 +71,8 @@ void ExecutionTraceBuilder::process( { { { C::execution_sel, 1 }, // active execution trace { C::execution_ex_opcode, static_cast(ex_event.opcode) }, + { C::execution_sel_call, ex_event.opcode == ExecutionOpCode::CALL ? 1 : 0 }, + { C::execution_sel_static_call, ex_event.opcode == ExecutionOpCode::STATICCALL ? 1 : 0 }, { C::execution_bytecode_id, ex_event.bytecode_id }, // Operands { C::execution_op1, operands.at(0) }, @@ -165,7 +167,9 @@ void ExecutionTraceBuilder::process( trace.set(row, { { { C::execution_context_id, ex_event.context_event.id }, + { C::execution_parent_id, ex_event.context_event.parent_id }, { C::execution_pc, ex_event.context_event.pc }, + { C::execution_next_pc, ex_event.context_event.next_pc }, { C::execution_is_static, ex_event.context_event.is_static }, { C::execution_msg_sender, ex_event.context_event.msg_sender }, { C::execution_contract_address, ex_event.context_event.contract_addr }, @@ -174,6 +178,7 @@ void ExecutionTraceBuilder::process( { C::execution_last_child_returndata_offset_addr, ex_event.context_event.last_child_rd_addr }, { C::execution_last_child_returndata_size_addr, ex_event.context_event.last_child_rd_size_addr }, { C::execution_last_child_success, ex_event.context_event.last_child_success }, + { C::execution_next_context_id, ex_event.next_context_id }, } }); row++; 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 518b0f867c45..5677594d6755 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/execution_trace.test.cpp @@ -72,5 +72,72 @@ TEST(ExecutionTraceGenTest, RegisterAllocation) Contains(Field(&R::execution_rw3, 1)))); } +TEST(ExecutionTraceGenTest, Call) +{ + TestTraceContainer trace; + ExecutionTraceBuilder builder; + + // Inputs + ExecInstructionSpec call_spec = { + .num_addresses = 5, + .gas_cost = { .base_l2 = AVM_CALL_BASE_L2_GAS, .base_da = 0, .dyn_l2 = AVM_CALL_DYN_L2_GAS, .dyn_da = 0 } + }; + const auto call_instr = InstructionBuilder(WireOpCode::CALL) + .operand(2) + .operand(4) + .operand(6) + .operand(10) + .operand(20) + .build(); + + simulation::AddressingEvent addressing_event{ + .instruction = call_instr, + .spec = &call_spec, + }; + + simulation::ContextEvent context_event{ + .id = 1, + .contract_addr = 0xdeadbeef, + }; + + auto ex_event = simulation::ExecutionEvent::allocate(); + ex_event.opcode = ExecutionOpCode::CALL; + ex_event.addressing_event = addressing_event; + ex_event.context_event = context_event; + ex_event.next_context_id = 2; + ex_event.inputs = { /*allocated_l2_gas_read=*/MemoryValue::from(10), + /*allocated_da_gas_read=*/MemoryValue ::from(11), + /*contract_address=*/MemoryValue::from(0xdeadbeef) }; + ex_event.resolved_operands = { MemoryValue::from(0), + MemoryValue::from(0), + MemoryValue::from(0), + MemoryValue::from(10), + MemoryValue::from(20) }; + + builder.process({ ex_event }, trace); + EXPECT_THAT(trace.as_rows(), + AllOf(Contains(Field(&R::execution_sel, 1)), + Contains(Field(&R::execution_sel_call, 1)), + Contains(Field(&R::execution_rop4, 10)), + Contains(Field(&R::execution_rop5, 20)), + Contains(Field(&R::execution_reg1, 10)), + Contains(Field(&R::execution_reg2, 11)), + Contains(Field(&R::execution_reg3, 0xdeadbeef)), + Contains(Field(&R::execution_mem_tag1, /*U32=*/4)), + Contains(Field(&R::execution_mem_tag2, /*U32=*/4)), + Contains(Field(&R::execution_mem_tag3, /*FF=*/0)), + 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, 0)), + Contains(Field(&R::execution_is_static, 0)), + Contains(Field(&R::execution_context_id, 1)), + Contains(Field(&R::execution_next_context_id, 2)) + + )); +} + } // 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 index d96a748214f9..4f9d31cad147 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/instruction_spec.cpp @@ -89,7 +89,7 @@ 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::CALL, RegisterMemInfo().has_inputs(3) }, { ExecutionOpCode::RETURN, RegisterMemInfo().has_inputs(0) }, { ExecutionOpCode::JUMP, RegisterMemInfo() }, { ExecutionOpCode::JUMPI, RegisterMemInfo().has_inputs(1) },