/* This module defines jets that simulate various Simplicity expressions.
 * Their specifications are given by the specific Simplicity expressions they are simulating.
 */
#ifndef SIMPLICITY_JETS_H
#define SIMPLICITY_JETS_H

#include "frame.h"

/* Forward declaration of the structure holding the environment in which a Simplicity expression is evaluated within. */
typedef struct txEnv txEnv;

/* A jet simulates the execution of some Simplicity expression (without witnesses or delegation) of A |- B.
 * It reads data from a read frame 'src', and writes its output to a write frame 'dst'.
 * If successful then 'true' is returned.
 * If the expression being simulated would fail an 'ASSERTL' or 'ASSERTR' combinator, then 'false' is returned.
 * Cells in front of 'dst's cursor's final position may be overwritten.
 *
 * Precondition: 'src' is a valid read frame for 'bitSize(A)' more cells;
 *               '*dst' is a valid write frame for 'bitSize(B)' more cells;
 *               if the jet simulates a Simplicity expression with primitives then 'NULL != env';
 */
typedef bool (*jet_ptr)(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_verify(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_low_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_low_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_low_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_low_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_low_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_high_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_high_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_high_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_high_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_high_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_complement_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_complement_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_complement_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_complement_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_complement_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_and_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_and_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_and_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_and_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_and_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_or_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_or_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_or_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_or_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_or_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_maj_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_maj_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_maj_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_maj_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_maj_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_xor_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_xor_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_xor_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_xor_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_xor_xor_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ch_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ch_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ch_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ch_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ch_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_some_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_some_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_some_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_some_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_some_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_all_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_all_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_all_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_all_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_one_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_one_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_one_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_one_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_eq_256(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_8_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_8_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_8_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_16_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_16_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_16_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_16_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_32_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_32_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_32_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_32_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_32_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_left_shift_64_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_8_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_8_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_8_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_16_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_16_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_16_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_16_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_32_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_32_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_32_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_32_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_32_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_right_shift_64_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_8_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_8_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_8_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_16_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_16_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_16_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_16_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_32_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_32_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_32_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_32_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_32_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_leftmost_64_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_8_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_8_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_8_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_16_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_16_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_16_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_16_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_32_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_32_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_32_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_32_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_32_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_rightmost_64_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_1_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_1_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_1_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_1_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_low_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_1_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_1_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_1_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_1_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_pad_high_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_1_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_1_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_1_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_1_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_extend_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_1_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_1_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_1_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_1_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_low_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_1_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_1_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_1_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_1_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_pad_high_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_8_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_8_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_16_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_8_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_16_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_extend_32_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_with_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_with_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_with_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_with_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_shift_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_with_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_with_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_with_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_with_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_shift_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_rotate_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_rotate_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_rotate_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_left_rotate_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_rotate_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_rotate_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_rotate_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_right_rotate_64(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_add_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_add_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_add_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_add_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_add_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_add_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_add_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_add_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_increment_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_increment_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_increment_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_increment_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_increment_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_increment_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_increment_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_increment_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_subtract_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_subtract_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_subtract_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_subtract_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_negate_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_negate_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_negate_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_negate_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_decrement_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_decrement_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_decrement_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_decrement_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_decrement_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_decrement_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_decrement_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_decrement_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_subtract_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_subtract_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_subtract_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_subtract_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_multiply_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_multiply_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_multiply_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_multiply_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_multiply_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_multiply_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_multiply_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_full_multiply_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_zero_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_zero_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_zero_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_zero_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_one_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_one_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_one_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_is_one_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_le_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_le_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_le_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_le_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_lt_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_lt_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_lt_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_lt_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_min_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_min_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_min_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_min_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_max_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_max_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_max_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_max_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_median_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_median_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_median_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_median_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_div_mod_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_div_mod_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_div_mod_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_div_mod_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divide_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divide_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divide_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divide_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_modulo_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_modulo_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_modulo_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_modulo_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divides_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divides_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divides_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_divides_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_div_mod_128_64(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_sha_256_iv(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_block(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_init(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_2(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_4(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_8(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_16(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_32(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_64(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_128(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_256(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_512(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_add_buffer_511(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_sha_256_ctx_8_finalize(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_fe_normalize(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_negate(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_add(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_square(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_multiply(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_multiply_beta(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_invert(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_square_root(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_is_zero(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_fe_is_odd(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_normalize(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_negate(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_add(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_square(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_multiply(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_multiply_lambda(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_invert(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scalar_is_zero(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_infinity(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_rescale(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_normalize(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_negate(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ge_negate(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_double(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_add(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_ge_add_ex(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_ge_add(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_is_infinity(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_equiv(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_ge_equiv(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_x_equiv(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_y_is_odd(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_gej_is_on_curve(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_ge_is_on_curve(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_off_curve_scale(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_scale(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_generate(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_off_curve_linear_combination_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_linear_combination_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_linear_verify_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_decompress(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_point_verify_1(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_swu(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_hash_to_curve(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_check_sig_verify(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_bip_0340_verify(frameItem* dst, frameItem src, const txEnv* env);

bool simplicity_parse_lock(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_parse_sequence(frameItem* dst, frameItem src, const txEnv* env);
bool simplicity_tapdata_init(frameItem* dst, frameItem src, const txEnv* env);

#endif
