diff --git a/stwo_cairo_prover/Cargo.lock b/stwo_cairo_prover/Cargo.lock index 95387fc3..6ffe5b82 100644 --- a/stwo_cairo_prover/Cargo.lock +++ b/stwo_cairo_prover/Cargo.lock @@ -35,6 +35,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "air_structs_derive" +version = "0.1.0" +dependencies = [ + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -863,6 +873,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -1724,6 +1743,7 @@ dependencies = [ name = "stwo_cairo_prover" version = "0.1.0" dependencies = [ + "air_structs_derive", "bytemuck", "cairo-lang-casm", "cairo-vm", diff --git a/stwo_cairo_prover/Cargo.toml b/stwo_cairo_prover/Cargo.toml index b730a391..8cdd3691 100644 --- a/stwo_cairo_prover/Cargo.toml +++ b/stwo_cairo_prover/Cargo.toml @@ -7,6 +7,7 @@ members = [ "crates/utils", "crates/vm_runner", "crates/prover_types", + "crates/air_structs_derive", ] resolver = "2" diff --git a/stwo_cairo_prover/crates/air_structs_derive/Cargo.toml b/stwo_cairo_prover/crates/air_structs_derive/Cargo.toml new file mode 100644 index 00000000..2e403284 --- /dev/null +++ b/stwo_cairo_prover/crates/air_structs_derive/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "air_structs_derive" +version = "0.1.0" +edition = "2021" + +[lib] +proc-macro = true + +[dependencies] +syn = "2.0.90" +quote = "1.0.37" +proc-macro2 = "1.0.92" +itertools = "0.13.0" diff --git a/stwo_cairo_prover/crates/air_structs_derive/src/lib.rs b/stwo_cairo_prover/crates/air_structs_derive/src/lib.rs new file mode 100644 index 00000000..94f1e092 --- /dev/null +++ b/stwo_cairo_prover/crates/air_structs_derive/src/lib.rs @@ -0,0 +1,146 @@ +use itertools::Itertools; +use proc_macro2::TokenStream; +use quote::quote; +use syn::{parse_macro_input, Data, DeriveInput, Fields, Path, Type}; + +#[proc_macro_derive(SubComponentInputs)] +pub fn derive_sub_component_inputs(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + let input = parse_macro_input!(input as DeriveInput); + assert_is_struct(&input); + let name = &input.ident; + let vec_array_fields = extract_vec_array_fields(&input); + + // TODO(Ohad): deprecate with_capacity. + let with_capacity_method = generate_with_capacity_method(&vec_array_fields); + let uninitialized_method = generate_uninitialized_method(&vec_array_fields); + let bit_reverse_method = generate_bit_reverse_method(&vec_array_fields); + + let expanded = quote! { + impl #name { + #with_capacity_method + #uninitialized_method + #bit_reverse_method + } + }; + + proc_macro::TokenStream::from(expanded) +} + +#[derive(Clone)] +struct VecArrayField { + name: syn::Ident, + array_length: usize, +} + +fn assert_is_struct(input: &DeriveInput) { + if !matches!(input.data, Data::Struct(_)) { + panic!("Derive(SubComponentInputs) can only be applied to structs."); + } +} + +fn extract_vec_array_fields(input: &DeriveInput) -> Vec { + let mut vec_array_fields = Vec::new(); + + if let Data::Struct(data_struct) = &input.data { + if let Fields::Named(fields) = &data_struct.fields { + for field in &fields.named { + // Field is an array of Vecs. + if let Type::Array(type_array) = &field.ty { + if let Type::Path(element_type) = &*type_array.elem { + // Element is a Vec. + if is_vec_type(&element_type.path) { + // Get the array length + if let syn::Expr::Lit(syn::ExprLit { + lit: syn::Lit::Int(length_lit), + .. + }) = type_array.len.clone() + { + vec_array_fields.push(VecArrayField { + name: field.ident.clone().unwrap(), + array_length: length_lit.base10_parse().unwrap(), + }); + } + } + } + } + } + } + } + + vec_array_fields +} + +fn is_vec_type(path: &Path) -> bool { + path.segments.len() == 1 && path.segments.first().unwrap().ident == "Vec" +} + +fn generate_with_capacity_method(vec_array_fields: &[VecArrayField]) -> TokenStream { + let field_initializations = vec_array_fields + .iter() + .map(|field| { + let field_name = &field.name; + let array_length = field.array_length; + + quote! { + #field_name: [(); #array_length].map(|_| Vec::with_capacity(capacity)) + } + }) + .collect_vec(); + + quote! { + fn with_capacity(capacity: usize) -> Self { + Self { + #(#field_initializations),* + } + } + } +} + +fn generate_uninitialized_method(vec_array_fields: &[VecArrayField]) -> TokenStream { + let field_initializations = vec_array_fields + .iter() + .map(|field| { + let field_name = &field.name; + let array_length = field.array_length; + + quote! { + #field_name: [(); #array_length].map(|_|{ + let mut v = Vec::with_capacity(capacity); + v.set_len(capacity); + v + }) + } + }) + .collect_vec(); + + quote! { + unsafe fn uninitialized(capacity: usize) -> Self { + let mut result = Self { + #(#field_initializations),* + }; + + result + } + } +} + +fn generate_bit_reverse_method(vec_array_fields: &[VecArrayField]) -> TokenStream { + let field_updates = vec_array_fields + .iter() + .map(|field| { + let field_name = &field.name; + + quote! { + self.#field_name + .iter_mut() + .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); + } + }) + .collect_vec(); + + quote! { + fn bit_reverse_coset_to_circle_domain_order(&mut self) { + #(#field_updates)* + } + } +} diff --git a/stwo_cairo_prover/crates/prover/Cargo.toml b/stwo_cairo_prover/crates/prover/Cargo.toml index 343aead4..5f5b9e00 100644 --- a/stwo_cairo_prover/crates/prover/Cargo.toml +++ b/stwo_cairo_prover/crates/prover/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" parallel = ["rayon"] [dependencies] +air_structs_derive = { path = "../air_structs_derive" } bytemuck.workspace = true cairo-lang-casm.workspace = true cairo-vm.workspace = true diff --git a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_f/prover.rs index ca83850d..b714e4b8 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_t/prover.rs index 0aae4b30..e3f1091a 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_f_op1_base_fp_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_t_op1_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_t_op1_base_fp_f/prover.rs index 9db83a9c..07fe7688 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_t_op1_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_ap_opcode_is_imm_t_op1_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/component.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/component.rs index 88768b24..c7eff8fd 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/component.rs @@ -366,245 +366,298 @@ impl FrameworkEval for Eval { // sub_p_bit is a bit. eval.add_constraint((sub_p_bit_col98.clone() * (sub_p_bit_col98.clone() - M31_1.clone()))); - let carry_tmp_f459_18 = (((((op0_limb_0_col41.clone() + op1_limb_0_col70.clone()) - + M31_0.clone()) - - dst_limb_0_col12.clone()) - - (M31_1.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_18 = eval.add_intermediate( + (((((op0_limb_0_col41.clone() + op1_limb_0_col70.clone()) + M31_0.clone()) + - dst_limb_0_col12.clone()) + - (M31_1.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_18.clone() * ((carry_tmp_f459_18.clone() * carry_tmp_f459_18.clone()) - M31_1.clone())), ); - let carry_tmp_f459_19 = (((((op0_limb_1_col42.clone() + op1_limb_1_col71.clone()) - + carry_tmp_f459_18.clone()) - - dst_limb_1_col13.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_19 = eval.add_intermediate( + (((((op0_limb_1_col42.clone() + op1_limb_1_col71.clone()) + + carry_tmp_f459_18.clone()) + - dst_limb_1_col13.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_19.clone() * ((carry_tmp_f459_19.clone() * carry_tmp_f459_19.clone()) - M31_1.clone())), ); - let carry_tmp_f459_20 = (((((op0_limb_2_col43.clone() + op1_limb_2_col72.clone()) - + carry_tmp_f459_19.clone()) - - dst_limb_2_col14.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_20 = eval.add_intermediate( + (((((op0_limb_2_col43.clone() + op1_limb_2_col72.clone()) + + carry_tmp_f459_19.clone()) + - dst_limb_2_col14.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_20.clone() * ((carry_tmp_f459_20.clone() * carry_tmp_f459_20.clone()) - M31_1.clone())), ); - let carry_tmp_f459_21 = (((((op0_limb_3_col44.clone() + op1_limb_3_col73.clone()) - + carry_tmp_f459_20.clone()) - - dst_limb_3_col15.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_21 = eval.add_intermediate( + (((((op0_limb_3_col44.clone() + op1_limb_3_col73.clone()) + + carry_tmp_f459_20.clone()) + - dst_limb_3_col15.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_21.clone() * ((carry_tmp_f459_21.clone() * carry_tmp_f459_21.clone()) - M31_1.clone())), ); - let carry_tmp_f459_22 = (((((op0_limb_4_col45.clone() + op1_limb_4_col74.clone()) - + carry_tmp_f459_21.clone()) - - dst_limb_4_col16.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_22 = eval.add_intermediate( + (((((op0_limb_4_col45.clone() + op1_limb_4_col74.clone()) + + carry_tmp_f459_21.clone()) + - dst_limb_4_col16.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_22.clone() * ((carry_tmp_f459_22.clone() * carry_tmp_f459_22.clone()) - M31_1.clone())), ); - let carry_tmp_f459_23 = (((((op0_limb_5_col46.clone() + op1_limb_5_col75.clone()) - + carry_tmp_f459_22.clone()) - - dst_limb_5_col17.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_23 = eval.add_intermediate( + (((((op0_limb_5_col46.clone() + op1_limb_5_col75.clone()) + + carry_tmp_f459_22.clone()) + - dst_limb_5_col17.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_23.clone() * ((carry_tmp_f459_23.clone() * carry_tmp_f459_23.clone()) - M31_1.clone())), ); - let carry_tmp_f459_24 = (((((op0_limb_6_col47.clone() + op1_limb_6_col76.clone()) - + carry_tmp_f459_23.clone()) - - dst_limb_6_col18.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_24 = eval.add_intermediate( + (((((op0_limb_6_col47.clone() + op1_limb_6_col76.clone()) + + carry_tmp_f459_23.clone()) + - dst_limb_6_col18.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_24.clone() * ((carry_tmp_f459_24.clone() * carry_tmp_f459_24.clone()) - M31_1.clone())), ); - let carry_tmp_f459_25 = (((((op0_limb_7_col48.clone() + op1_limb_7_col77.clone()) - + carry_tmp_f459_24.clone()) - - dst_limb_7_col19.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_25 = eval.add_intermediate( + (((((op0_limb_7_col48.clone() + op1_limb_7_col77.clone()) + + carry_tmp_f459_24.clone()) + - dst_limb_7_col19.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_25.clone() * ((carry_tmp_f459_25.clone() * carry_tmp_f459_25.clone()) - M31_1.clone())), ); - let carry_tmp_f459_26 = (((((op0_limb_8_col49.clone() + op1_limb_8_col78.clone()) - + carry_tmp_f459_25.clone()) - - dst_limb_8_col20.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_26 = eval.add_intermediate( + (((((op0_limb_8_col49.clone() + op1_limb_8_col78.clone()) + + carry_tmp_f459_25.clone()) + - dst_limb_8_col20.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_26.clone() * ((carry_tmp_f459_26.clone() * carry_tmp_f459_26.clone()) - M31_1.clone())), ); - let carry_tmp_f459_27 = (((((op0_limb_9_col50.clone() + op1_limb_9_col79.clone()) - + carry_tmp_f459_26.clone()) - - dst_limb_9_col21.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_27 = eval.add_intermediate( + (((((op0_limb_9_col50.clone() + op1_limb_9_col79.clone()) + + carry_tmp_f459_26.clone()) + - dst_limb_9_col21.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_27.clone() * ((carry_tmp_f459_27.clone() * carry_tmp_f459_27.clone()) - M31_1.clone())), ); - let carry_tmp_f459_28 = (((((op0_limb_10_col51.clone() + op1_limb_10_col80.clone()) - + carry_tmp_f459_27.clone()) - - dst_limb_10_col22.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_28 = eval.add_intermediate( + (((((op0_limb_10_col51.clone() + op1_limb_10_col80.clone()) + + carry_tmp_f459_27.clone()) + - dst_limb_10_col22.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_28.clone() * ((carry_tmp_f459_28.clone() * carry_tmp_f459_28.clone()) - M31_1.clone())), ); - let carry_tmp_f459_29 = (((((op0_limb_11_col52.clone() + op1_limb_11_col81.clone()) - + carry_tmp_f459_28.clone()) - - dst_limb_11_col23.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_29 = eval.add_intermediate( + (((((op0_limb_11_col52.clone() + op1_limb_11_col81.clone()) + + carry_tmp_f459_28.clone()) + - dst_limb_11_col23.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_29.clone() * ((carry_tmp_f459_29.clone() * carry_tmp_f459_29.clone()) - M31_1.clone())), ); - let carry_tmp_f459_30 = (((((op0_limb_12_col53.clone() + op1_limb_12_col82.clone()) - + carry_tmp_f459_29.clone()) - - dst_limb_12_col24.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_30 = eval.add_intermediate( + (((((op0_limb_12_col53.clone() + op1_limb_12_col82.clone()) + + carry_tmp_f459_29.clone()) + - dst_limb_12_col24.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_30.clone() * ((carry_tmp_f459_30.clone() * carry_tmp_f459_30.clone()) - M31_1.clone())), ); - let carry_tmp_f459_31 = (((((op0_limb_13_col54.clone() + op1_limb_13_col83.clone()) - + carry_tmp_f459_30.clone()) - - dst_limb_13_col25.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_31 = eval.add_intermediate( + (((((op0_limb_13_col54.clone() + op1_limb_13_col83.clone()) + + carry_tmp_f459_30.clone()) + - dst_limb_13_col25.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_31.clone() * ((carry_tmp_f459_31.clone() * carry_tmp_f459_31.clone()) - M31_1.clone())), ); - let carry_tmp_f459_32 = (((((op0_limb_14_col55.clone() + op1_limb_14_col84.clone()) - + carry_tmp_f459_31.clone()) - - dst_limb_14_col26.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_32 = eval.add_intermediate( + (((((op0_limb_14_col55.clone() + op1_limb_14_col84.clone()) + + carry_tmp_f459_31.clone()) + - dst_limb_14_col26.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_32.clone() * ((carry_tmp_f459_32.clone() * carry_tmp_f459_32.clone()) - M31_1.clone())), ); - let carry_tmp_f459_33 = (((((op0_limb_15_col56.clone() + op1_limb_15_col85.clone()) - + carry_tmp_f459_32.clone()) - - dst_limb_15_col27.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_33 = eval.add_intermediate( + (((((op0_limb_15_col56.clone() + op1_limb_15_col85.clone()) + + carry_tmp_f459_32.clone()) + - dst_limb_15_col27.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_33.clone() * ((carry_tmp_f459_33.clone() * carry_tmp_f459_33.clone()) - M31_1.clone())), ); - let carry_tmp_f459_34 = (((((op0_limb_16_col57.clone() + op1_limb_16_col86.clone()) - + carry_tmp_f459_33.clone()) - - dst_limb_16_col28.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_34 = eval.add_intermediate( + (((((op0_limb_16_col57.clone() + op1_limb_16_col86.clone()) + + carry_tmp_f459_33.clone()) + - dst_limb_16_col28.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_34.clone() * ((carry_tmp_f459_34.clone() * carry_tmp_f459_34.clone()) - M31_1.clone())), ); - let carry_tmp_f459_35 = (((((op0_limb_17_col58.clone() + op1_limb_17_col87.clone()) - + carry_tmp_f459_34.clone()) - - dst_limb_17_col29.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_35 = eval.add_intermediate( + (((((op0_limb_17_col58.clone() + op1_limb_17_col87.clone()) + + carry_tmp_f459_34.clone()) + - dst_limb_17_col29.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_35.clone() * ((carry_tmp_f459_35.clone() * carry_tmp_f459_35.clone()) - M31_1.clone())), ); - let carry_tmp_f459_36 = (((((op0_limb_18_col59.clone() + op1_limb_18_col88.clone()) - + carry_tmp_f459_35.clone()) - - dst_limb_18_col30.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_36 = eval.add_intermediate( + (((((op0_limb_18_col59.clone() + op1_limb_18_col88.clone()) + + carry_tmp_f459_35.clone()) + - dst_limb_18_col30.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_36.clone() * ((carry_tmp_f459_36.clone() * carry_tmp_f459_36.clone()) - M31_1.clone())), ); - let carry_tmp_f459_37 = (((((op0_limb_19_col60.clone() + op1_limb_19_col89.clone()) - + carry_tmp_f459_36.clone()) - - dst_limb_19_col31.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_37 = eval.add_intermediate( + (((((op0_limb_19_col60.clone() + op1_limb_19_col89.clone()) + + carry_tmp_f459_36.clone()) + - dst_limb_19_col31.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_37.clone() * ((carry_tmp_f459_37.clone() * carry_tmp_f459_37.clone()) - M31_1.clone())), ); - let carry_tmp_f459_38 = (((((op0_limb_20_col61.clone() + op1_limb_20_col90.clone()) - + carry_tmp_f459_37.clone()) - - dst_limb_20_col32.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_38 = eval.add_intermediate( + (((((op0_limb_20_col61.clone() + op1_limb_20_col90.clone()) + + carry_tmp_f459_37.clone()) + - dst_limb_20_col32.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_38.clone() * ((carry_tmp_f459_38.clone() * carry_tmp_f459_38.clone()) - M31_1.clone())), ); - let carry_tmp_f459_39 = (((((op0_limb_21_col62.clone() + op1_limb_21_col91.clone()) - + carry_tmp_f459_38.clone()) - - dst_limb_21_col33.clone()) - - (M31_136.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_39 = eval.add_intermediate( + (((((op0_limb_21_col62.clone() + op1_limb_21_col91.clone()) + + carry_tmp_f459_38.clone()) + - dst_limb_21_col33.clone()) + - (M31_136.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_39.clone() * ((carry_tmp_f459_39.clone() * carry_tmp_f459_39.clone()) - M31_1.clone())), ); - let carry_tmp_f459_40 = (((((op0_limb_22_col63.clone() + op1_limb_22_col92.clone()) - + carry_tmp_f459_39.clone()) - - dst_limb_22_col34.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_40 = eval.add_intermediate( + (((((op0_limb_22_col63.clone() + op1_limb_22_col92.clone()) + + carry_tmp_f459_39.clone()) + - dst_limb_22_col34.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_40.clone() * ((carry_tmp_f459_40.clone() * carry_tmp_f459_40.clone()) - M31_1.clone())), ); - let carry_tmp_f459_41 = (((((op0_limb_23_col64.clone() + op1_limb_23_col93.clone()) - + carry_tmp_f459_40.clone()) - - dst_limb_23_col35.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_41 = eval.add_intermediate( + (((((op0_limb_23_col64.clone() + op1_limb_23_col93.clone()) + + carry_tmp_f459_40.clone()) + - dst_limb_23_col35.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_41.clone() * ((carry_tmp_f459_41.clone() * carry_tmp_f459_41.clone()) - M31_1.clone())), ); - let carry_tmp_f459_42 = (((((op0_limb_24_col65.clone() + op1_limb_24_col94.clone()) - + carry_tmp_f459_41.clone()) - - dst_limb_24_col36.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_42 = eval.add_intermediate( + (((((op0_limb_24_col65.clone() + op1_limb_24_col94.clone()) + + carry_tmp_f459_41.clone()) + - dst_limb_24_col36.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_42.clone() * ((carry_tmp_f459_42.clone() * carry_tmp_f459_42.clone()) - M31_1.clone())), ); - let carry_tmp_f459_43 = (((((op0_limb_25_col66.clone() + op1_limb_25_col95.clone()) - + carry_tmp_f459_42.clone()) - - dst_limb_25_col37.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_43 = eval.add_intermediate( + (((((op0_limb_25_col66.clone() + op1_limb_25_col95.clone()) + + carry_tmp_f459_42.clone()) + - dst_limb_25_col37.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_43.clone() * ((carry_tmp_f459_43.clone() * carry_tmp_f459_43.clone()) - M31_1.clone())), ); - let carry_tmp_f459_44 = (((((op0_limb_26_col67.clone() + op1_limb_26_col96.clone()) - + carry_tmp_f459_43.clone()) - - dst_limb_26_col38.clone()) - - (M31_0.clone() * sub_p_bit_col98.clone())) - * M31_4194304.clone()); + let carry_tmp_f459_44 = eval.add_intermediate( + (((((op0_limb_26_col67.clone() + op1_limb_26_col96.clone()) + + carry_tmp_f459_43.clone()) + - dst_limb_26_col38.clone()) + - (M31_0.clone() * sub_p_bit_col98.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f459_44.clone() * ((carry_tmp_f459_44.clone() * carry_tmp_f459_44.clone()) - M31_1.clone())), diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/prover.rs index e8159ad4..67ea0f28 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/component.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/component.rs index da741d38..216a1448 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/component.rs @@ -358,245 +358,298 @@ impl FrameworkEval for Eval { // sub_p_bit is a bit. eval.add_constraint((sub_p_bit_col95.clone() * (sub_p_bit_col95.clone() - M31_1.clone()))); - let carry_tmp_f0ae_15 = (((((op0_limb_0_col38.clone() + op1_limb_0_col67.clone()) - + M31_0.clone()) - - dst_limb_0_col9.clone()) - - (M31_1.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_15 = eval.add_intermediate( + (((((op0_limb_0_col38.clone() + op1_limb_0_col67.clone()) + M31_0.clone()) + - dst_limb_0_col9.clone()) + - (M31_1.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_15.clone() * ((carry_tmp_f0ae_15.clone() * carry_tmp_f0ae_15.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_16 = (((((op0_limb_1_col39.clone() + op1_limb_1_col68.clone()) - + carry_tmp_f0ae_15.clone()) - - dst_limb_1_col10.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_16 = eval.add_intermediate( + (((((op0_limb_1_col39.clone() + op1_limb_1_col68.clone()) + + carry_tmp_f0ae_15.clone()) + - dst_limb_1_col10.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_16.clone() * ((carry_tmp_f0ae_16.clone() * carry_tmp_f0ae_16.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_17 = (((((op0_limb_2_col40.clone() + op1_limb_2_col69.clone()) - + carry_tmp_f0ae_16.clone()) - - dst_limb_2_col11.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_17 = eval.add_intermediate( + (((((op0_limb_2_col40.clone() + op1_limb_2_col69.clone()) + + carry_tmp_f0ae_16.clone()) + - dst_limb_2_col11.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_17.clone() * ((carry_tmp_f0ae_17.clone() * carry_tmp_f0ae_17.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_18 = (((((op0_limb_3_col41.clone() + op1_limb_3_col70.clone()) - + carry_tmp_f0ae_17.clone()) - - dst_limb_3_col12.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_18 = eval.add_intermediate( + (((((op0_limb_3_col41.clone() + op1_limb_3_col70.clone()) + + carry_tmp_f0ae_17.clone()) + - dst_limb_3_col12.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_18.clone() * ((carry_tmp_f0ae_18.clone() * carry_tmp_f0ae_18.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_19 = (((((op0_limb_4_col42.clone() + op1_limb_4_col71.clone()) - + carry_tmp_f0ae_18.clone()) - - dst_limb_4_col13.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_19 = eval.add_intermediate( + (((((op0_limb_4_col42.clone() + op1_limb_4_col71.clone()) + + carry_tmp_f0ae_18.clone()) + - dst_limb_4_col13.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_19.clone() * ((carry_tmp_f0ae_19.clone() * carry_tmp_f0ae_19.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_20 = (((((op0_limb_5_col43.clone() + op1_limb_5_col72.clone()) - + carry_tmp_f0ae_19.clone()) - - dst_limb_5_col14.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_20 = eval.add_intermediate( + (((((op0_limb_5_col43.clone() + op1_limb_5_col72.clone()) + + carry_tmp_f0ae_19.clone()) + - dst_limb_5_col14.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_20.clone() * ((carry_tmp_f0ae_20.clone() * carry_tmp_f0ae_20.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_21 = (((((op0_limb_6_col44.clone() + op1_limb_6_col73.clone()) - + carry_tmp_f0ae_20.clone()) - - dst_limb_6_col15.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_21 = eval.add_intermediate( + (((((op0_limb_6_col44.clone() + op1_limb_6_col73.clone()) + + carry_tmp_f0ae_20.clone()) + - dst_limb_6_col15.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_21.clone() * ((carry_tmp_f0ae_21.clone() * carry_tmp_f0ae_21.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_22 = (((((op0_limb_7_col45.clone() + op1_limb_7_col74.clone()) - + carry_tmp_f0ae_21.clone()) - - dst_limb_7_col16.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_22 = eval.add_intermediate( + (((((op0_limb_7_col45.clone() + op1_limb_7_col74.clone()) + + carry_tmp_f0ae_21.clone()) + - dst_limb_7_col16.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_22.clone() * ((carry_tmp_f0ae_22.clone() * carry_tmp_f0ae_22.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_23 = (((((op0_limb_8_col46.clone() + op1_limb_8_col75.clone()) - + carry_tmp_f0ae_22.clone()) - - dst_limb_8_col17.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_23 = eval.add_intermediate( + (((((op0_limb_8_col46.clone() + op1_limb_8_col75.clone()) + + carry_tmp_f0ae_22.clone()) + - dst_limb_8_col17.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_23.clone() * ((carry_tmp_f0ae_23.clone() * carry_tmp_f0ae_23.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_24 = (((((op0_limb_9_col47.clone() + op1_limb_9_col76.clone()) - + carry_tmp_f0ae_23.clone()) - - dst_limb_9_col18.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_24 = eval.add_intermediate( + (((((op0_limb_9_col47.clone() + op1_limb_9_col76.clone()) + + carry_tmp_f0ae_23.clone()) + - dst_limb_9_col18.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_24.clone() * ((carry_tmp_f0ae_24.clone() * carry_tmp_f0ae_24.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_25 = (((((op0_limb_10_col48.clone() + op1_limb_10_col77.clone()) - + carry_tmp_f0ae_24.clone()) - - dst_limb_10_col19.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_25 = eval.add_intermediate( + (((((op0_limb_10_col48.clone() + op1_limb_10_col77.clone()) + + carry_tmp_f0ae_24.clone()) + - dst_limb_10_col19.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_25.clone() * ((carry_tmp_f0ae_25.clone() * carry_tmp_f0ae_25.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_26 = (((((op0_limb_11_col49.clone() + op1_limb_11_col78.clone()) - + carry_tmp_f0ae_25.clone()) - - dst_limb_11_col20.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_26 = eval.add_intermediate( + (((((op0_limb_11_col49.clone() + op1_limb_11_col78.clone()) + + carry_tmp_f0ae_25.clone()) + - dst_limb_11_col20.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_26.clone() * ((carry_tmp_f0ae_26.clone() * carry_tmp_f0ae_26.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_27 = (((((op0_limb_12_col50.clone() + op1_limb_12_col79.clone()) - + carry_tmp_f0ae_26.clone()) - - dst_limb_12_col21.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_27 = eval.add_intermediate( + (((((op0_limb_12_col50.clone() + op1_limb_12_col79.clone()) + + carry_tmp_f0ae_26.clone()) + - dst_limb_12_col21.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_27.clone() * ((carry_tmp_f0ae_27.clone() * carry_tmp_f0ae_27.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_28 = (((((op0_limb_13_col51.clone() + op1_limb_13_col80.clone()) - + carry_tmp_f0ae_27.clone()) - - dst_limb_13_col22.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_28 = eval.add_intermediate( + (((((op0_limb_13_col51.clone() + op1_limb_13_col80.clone()) + + carry_tmp_f0ae_27.clone()) + - dst_limb_13_col22.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_28.clone() * ((carry_tmp_f0ae_28.clone() * carry_tmp_f0ae_28.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_29 = (((((op0_limb_14_col52.clone() + op1_limb_14_col81.clone()) - + carry_tmp_f0ae_28.clone()) - - dst_limb_14_col23.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_29 = eval.add_intermediate( + (((((op0_limb_14_col52.clone() + op1_limb_14_col81.clone()) + + carry_tmp_f0ae_28.clone()) + - dst_limb_14_col23.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_29.clone() * ((carry_tmp_f0ae_29.clone() * carry_tmp_f0ae_29.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_30 = (((((op0_limb_15_col53.clone() + op1_limb_15_col82.clone()) - + carry_tmp_f0ae_29.clone()) - - dst_limb_15_col24.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_30 = eval.add_intermediate( + (((((op0_limb_15_col53.clone() + op1_limb_15_col82.clone()) + + carry_tmp_f0ae_29.clone()) + - dst_limb_15_col24.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_30.clone() * ((carry_tmp_f0ae_30.clone() * carry_tmp_f0ae_30.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_31 = (((((op0_limb_16_col54.clone() + op1_limb_16_col83.clone()) - + carry_tmp_f0ae_30.clone()) - - dst_limb_16_col25.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_31 = eval.add_intermediate( + (((((op0_limb_16_col54.clone() + op1_limb_16_col83.clone()) + + carry_tmp_f0ae_30.clone()) + - dst_limb_16_col25.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_31.clone() * ((carry_tmp_f0ae_31.clone() * carry_tmp_f0ae_31.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_32 = (((((op0_limb_17_col55.clone() + op1_limb_17_col84.clone()) - + carry_tmp_f0ae_31.clone()) - - dst_limb_17_col26.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_32 = eval.add_intermediate( + (((((op0_limb_17_col55.clone() + op1_limb_17_col84.clone()) + + carry_tmp_f0ae_31.clone()) + - dst_limb_17_col26.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_32.clone() * ((carry_tmp_f0ae_32.clone() * carry_tmp_f0ae_32.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_33 = (((((op0_limb_18_col56.clone() + op1_limb_18_col85.clone()) - + carry_tmp_f0ae_32.clone()) - - dst_limb_18_col27.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_33 = eval.add_intermediate( + (((((op0_limb_18_col56.clone() + op1_limb_18_col85.clone()) + + carry_tmp_f0ae_32.clone()) + - dst_limb_18_col27.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_33.clone() * ((carry_tmp_f0ae_33.clone() * carry_tmp_f0ae_33.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_34 = (((((op0_limb_19_col57.clone() + op1_limb_19_col86.clone()) - + carry_tmp_f0ae_33.clone()) - - dst_limb_19_col28.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_34 = eval.add_intermediate( + (((((op0_limb_19_col57.clone() + op1_limb_19_col86.clone()) + + carry_tmp_f0ae_33.clone()) + - dst_limb_19_col28.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_34.clone() * ((carry_tmp_f0ae_34.clone() * carry_tmp_f0ae_34.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_35 = (((((op0_limb_20_col58.clone() + op1_limb_20_col87.clone()) - + carry_tmp_f0ae_34.clone()) - - dst_limb_20_col29.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_35 = eval.add_intermediate( + (((((op0_limb_20_col58.clone() + op1_limb_20_col87.clone()) + + carry_tmp_f0ae_34.clone()) + - dst_limb_20_col29.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_35.clone() * ((carry_tmp_f0ae_35.clone() * carry_tmp_f0ae_35.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_36 = (((((op0_limb_21_col59.clone() + op1_limb_21_col88.clone()) - + carry_tmp_f0ae_35.clone()) - - dst_limb_21_col30.clone()) - - (M31_136.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_36 = eval.add_intermediate( + (((((op0_limb_21_col59.clone() + op1_limb_21_col88.clone()) + + carry_tmp_f0ae_35.clone()) + - dst_limb_21_col30.clone()) + - (M31_136.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_36.clone() * ((carry_tmp_f0ae_36.clone() * carry_tmp_f0ae_36.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_37 = (((((op0_limb_22_col60.clone() + op1_limb_22_col89.clone()) - + carry_tmp_f0ae_36.clone()) - - dst_limb_22_col31.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_37 = eval.add_intermediate( + (((((op0_limb_22_col60.clone() + op1_limb_22_col89.clone()) + + carry_tmp_f0ae_36.clone()) + - dst_limb_22_col31.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_37.clone() * ((carry_tmp_f0ae_37.clone() * carry_tmp_f0ae_37.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_38 = (((((op0_limb_23_col61.clone() + op1_limb_23_col90.clone()) - + carry_tmp_f0ae_37.clone()) - - dst_limb_23_col32.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_38 = eval.add_intermediate( + (((((op0_limb_23_col61.clone() + op1_limb_23_col90.clone()) + + carry_tmp_f0ae_37.clone()) + - dst_limb_23_col32.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_38.clone() * ((carry_tmp_f0ae_38.clone() * carry_tmp_f0ae_38.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_39 = (((((op0_limb_24_col62.clone() + op1_limb_24_col91.clone()) - + carry_tmp_f0ae_38.clone()) - - dst_limb_24_col33.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_39 = eval.add_intermediate( + (((((op0_limb_24_col62.clone() + op1_limb_24_col91.clone()) + + carry_tmp_f0ae_38.clone()) + - dst_limb_24_col33.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_39.clone() * ((carry_tmp_f0ae_39.clone() * carry_tmp_f0ae_39.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_40 = (((((op0_limb_25_col63.clone() + op1_limb_25_col92.clone()) - + carry_tmp_f0ae_39.clone()) - - dst_limb_25_col34.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_40 = eval.add_intermediate( + (((((op0_limb_25_col63.clone() + op1_limb_25_col92.clone()) + + carry_tmp_f0ae_39.clone()) + - dst_limb_25_col34.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_40.clone() * ((carry_tmp_f0ae_40.clone() * carry_tmp_f0ae_40.clone()) - M31_1.clone())), ); - let carry_tmp_f0ae_41 = (((((op0_limb_26_col64.clone() + op1_limb_26_col93.clone()) - + carry_tmp_f0ae_40.clone()) - - dst_limb_26_col35.clone()) - - (M31_0.clone() * sub_p_bit_col95.clone())) - * M31_4194304.clone()); + let carry_tmp_f0ae_41 = eval.add_intermediate( + (((((op0_limb_26_col64.clone() + op1_limb_26_col93.clone()) + + carry_tmp_f0ae_40.clone()) + - dst_limb_26_col35.clone()) + - (M31_0.clone() * sub_p_bit_col95.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_f0ae_41.clone() * ((carry_tmp_f0ae_41.clone() * carry_tmp_f0ae_41.clone()) - M31_1.clone())), diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/prover.rs index b2958b5b..50d6c46b 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_f_is_imm_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_f/prover.rs index b2d92182..3ca30b9e 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_t/prover.rs index 6accdd43..6f7ab016 100644 --- a/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/add_opcode_is_small_t_is_imm_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_f/prover.rs index e338d03d..0a36e02a 100644 --- a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -109,31 +110,11 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_t/prover.rs index 45d50b11..3685c2cd 100644 --- a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_f_is_imm_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -109,31 +110,11 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_t_is_imm_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_t_is_imm_f/prover.rs index 0ad7c47d..8f9b5763 100644 --- a/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_t_is_imm_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/assert_eq_opcode_is_double_deref_t_is_imm_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,37 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_f/prover.rs index aa24652d..3686e203 100644 --- a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_t/prover.rs index a5f72151..a94d10f0 100644 --- a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_f_op1_base_fp_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_t_op1_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_t_op1_base_fp_f/prover.rs index d1ec5fb4..8baf1fa0 100644 --- a/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_t_op1_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/call_opcode_is_rel_t_op1_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,41 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/generic_opcode/component.rs b/stwo_cairo_prover/crates/prover/src/components/generic_opcode/component.rs index e79dfac0..0aa5d6dd 100644 --- a/stwo_cairo_prover/crates/prover/src/components/generic_opcode/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/generic_opcode/component.rs @@ -354,38 +354,43 @@ impl FrameworkEval for Eval { ], )); - let op1_base_op0_tmp_5745_21 = (((M31_1.clone() - op1_imm_col8.clone()) - - op1_base_fp_col9.clone()) - - op1_base_ap_col10.clone()); + let op1_base_op0_tmp_5745_21 = eval.add_intermediate( + (((M31_1.clone() - op1_imm_col8.clone()) - op1_base_fp_col9.clone()) + - op1_base_ap_col10.clone()), + ); // op1_src is 0, 1, 2, or 4. eval.add_constraint( (op1_base_op0_tmp_5745_21.clone() * (M31_1.clone() - op1_base_op0_tmp_5745_21.clone())), ); - let res_op1_tmp_5745_22 = (((M31_1.clone() - res_add_col11.clone()) - - res_mul_col12.clone()) - - pc_update_jnz_col15.clone()); + let res_op1_tmp_5745_22 = eval.add_intermediate( + (((M31_1.clone() - res_add_col11.clone()) - res_mul_col12.clone()) + - pc_update_jnz_col15.clone()), + ); // res_logic is 0, 1, or 2. eval.add_constraint( (res_op1_tmp_5745_22.clone() * (M31_1.clone() - res_op1_tmp_5745_22.clone())), ); - let pc_update_regular_tmp_5745_23 = (((M31_1.clone() - pc_update_jump_col13.clone()) - - pc_update_jump_rel_col14.clone()) - - pc_update_jnz_col15.clone()); + let pc_update_regular_tmp_5745_23 = eval.add_intermediate( + (((M31_1.clone() - pc_update_jump_col13.clone()) - pc_update_jump_rel_col14.clone()) + - pc_update_jnz_col15.clone()), + ); // pc_update is 0, 1, 2, or 4. eval.add_constraint( (pc_update_regular_tmp_5745_23.clone() * (M31_1.clone() - pc_update_regular_tmp_5745_23.clone())), ); - let ap_update_regular_tmp_5745_24 = (((M31_1.clone() - ap_update_add_col16.clone()) - - ap_update_add_1_col17.clone()) - - opcode_call_col18.clone()); + let ap_update_regular_tmp_5745_24 = eval.add_intermediate( + (((M31_1.clone() - ap_update_add_col16.clone()) - ap_update_add_1_col17.clone()) + - opcode_call_col18.clone()), + ); // ap_update is 0, 1, 2, or 4. eval.add_constraint( (ap_update_regular_tmp_5745_24.clone() * (M31_1.clone() - ap_update_regular_tmp_5745_24.clone())), ); - let fp_update_regular_tmp_5745_25 = - ((M31_1.clone() - opcode_call_col18.clone()) - opcode_ret_col19.clone()); + let fp_update_regular_tmp_5745_25 = eval.add_intermediate( + ((M31_1.clone() - opcode_call_col18.clone()) - opcode_ret_col19.clone()), + ); // opcode is 0, 1, 2, or 4. eval.add_constraint( (fp_update_regular_tmp_5745_25.clone() @@ -720,245 +725,298 @@ impl FrameworkEval for Eval { eval.add_constraint( (sub_p_bit_col136.clone() * (sub_p_bit_col136.clone() - M31_1.clone())), ); - let carry_tmp_5745_34 = (((((op0_limb_0_col51.clone() + op1_limb_0_col80.clone()) - + M31_0.clone()) - - add_res_limb_0_col108.clone()) - - (M31_1.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_34 = eval.add_intermediate( + (((((op0_limb_0_col51.clone() + op1_limb_0_col80.clone()) + M31_0.clone()) + - add_res_limb_0_col108.clone()) + - (M31_1.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_34.clone() * ((carry_tmp_5745_34.clone() * carry_tmp_5745_34.clone()) - M31_1.clone())), ); - let carry_tmp_5745_35 = (((((op0_limb_1_col52.clone() + op1_limb_1_col81.clone()) - + carry_tmp_5745_34.clone()) - - add_res_limb_1_col109.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_35 = eval.add_intermediate( + (((((op0_limb_1_col52.clone() + op1_limb_1_col81.clone()) + + carry_tmp_5745_34.clone()) + - add_res_limb_1_col109.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_35.clone() * ((carry_tmp_5745_35.clone() * carry_tmp_5745_35.clone()) - M31_1.clone())), ); - let carry_tmp_5745_36 = (((((op0_limb_2_col53.clone() + op1_limb_2_col82.clone()) - + carry_tmp_5745_35.clone()) - - add_res_limb_2_col110.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_36 = eval.add_intermediate( + (((((op0_limb_2_col53.clone() + op1_limb_2_col82.clone()) + + carry_tmp_5745_35.clone()) + - add_res_limb_2_col110.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_36.clone() * ((carry_tmp_5745_36.clone() * carry_tmp_5745_36.clone()) - M31_1.clone())), ); - let carry_tmp_5745_37 = (((((op0_limb_3_col54.clone() + op1_limb_3_col83.clone()) - + carry_tmp_5745_36.clone()) - - add_res_limb_3_col111.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_37 = eval.add_intermediate( + (((((op0_limb_3_col54.clone() + op1_limb_3_col83.clone()) + + carry_tmp_5745_36.clone()) + - add_res_limb_3_col111.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_37.clone() * ((carry_tmp_5745_37.clone() * carry_tmp_5745_37.clone()) - M31_1.clone())), ); - let carry_tmp_5745_38 = (((((op0_limb_4_col55.clone() + op1_limb_4_col84.clone()) - + carry_tmp_5745_37.clone()) - - add_res_limb_4_col112.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_38 = eval.add_intermediate( + (((((op0_limb_4_col55.clone() + op1_limb_4_col84.clone()) + + carry_tmp_5745_37.clone()) + - add_res_limb_4_col112.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_38.clone() * ((carry_tmp_5745_38.clone() * carry_tmp_5745_38.clone()) - M31_1.clone())), ); - let carry_tmp_5745_39 = (((((op0_limb_5_col56.clone() + op1_limb_5_col85.clone()) - + carry_tmp_5745_38.clone()) - - add_res_limb_5_col113.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_39 = eval.add_intermediate( + (((((op0_limb_5_col56.clone() + op1_limb_5_col85.clone()) + + carry_tmp_5745_38.clone()) + - add_res_limb_5_col113.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_39.clone() * ((carry_tmp_5745_39.clone() * carry_tmp_5745_39.clone()) - M31_1.clone())), ); - let carry_tmp_5745_40 = (((((op0_limb_6_col57.clone() + op1_limb_6_col86.clone()) - + carry_tmp_5745_39.clone()) - - add_res_limb_6_col114.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_40 = eval.add_intermediate( + (((((op0_limb_6_col57.clone() + op1_limb_6_col86.clone()) + + carry_tmp_5745_39.clone()) + - add_res_limb_6_col114.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_40.clone() * ((carry_tmp_5745_40.clone() * carry_tmp_5745_40.clone()) - M31_1.clone())), ); - let carry_tmp_5745_41 = (((((op0_limb_7_col58.clone() + op1_limb_7_col87.clone()) - + carry_tmp_5745_40.clone()) - - add_res_limb_7_col115.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_41 = eval.add_intermediate( + (((((op0_limb_7_col58.clone() + op1_limb_7_col87.clone()) + + carry_tmp_5745_40.clone()) + - add_res_limb_7_col115.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_41.clone() * ((carry_tmp_5745_41.clone() * carry_tmp_5745_41.clone()) - M31_1.clone())), ); - let carry_tmp_5745_42 = (((((op0_limb_8_col59.clone() + op1_limb_8_col88.clone()) - + carry_tmp_5745_41.clone()) - - add_res_limb_8_col116.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_42 = eval.add_intermediate( + (((((op0_limb_8_col59.clone() + op1_limb_8_col88.clone()) + + carry_tmp_5745_41.clone()) + - add_res_limb_8_col116.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_42.clone() * ((carry_tmp_5745_42.clone() * carry_tmp_5745_42.clone()) - M31_1.clone())), ); - let carry_tmp_5745_43 = (((((op0_limb_9_col60.clone() + op1_limb_9_col89.clone()) - + carry_tmp_5745_42.clone()) - - add_res_limb_9_col117.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_43 = eval.add_intermediate( + (((((op0_limb_9_col60.clone() + op1_limb_9_col89.clone()) + + carry_tmp_5745_42.clone()) + - add_res_limb_9_col117.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_43.clone() * ((carry_tmp_5745_43.clone() * carry_tmp_5745_43.clone()) - M31_1.clone())), ); - let carry_tmp_5745_44 = (((((op0_limb_10_col61.clone() + op1_limb_10_col90.clone()) - + carry_tmp_5745_43.clone()) - - add_res_limb_10_col118.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_44 = eval.add_intermediate( + (((((op0_limb_10_col61.clone() + op1_limb_10_col90.clone()) + + carry_tmp_5745_43.clone()) + - add_res_limb_10_col118.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_44.clone() * ((carry_tmp_5745_44.clone() * carry_tmp_5745_44.clone()) - M31_1.clone())), ); - let carry_tmp_5745_45 = (((((op0_limb_11_col62.clone() + op1_limb_11_col91.clone()) - + carry_tmp_5745_44.clone()) - - add_res_limb_11_col119.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_45 = eval.add_intermediate( + (((((op0_limb_11_col62.clone() + op1_limb_11_col91.clone()) + + carry_tmp_5745_44.clone()) + - add_res_limb_11_col119.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_45.clone() * ((carry_tmp_5745_45.clone() * carry_tmp_5745_45.clone()) - M31_1.clone())), ); - let carry_tmp_5745_46 = (((((op0_limb_12_col63.clone() + op1_limb_12_col92.clone()) - + carry_tmp_5745_45.clone()) - - add_res_limb_12_col120.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_46 = eval.add_intermediate( + (((((op0_limb_12_col63.clone() + op1_limb_12_col92.clone()) + + carry_tmp_5745_45.clone()) + - add_res_limb_12_col120.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_46.clone() * ((carry_tmp_5745_46.clone() * carry_tmp_5745_46.clone()) - M31_1.clone())), ); - let carry_tmp_5745_47 = (((((op0_limb_13_col64.clone() + op1_limb_13_col93.clone()) - + carry_tmp_5745_46.clone()) - - add_res_limb_13_col121.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_47 = eval.add_intermediate( + (((((op0_limb_13_col64.clone() + op1_limb_13_col93.clone()) + + carry_tmp_5745_46.clone()) + - add_res_limb_13_col121.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_47.clone() * ((carry_tmp_5745_47.clone() * carry_tmp_5745_47.clone()) - M31_1.clone())), ); - let carry_tmp_5745_48 = (((((op0_limb_14_col65.clone() + op1_limb_14_col94.clone()) - + carry_tmp_5745_47.clone()) - - add_res_limb_14_col122.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_48 = eval.add_intermediate( + (((((op0_limb_14_col65.clone() + op1_limb_14_col94.clone()) + + carry_tmp_5745_47.clone()) + - add_res_limb_14_col122.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_48.clone() * ((carry_tmp_5745_48.clone() * carry_tmp_5745_48.clone()) - M31_1.clone())), ); - let carry_tmp_5745_49 = (((((op0_limb_15_col66.clone() + op1_limb_15_col95.clone()) - + carry_tmp_5745_48.clone()) - - add_res_limb_15_col123.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_49 = eval.add_intermediate( + (((((op0_limb_15_col66.clone() + op1_limb_15_col95.clone()) + + carry_tmp_5745_48.clone()) + - add_res_limb_15_col123.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_49.clone() * ((carry_tmp_5745_49.clone() * carry_tmp_5745_49.clone()) - M31_1.clone())), ); - let carry_tmp_5745_50 = (((((op0_limb_16_col67.clone() + op1_limb_16_col96.clone()) - + carry_tmp_5745_49.clone()) - - add_res_limb_16_col124.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_50 = eval.add_intermediate( + (((((op0_limb_16_col67.clone() + op1_limb_16_col96.clone()) + + carry_tmp_5745_49.clone()) + - add_res_limb_16_col124.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_50.clone() * ((carry_tmp_5745_50.clone() * carry_tmp_5745_50.clone()) - M31_1.clone())), ); - let carry_tmp_5745_51 = (((((op0_limb_17_col68.clone() + op1_limb_17_col97.clone()) - + carry_tmp_5745_50.clone()) - - add_res_limb_17_col125.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_51 = eval.add_intermediate( + (((((op0_limb_17_col68.clone() + op1_limb_17_col97.clone()) + + carry_tmp_5745_50.clone()) + - add_res_limb_17_col125.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_51.clone() * ((carry_tmp_5745_51.clone() * carry_tmp_5745_51.clone()) - M31_1.clone())), ); - let carry_tmp_5745_52 = (((((op0_limb_18_col69.clone() + op1_limb_18_col98.clone()) - + carry_tmp_5745_51.clone()) - - add_res_limb_18_col126.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_52 = eval.add_intermediate( + (((((op0_limb_18_col69.clone() + op1_limb_18_col98.clone()) + + carry_tmp_5745_51.clone()) + - add_res_limb_18_col126.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_52.clone() * ((carry_tmp_5745_52.clone() * carry_tmp_5745_52.clone()) - M31_1.clone())), ); - let carry_tmp_5745_53 = (((((op0_limb_19_col70.clone() + op1_limb_19_col99.clone()) - + carry_tmp_5745_52.clone()) - - add_res_limb_19_col127.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_53 = eval.add_intermediate( + (((((op0_limb_19_col70.clone() + op1_limb_19_col99.clone()) + + carry_tmp_5745_52.clone()) + - add_res_limb_19_col127.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_53.clone() * ((carry_tmp_5745_53.clone() * carry_tmp_5745_53.clone()) - M31_1.clone())), ); - let carry_tmp_5745_54 = (((((op0_limb_20_col71.clone() + op1_limb_20_col100.clone()) - + carry_tmp_5745_53.clone()) - - add_res_limb_20_col128.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_54 = eval.add_intermediate( + (((((op0_limb_20_col71.clone() + op1_limb_20_col100.clone()) + + carry_tmp_5745_53.clone()) + - add_res_limb_20_col128.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_54.clone() * ((carry_tmp_5745_54.clone() * carry_tmp_5745_54.clone()) - M31_1.clone())), ); - let carry_tmp_5745_55 = (((((op0_limb_21_col72.clone() + op1_limb_21_col101.clone()) - + carry_tmp_5745_54.clone()) - - add_res_limb_21_col129.clone()) - - (M31_136.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_55 = eval.add_intermediate( + (((((op0_limb_21_col72.clone() + op1_limb_21_col101.clone()) + + carry_tmp_5745_54.clone()) + - add_res_limb_21_col129.clone()) + - (M31_136.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_55.clone() * ((carry_tmp_5745_55.clone() * carry_tmp_5745_55.clone()) - M31_1.clone())), ); - let carry_tmp_5745_56 = (((((op0_limb_22_col73.clone() + op1_limb_22_col102.clone()) - + carry_tmp_5745_55.clone()) - - add_res_limb_22_col130.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_56 = eval.add_intermediate( + (((((op0_limb_22_col73.clone() + op1_limb_22_col102.clone()) + + carry_tmp_5745_55.clone()) + - add_res_limb_22_col130.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_56.clone() * ((carry_tmp_5745_56.clone() * carry_tmp_5745_56.clone()) - M31_1.clone())), ); - let carry_tmp_5745_57 = (((((op0_limb_23_col74.clone() + op1_limb_23_col103.clone()) - + carry_tmp_5745_56.clone()) - - add_res_limb_23_col131.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_57 = eval.add_intermediate( + (((((op0_limb_23_col74.clone() + op1_limb_23_col103.clone()) + + carry_tmp_5745_56.clone()) + - add_res_limb_23_col131.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_57.clone() * ((carry_tmp_5745_57.clone() * carry_tmp_5745_57.clone()) - M31_1.clone())), ); - let carry_tmp_5745_58 = (((((op0_limb_24_col75.clone() + op1_limb_24_col104.clone()) - + carry_tmp_5745_57.clone()) - - add_res_limb_24_col132.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_58 = eval.add_intermediate( + (((((op0_limb_24_col75.clone() + op1_limb_24_col104.clone()) + + carry_tmp_5745_57.clone()) + - add_res_limb_24_col132.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_58.clone() * ((carry_tmp_5745_58.clone() * carry_tmp_5745_58.clone()) - M31_1.clone())), ); - let carry_tmp_5745_59 = (((((op0_limb_25_col76.clone() + op1_limb_25_col105.clone()) - + carry_tmp_5745_58.clone()) - - add_res_limb_25_col133.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_59 = eval.add_intermediate( + (((((op0_limb_25_col76.clone() + op1_limb_25_col105.clone()) + + carry_tmp_5745_58.clone()) + - add_res_limb_25_col133.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_59.clone() * ((carry_tmp_5745_59.clone() * carry_tmp_5745_59.clone()) - M31_1.clone())), ); - let carry_tmp_5745_60 = (((((op0_limb_26_col77.clone() + op1_limb_26_col106.clone()) - + carry_tmp_5745_59.clone()) - - add_res_limb_26_col134.clone()) - - (M31_0.clone() * sub_p_bit_col136.clone())) - * M31_4194304.clone()); + let carry_tmp_5745_60 = eval.add_intermediate( + (((((op0_limb_26_col77.clone() + op1_limb_26_col106.clone()) + + carry_tmp_5745_59.clone()) + - add_res_limb_26_col134.clone()) + - (M31_0.clone() * sub_p_bit_col136.clone())) + * M31_4194304.clone()), + ); eval.add_constraint( (carry_tmp_5745_60.clone() * ((carry_tmp_5745_60.clone() * carry_tmp_5745_60.clone()) - M31_1.clone())), @@ -1087,1002 +1145,1126 @@ impl FrameworkEval for Eval { // VerifyMul252. - let conv_tmp_5745_62 = ((M31_0.clone() - mul_res_limb_0_col137.clone()) - + (op0_limb_0_col51.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_63 = (((M31_0.clone() - mul_res_limb_1_col138.clone()) - + (op0_limb_0_col51.clone() * op1_limb_1_col81.clone())) - + (op0_limb_1_col52.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_64 = ((((M31_0.clone() - mul_res_limb_2_col139.clone()) - + (op0_limb_0_col51.clone() * op1_limb_2_col82.clone())) - + (op0_limb_1_col52.clone() * op1_limb_1_col81.clone())) - + (op0_limb_2_col53.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_65 = (((((M31_0.clone() - mul_res_limb_3_col140.clone()) - + (op0_limb_0_col51.clone() * op1_limb_3_col83.clone())) - + (op0_limb_1_col52.clone() * op1_limb_2_col82.clone())) - + (op0_limb_2_col53.clone() * op1_limb_1_col81.clone())) - + (op0_limb_3_col54.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_66 = ((((((M31_0.clone() - mul_res_limb_4_col141.clone()) - + (op0_limb_0_col51.clone() * op1_limb_4_col84.clone())) - + (op0_limb_1_col52.clone() * op1_limb_3_col83.clone())) - + (op0_limb_2_col53.clone() * op1_limb_2_col82.clone())) - + (op0_limb_3_col54.clone() * op1_limb_1_col81.clone())) - + (op0_limb_4_col55.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_67 = (((((((M31_0.clone() - mul_res_limb_5_col142.clone()) - + (op0_limb_0_col51.clone() * op1_limb_5_col85.clone())) - + (op0_limb_1_col52.clone() * op1_limb_4_col84.clone())) - + (op0_limb_2_col53.clone() * op1_limb_3_col83.clone())) - + (op0_limb_3_col54.clone() * op1_limb_2_col82.clone())) - + (op0_limb_4_col55.clone() * op1_limb_1_col81.clone())) - + (op0_limb_5_col56.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_68 = ((((((((M31_0.clone() - mul_res_limb_6_col143.clone()) - + (op0_limb_0_col51.clone() * op1_limb_6_col86.clone())) - + (op0_limb_1_col52.clone() * op1_limb_5_col85.clone())) - + (op0_limb_2_col53.clone() * op1_limb_4_col84.clone())) - + (op0_limb_3_col54.clone() * op1_limb_3_col83.clone())) - + (op0_limb_4_col55.clone() * op1_limb_2_col82.clone())) - + (op0_limb_5_col56.clone() * op1_limb_1_col81.clone())) - + (op0_limb_6_col57.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_69 = (((((((((M31_0.clone() - mul_res_limb_7_col144.clone()) - + (op0_limb_0_col51.clone() * op1_limb_7_col87.clone())) - + (op0_limb_1_col52.clone() * op1_limb_6_col86.clone())) - + (op0_limb_2_col53.clone() * op1_limb_5_col85.clone())) - + (op0_limb_3_col54.clone() * op1_limb_4_col84.clone())) - + (op0_limb_4_col55.clone() * op1_limb_3_col83.clone())) - + (op0_limb_5_col56.clone() * op1_limb_2_col82.clone())) - + (op0_limb_6_col57.clone() * op1_limb_1_col81.clone())) - + (op0_limb_7_col58.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_70 = ((((((((((M31_0.clone() - mul_res_limb_8_col145.clone()) - + (op0_limb_0_col51.clone() * op1_limb_8_col88.clone())) - + (op0_limb_1_col52.clone() * op1_limb_7_col87.clone())) - + (op0_limb_2_col53.clone() * op1_limb_6_col86.clone())) - + (op0_limb_3_col54.clone() * op1_limb_5_col85.clone())) - + (op0_limb_4_col55.clone() * op1_limb_4_col84.clone())) - + (op0_limb_5_col56.clone() * op1_limb_3_col83.clone())) - + (op0_limb_6_col57.clone() * op1_limb_2_col82.clone())) - + (op0_limb_7_col58.clone() * op1_limb_1_col81.clone())) - + (op0_limb_8_col59.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_71 = (((((((((((M31_0.clone() - mul_res_limb_9_col146.clone()) - + (op0_limb_0_col51.clone() * op1_limb_9_col89.clone())) - + (op0_limb_1_col52.clone() * op1_limb_8_col88.clone())) - + (op0_limb_2_col53.clone() * op1_limb_7_col87.clone())) - + (op0_limb_3_col54.clone() * op1_limb_6_col86.clone())) - + (op0_limb_4_col55.clone() * op1_limb_5_col85.clone())) - + (op0_limb_5_col56.clone() * op1_limb_4_col84.clone())) - + (op0_limb_6_col57.clone() * op1_limb_3_col83.clone())) - + (op0_limb_7_col58.clone() * op1_limb_2_col82.clone())) - + (op0_limb_8_col59.clone() * op1_limb_1_col81.clone())) - + (op0_limb_9_col60.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_72 = ((((((((((((M31_0.clone() - - mul_res_limb_10_col147.clone()) - + (op0_limb_0_col51.clone() * op1_limb_10_col90.clone())) - + (op0_limb_1_col52.clone() * op1_limb_9_col89.clone())) - + (op0_limb_2_col53.clone() * op1_limb_8_col88.clone())) - + (op0_limb_3_col54.clone() * op1_limb_7_col87.clone())) - + (op0_limb_4_col55.clone() * op1_limb_6_col86.clone())) - + (op0_limb_5_col56.clone() * op1_limb_5_col85.clone())) - + (op0_limb_6_col57.clone() * op1_limb_4_col84.clone())) - + (op0_limb_7_col58.clone() * op1_limb_3_col83.clone())) - + (op0_limb_8_col59.clone() * op1_limb_2_col82.clone())) - + (op0_limb_9_col60.clone() * op1_limb_1_col81.clone())) - + (op0_limb_10_col61.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_73 = (((((((((((((M31_0.clone() - - mul_res_limb_11_col148.clone()) - + (op0_limb_0_col51.clone() * op1_limb_11_col91.clone())) - + (op0_limb_1_col52.clone() * op1_limb_10_col90.clone())) - + (op0_limb_2_col53.clone() * op1_limb_9_col89.clone())) - + (op0_limb_3_col54.clone() * op1_limb_8_col88.clone())) - + (op0_limb_4_col55.clone() * op1_limb_7_col87.clone())) - + (op0_limb_5_col56.clone() * op1_limb_6_col86.clone())) - + (op0_limb_6_col57.clone() * op1_limb_5_col85.clone())) - + (op0_limb_7_col58.clone() * op1_limb_4_col84.clone())) - + (op0_limb_8_col59.clone() * op1_limb_3_col83.clone())) - + (op0_limb_9_col60.clone() * op1_limb_2_col82.clone())) - + (op0_limb_10_col61.clone() * op1_limb_1_col81.clone())) - + (op0_limb_11_col62.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_74 = ((((((((((((((M31_0.clone() - - mul_res_limb_12_col149.clone()) - + (op0_limb_0_col51.clone() * op1_limb_12_col92.clone())) - + (op0_limb_1_col52.clone() * op1_limb_11_col91.clone())) - + (op0_limb_2_col53.clone() * op1_limb_10_col90.clone())) - + (op0_limb_3_col54.clone() * op1_limb_9_col89.clone())) - + (op0_limb_4_col55.clone() * op1_limb_8_col88.clone())) - + (op0_limb_5_col56.clone() * op1_limb_7_col87.clone())) - + (op0_limb_6_col57.clone() * op1_limb_6_col86.clone())) - + (op0_limb_7_col58.clone() * op1_limb_5_col85.clone())) - + (op0_limb_8_col59.clone() * op1_limb_4_col84.clone())) - + (op0_limb_9_col60.clone() * op1_limb_3_col83.clone())) - + (op0_limb_10_col61.clone() * op1_limb_2_col82.clone())) - + (op0_limb_11_col62.clone() * op1_limb_1_col81.clone())) - + (op0_limb_12_col63.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_75 = (((((((((((((((M31_0.clone() - - mul_res_limb_13_col150.clone()) - + (op0_limb_0_col51.clone() * op1_limb_13_col93.clone())) - + (op0_limb_1_col52.clone() * op1_limb_12_col92.clone())) - + (op0_limb_2_col53.clone() * op1_limb_11_col91.clone())) - + (op0_limb_3_col54.clone() * op1_limb_10_col90.clone())) - + (op0_limb_4_col55.clone() * op1_limb_9_col89.clone())) - + (op0_limb_5_col56.clone() * op1_limb_8_col88.clone())) - + (op0_limb_6_col57.clone() * op1_limb_7_col87.clone())) - + (op0_limb_7_col58.clone() * op1_limb_6_col86.clone())) - + (op0_limb_8_col59.clone() * op1_limb_5_col85.clone())) - + (op0_limb_9_col60.clone() * op1_limb_4_col84.clone())) - + (op0_limb_10_col61.clone() * op1_limb_3_col83.clone())) - + (op0_limb_11_col62.clone() * op1_limb_2_col82.clone())) - + (op0_limb_12_col63.clone() * op1_limb_1_col81.clone())) - + (op0_limb_13_col64.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_76 = ((((((((((((((((M31_0.clone() - - mul_res_limb_14_col151.clone()) - + (op0_limb_0_col51.clone() * op1_limb_14_col94.clone())) - + (op0_limb_1_col52.clone() * op1_limb_13_col93.clone())) - + (op0_limb_2_col53.clone() * op1_limb_12_col92.clone())) - + (op0_limb_3_col54.clone() * op1_limb_11_col91.clone())) - + (op0_limb_4_col55.clone() * op1_limb_10_col90.clone())) - + (op0_limb_5_col56.clone() * op1_limb_9_col89.clone())) - + (op0_limb_6_col57.clone() * op1_limb_8_col88.clone())) - + (op0_limb_7_col58.clone() * op1_limb_7_col87.clone())) - + (op0_limb_8_col59.clone() * op1_limb_6_col86.clone())) - + (op0_limb_9_col60.clone() * op1_limb_5_col85.clone())) - + (op0_limb_10_col61.clone() * op1_limb_4_col84.clone())) - + (op0_limb_11_col62.clone() * op1_limb_3_col83.clone())) - + (op0_limb_12_col63.clone() * op1_limb_2_col82.clone())) - + (op0_limb_13_col64.clone() * op1_limb_1_col81.clone())) - + (op0_limb_14_col65.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_77 = (((((((((((((((((M31_0.clone() - - mul_res_limb_15_col152.clone()) - + (op0_limb_0_col51.clone() * op1_limb_15_col95.clone())) - + (op0_limb_1_col52.clone() * op1_limb_14_col94.clone())) - + (op0_limb_2_col53.clone() * op1_limb_13_col93.clone())) - + (op0_limb_3_col54.clone() * op1_limb_12_col92.clone())) - + (op0_limb_4_col55.clone() * op1_limb_11_col91.clone())) - + (op0_limb_5_col56.clone() * op1_limb_10_col90.clone())) - + (op0_limb_6_col57.clone() * op1_limb_9_col89.clone())) - + (op0_limb_7_col58.clone() * op1_limb_8_col88.clone())) - + (op0_limb_8_col59.clone() * op1_limb_7_col87.clone())) - + (op0_limb_9_col60.clone() * op1_limb_6_col86.clone())) - + (op0_limb_10_col61.clone() * op1_limb_5_col85.clone())) - + (op0_limb_11_col62.clone() * op1_limb_4_col84.clone())) - + (op0_limb_12_col63.clone() * op1_limb_3_col83.clone())) - + (op0_limb_13_col64.clone() * op1_limb_2_col82.clone())) - + (op0_limb_14_col65.clone() * op1_limb_1_col81.clone())) - + (op0_limb_15_col66.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_78 = ((((((((((((((((((M31_0.clone() - - mul_res_limb_16_col153.clone()) - + (op0_limb_0_col51.clone() * op1_limb_16_col96.clone())) - + (op0_limb_1_col52.clone() * op1_limb_15_col95.clone())) - + (op0_limb_2_col53.clone() * op1_limb_14_col94.clone())) - + (op0_limb_3_col54.clone() * op1_limb_13_col93.clone())) - + (op0_limb_4_col55.clone() * op1_limb_12_col92.clone())) - + (op0_limb_5_col56.clone() * op1_limb_11_col91.clone())) - + (op0_limb_6_col57.clone() * op1_limb_10_col90.clone())) - + (op0_limb_7_col58.clone() * op1_limb_9_col89.clone())) - + (op0_limb_8_col59.clone() * op1_limb_8_col88.clone())) - + (op0_limb_9_col60.clone() * op1_limb_7_col87.clone())) - + (op0_limb_10_col61.clone() * op1_limb_6_col86.clone())) - + (op0_limb_11_col62.clone() * op1_limb_5_col85.clone())) - + (op0_limb_12_col63.clone() * op1_limb_4_col84.clone())) - + (op0_limb_13_col64.clone() * op1_limb_3_col83.clone())) - + (op0_limb_14_col65.clone() * op1_limb_2_col82.clone())) - + (op0_limb_15_col66.clone() * op1_limb_1_col81.clone())) - + (op0_limb_16_col67.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_79 = (((((((((((((((((((M31_0.clone() - - mul_res_limb_17_col154.clone()) - + (op0_limb_0_col51.clone() * op1_limb_17_col97.clone())) - + (op0_limb_1_col52.clone() * op1_limb_16_col96.clone())) - + (op0_limb_2_col53.clone() * op1_limb_15_col95.clone())) - + (op0_limb_3_col54.clone() * op1_limb_14_col94.clone())) - + (op0_limb_4_col55.clone() * op1_limb_13_col93.clone())) - + (op0_limb_5_col56.clone() * op1_limb_12_col92.clone())) - + (op0_limb_6_col57.clone() * op1_limb_11_col91.clone())) - + (op0_limb_7_col58.clone() * op1_limb_10_col90.clone())) - + (op0_limb_8_col59.clone() * op1_limb_9_col89.clone())) - + (op0_limb_9_col60.clone() * op1_limb_8_col88.clone())) - + (op0_limb_10_col61.clone() * op1_limb_7_col87.clone())) - + (op0_limb_11_col62.clone() * op1_limb_6_col86.clone())) - + (op0_limb_12_col63.clone() * op1_limb_5_col85.clone())) - + (op0_limb_13_col64.clone() * op1_limb_4_col84.clone())) - + (op0_limb_14_col65.clone() * op1_limb_3_col83.clone())) - + (op0_limb_15_col66.clone() * op1_limb_2_col82.clone())) - + (op0_limb_16_col67.clone() * op1_limb_1_col81.clone())) - + (op0_limb_17_col68.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_80 = ((((((((((((((((((((M31_0.clone() - - mul_res_limb_18_col155.clone()) - + (op0_limb_0_col51.clone() * op1_limb_18_col98.clone())) - + (op0_limb_1_col52.clone() * op1_limb_17_col97.clone())) - + (op0_limb_2_col53.clone() * op1_limb_16_col96.clone())) - + (op0_limb_3_col54.clone() * op1_limb_15_col95.clone())) - + (op0_limb_4_col55.clone() * op1_limb_14_col94.clone())) - + (op0_limb_5_col56.clone() * op1_limb_13_col93.clone())) - + (op0_limb_6_col57.clone() * op1_limb_12_col92.clone())) - + (op0_limb_7_col58.clone() * op1_limb_11_col91.clone())) - + (op0_limb_8_col59.clone() * op1_limb_10_col90.clone())) - + (op0_limb_9_col60.clone() * op1_limb_9_col89.clone())) - + (op0_limb_10_col61.clone() * op1_limb_8_col88.clone())) - + (op0_limb_11_col62.clone() * op1_limb_7_col87.clone())) - + (op0_limb_12_col63.clone() * op1_limb_6_col86.clone())) - + (op0_limb_13_col64.clone() * op1_limb_5_col85.clone())) - + (op0_limb_14_col65.clone() * op1_limb_4_col84.clone())) - + (op0_limb_15_col66.clone() * op1_limb_3_col83.clone())) - + (op0_limb_16_col67.clone() * op1_limb_2_col82.clone())) - + (op0_limb_17_col68.clone() * op1_limb_1_col81.clone())) - + (op0_limb_18_col69.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_81 = (((((((((((((((((((((M31_0.clone() - - mul_res_limb_19_col156.clone()) - + (op0_limb_0_col51.clone() * op1_limb_19_col99.clone())) - + (op0_limb_1_col52.clone() * op1_limb_18_col98.clone())) - + (op0_limb_2_col53.clone() * op1_limb_17_col97.clone())) - + (op0_limb_3_col54.clone() * op1_limb_16_col96.clone())) - + (op0_limb_4_col55.clone() * op1_limb_15_col95.clone())) - + (op0_limb_5_col56.clone() * op1_limb_14_col94.clone())) - + (op0_limb_6_col57.clone() * op1_limb_13_col93.clone())) - + (op0_limb_7_col58.clone() * op1_limb_12_col92.clone())) - + (op0_limb_8_col59.clone() * op1_limb_11_col91.clone())) - + (op0_limb_9_col60.clone() * op1_limb_10_col90.clone())) - + (op0_limb_10_col61.clone() * op1_limb_9_col89.clone())) - + (op0_limb_11_col62.clone() * op1_limb_8_col88.clone())) - + (op0_limb_12_col63.clone() * op1_limb_7_col87.clone())) - + (op0_limb_13_col64.clone() * op1_limb_6_col86.clone())) - + (op0_limb_14_col65.clone() * op1_limb_5_col85.clone())) - + (op0_limb_15_col66.clone() * op1_limb_4_col84.clone())) - + (op0_limb_16_col67.clone() * op1_limb_3_col83.clone())) - + (op0_limb_17_col68.clone() * op1_limb_2_col82.clone())) - + (op0_limb_18_col69.clone() * op1_limb_1_col81.clone())) - + (op0_limb_19_col70.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_82 = ((((((((((((((((((((((M31_0.clone() - - mul_res_limb_20_col157.clone()) - + (op0_limb_0_col51.clone() * op1_limb_20_col100.clone())) - + (op0_limb_1_col52.clone() * op1_limb_19_col99.clone())) - + (op0_limb_2_col53.clone() * op1_limb_18_col98.clone())) - + (op0_limb_3_col54.clone() * op1_limb_17_col97.clone())) - + (op0_limb_4_col55.clone() * op1_limb_16_col96.clone())) - + (op0_limb_5_col56.clone() * op1_limb_15_col95.clone())) - + (op0_limb_6_col57.clone() * op1_limb_14_col94.clone())) - + (op0_limb_7_col58.clone() * op1_limb_13_col93.clone())) - + (op0_limb_8_col59.clone() * op1_limb_12_col92.clone())) - + (op0_limb_9_col60.clone() * op1_limb_11_col91.clone())) - + (op0_limb_10_col61.clone() * op1_limb_10_col90.clone())) - + (op0_limb_11_col62.clone() * op1_limb_9_col89.clone())) - + (op0_limb_12_col63.clone() * op1_limb_8_col88.clone())) - + (op0_limb_13_col64.clone() * op1_limb_7_col87.clone())) - + (op0_limb_14_col65.clone() * op1_limb_6_col86.clone())) - + (op0_limb_15_col66.clone() * op1_limb_5_col85.clone())) - + (op0_limb_16_col67.clone() * op1_limb_4_col84.clone())) - + (op0_limb_17_col68.clone() * op1_limb_3_col83.clone())) - + (op0_limb_18_col69.clone() * op1_limb_2_col82.clone())) - + (op0_limb_19_col70.clone() * op1_limb_1_col81.clone())) - + (op0_limb_20_col71.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_83 = (((((((((((((((((((((((M31_0.clone() - - mul_res_limb_21_col158.clone()) - + (op0_limb_0_col51.clone() * op1_limb_21_col101.clone())) - + (op0_limb_1_col52.clone() * op1_limb_20_col100.clone())) - + (op0_limb_2_col53.clone() * op1_limb_19_col99.clone())) - + (op0_limb_3_col54.clone() * op1_limb_18_col98.clone())) - + (op0_limb_4_col55.clone() * op1_limb_17_col97.clone())) - + (op0_limb_5_col56.clone() * op1_limb_16_col96.clone())) - + (op0_limb_6_col57.clone() * op1_limb_15_col95.clone())) - + (op0_limb_7_col58.clone() * op1_limb_14_col94.clone())) - + (op0_limb_8_col59.clone() * op1_limb_13_col93.clone())) - + (op0_limb_9_col60.clone() * op1_limb_12_col92.clone())) - + (op0_limb_10_col61.clone() * op1_limb_11_col91.clone())) - + (op0_limb_11_col62.clone() * op1_limb_10_col90.clone())) - + (op0_limb_12_col63.clone() * op1_limb_9_col89.clone())) - + (op0_limb_13_col64.clone() * op1_limb_8_col88.clone())) - + (op0_limb_14_col65.clone() * op1_limb_7_col87.clone())) - + (op0_limb_15_col66.clone() * op1_limb_6_col86.clone())) - + (op0_limb_16_col67.clone() * op1_limb_5_col85.clone())) - + (op0_limb_17_col68.clone() * op1_limb_4_col84.clone())) - + (op0_limb_18_col69.clone() * op1_limb_3_col83.clone())) - + (op0_limb_19_col70.clone() * op1_limb_2_col82.clone())) - + (op0_limb_20_col71.clone() * op1_limb_1_col81.clone())) - + (op0_limb_21_col72.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_84 = ((((((((((((((((((((((((M31_0.clone() - - mul_res_limb_22_col159.clone()) - + (op0_limb_0_col51.clone() * op1_limb_22_col102.clone())) - + (op0_limb_1_col52.clone() * op1_limb_21_col101.clone())) - + (op0_limb_2_col53.clone() * op1_limb_20_col100.clone())) - + (op0_limb_3_col54.clone() * op1_limb_19_col99.clone())) - + (op0_limb_4_col55.clone() * op1_limb_18_col98.clone())) - + (op0_limb_5_col56.clone() * op1_limb_17_col97.clone())) - + (op0_limb_6_col57.clone() * op1_limb_16_col96.clone())) - + (op0_limb_7_col58.clone() * op1_limb_15_col95.clone())) - + (op0_limb_8_col59.clone() * op1_limb_14_col94.clone())) - + (op0_limb_9_col60.clone() * op1_limb_13_col93.clone())) - + (op0_limb_10_col61.clone() * op1_limb_12_col92.clone())) - + (op0_limb_11_col62.clone() * op1_limb_11_col91.clone())) - + (op0_limb_12_col63.clone() * op1_limb_10_col90.clone())) - + (op0_limb_13_col64.clone() * op1_limb_9_col89.clone())) - + (op0_limb_14_col65.clone() * op1_limb_8_col88.clone())) - + (op0_limb_15_col66.clone() * op1_limb_7_col87.clone())) - + (op0_limb_16_col67.clone() * op1_limb_6_col86.clone())) - + (op0_limb_17_col68.clone() * op1_limb_5_col85.clone())) - + (op0_limb_18_col69.clone() * op1_limb_4_col84.clone())) - + (op0_limb_19_col70.clone() * op1_limb_3_col83.clone())) - + (op0_limb_20_col71.clone() * op1_limb_2_col82.clone())) - + (op0_limb_21_col72.clone() * op1_limb_1_col81.clone())) - + (op0_limb_22_col73.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_85 = (((((((((((((((((((((((((M31_0.clone() - - mul_res_limb_23_col160.clone()) - + (op0_limb_0_col51.clone() * op1_limb_23_col103.clone())) - + (op0_limb_1_col52.clone() * op1_limb_22_col102.clone())) - + (op0_limb_2_col53.clone() * op1_limb_21_col101.clone())) - + (op0_limb_3_col54.clone() * op1_limb_20_col100.clone())) - + (op0_limb_4_col55.clone() * op1_limb_19_col99.clone())) - + (op0_limb_5_col56.clone() * op1_limb_18_col98.clone())) - + (op0_limb_6_col57.clone() * op1_limb_17_col97.clone())) - + (op0_limb_7_col58.clone() * op1_limb_16_col96.clone())) - + (op0_limb_8_col59.clone() * op1_limb_15_col95.clone())) - + (op0_limb_9_col60.clone() * op1_limb_14_col94.clone())) - + (op0_limb_10_col61.clone() * op1_limb_13_col93.clone())) - + (op0_limb_11_col62.clone() * op1_limb_12_col92.clone())) - + (op0_limb_12_col63.clone() * op1_limb_11_col91.clone())) - + (op0_limb_13_col64.clone() * op1_limb_10_col90.clone())) - + (op0_limb_14_col65.clone() * op1_limb_9_col89.clone())) - + (op0_limb_15_col66.clone() * op1_limb_8_col88.clone())) - + (op0_limb_16_col67.clone() * op1_limb_7_col87.clone())) - + (op0_limb_17_col68.clone() * op1_limb_6_col86.clone())) - + (op0_limb_18_col69.clone() * op1_limb_5_col85.clone())) - + (op0_limb_19_col70.clone() * op1_limb_4_col84.clone())) - + (op0_limb_20_col71.clone() * op1_limb_3_col83.clone())) - + (op0_limb_21_col72.clone() * op1_limb_2_col82.clone())) - + (op0_limb_22_col73.clone() * op1_limb_1_col81.clone())) - + (op0_limb_23_col74.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_86 = ((((((((((((((((((((((((((M31_0.clone() - - mul_res_limb_24_col161.clone()) - + (op0_limb_0_col51.clone() * op1_limb_24_col104.clone())) - + (op0_limb_1_col52.clone() * op1_limb_23_col103.clone())) - + (op0_limb_2_col53.clone() * op1_limb_22_col102.clone())) - + (op0_limb_3_col54.clone() * op1_limb_21_col101.clone())) - + (op0_limb_4_col55.clone() * op1_limb_20_col100.clone())) - + (op0_limb_5_col56.clone() * op1_limb_19_col99.clone())) - + (op0_limb_6_col57.clone() * op1_limb_18_col98.clone())) - + (op0_limb_7_col58.clone() * op1_limb_17_col97.clone())) - + (op0_limb_8_col59.clone() * op1_limb_16_col96.clone())) - + (op0_limb_9_col60.clone() * op1_limb_15_col95.clone())) - + (op0_limb_10_col61.clone() * op1_limb_14_col94.clone())) - + (op0_limb_11_col62.clone() * op1_limb_13_col93.clone())) - + (op0_limb_12_col63.clone() * op1_limb_12_col92.clone())) - + (op0_limb_13_col64.clone() * op1_limb_11_col91.clone())) - + (op0_limb_14_col65.clone() * op1_limb_10_col90.clone())) - + (op0_limb_15_col66.clone() * op1_limb_9_col89.clone())) - + (op0_limb_16_col67.clone() * op1_limb_8_col88.clone())) - + (op0_limb_17_col68.clone() * op1_limb_7_col87.clone())) - + (op0_limb_18_col69.clone() * op1_limb_6_col86.clone())) - + (op0_limb_19_col70.clone() * op1_limb_5_col85.clone())) - + (op0_limb_20_col71.clone() * op1_limb_4_col84.clone())) - + (op0_limb_21_col72.clone() * op1_limb_3_col83.clone())) - + (op0_limb_22_col73.clone() * op1_limb_2_col82.clone())) - + (op0_limb_23_col74.clone() * op1_limb_1_col81.clone())) - + (op0_limb_24_col75.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_87 = (((((((((((((((((((((((((((M31_0.clone() - - mul_res_limb_25_col162.clone()) - + (op0_limb_0_col51.clone() * op1_limb_25_col105.clone())) - + (op0_limb_1_col52.clone() * op1_limb_24_col104.clone())) - + (op0_limb_2_col53.clone() * op1_limb_23_col103.clone())) - + (op0_limb_3_col54.clone() * op1_limb_22_col102.clone())) - + (op0_limb_4_col55.clone() * op1_limb_21_col101.clone())) - + (op0_limb_5_col56.clone() * op1_limb_20_col100.clone())) - + (op0_limb_6_col57.clone() * op1_limb_19_col99.clone())) - + (op0_limb_7_col58.clone() * op1_limb_18_col98.clone())) - + (op0_limb_8_col59.clone() * op1_limb_17_col97.clone())) - + (op0_limb_9_col60.clone() * op1_limb_16_col96.clone())) - + (op0_limb_10_col61.clone() * op1_limb_15_col95.clone())) - + (op0_limb_11_col62.clone() * op1_limb_14_col94.clone())) - + (op0_limb_12_col63.clone() * op1_limb_13_col93.clone())) - + (op0_limb_13_col64.clone() * op1_limb_12_col92.clone())) - + (op0_limb_14_col65.clone() * op1_limb_11_col91.clone())) - + (op0_limb_15_col66.clone() * op1_limb_10_col90.clone())) - + (op0_limb_16_col67.clone() * op1_limb_9_col89.clone())) - + (op0_limb_17_col68.clone() * op1_limb_8_col88.clone())) - + (op0_limb_18_col69.clone() * op1_limb_7_col87.clone())) - + (op0_limb_19_col70.clone() * op1_limb_6_col86.clone())) - + (op0_limb_20_col71.clone() * op1_limb_5_col85.clone())) - + (op0_limb_21_col72.clone() * op1_limb_4_col84.clone())) - + (op0_limb_22_col73.clone() * op1_limb_3_col83.clone())) - + (op0_limb_23_col74.clone() * op1_limb_2_col82.clone())) - + (op0_limb_24_col75.clone() * op1_limb_1_col81.clone())) - + (op0_limb_25_col76.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_88 = ((((((((((((((((((((((((((((M31_0 - .clone() - - mul_res_limb_26_col163.clone()) - + (op0_limb_0_col51.clone() * op1_limb_26_col106.clone())) - + (op0_limb_1_col52.clone() * op1_limb_25_col105.clone())) - + (op0_limb_2_col53.clone() * op1_limb_24_col104.clone())) - + (op0_limb_3_col54.clone() * op1_limb_23_col103.clone())) - + (op0_limb_4_col55.clone() * op1_limb_22_col102.clone())) - + (op0_limb_5_col56.clone() * op1_limb_21_col101.clone())) - + (op0_limb_6_col57.clone() * op1_limb_20_col100.clone())) - + (op0_limb_7_col58.clone() * op1_limb_19_col99.clone())) - + (op0_limb_8_col59.clone() * op1_limb_18_col98.clone())) - + (op0_limb_9_col60.clone() * op1_limb_17_col97.clone())) - + (op0_limb_10_col61.clone() * op1_limb_16_col96.clone())) - + (op0_limb_11_col62.clone() * op1_limb_15_col95.clone())) - + (op0_limb_12_col63.clone() * op1_limb_14_col94.clone())) - + (op0_limb_13_col64.clone() * op1_limb_13_col93.clone())) - + (op0_limb_14_col65.clone() * op1_limb_12_col92.clone())) - + (op0_limb_15_col66.clone() * op1_limb_11_col91.clone())) - + (op0_limb_16_col67.clone() * op1_limb_10_col90.clone())) - + (op0_limb_17_col68.clone() * op1_limb_9_col89.clone())) - + (op0_limb_18_col69.clone() * op1_limb_8_col88.clone())) - + (op0_limb_19_col70.clone() * op1_limb_7_col87.clone())) - + (op0_limb_20_col71.clone() * op1_limb_6_col86.clone())) - + (op0_limb_21_col72.clone() * op1_limb_5_col85.clone())) - + (op0_limb_22_col73.clone() * op1_limb_4_col84.clone())) - + (op0_limb_23_col74.clone() * op1_limb_3_col83.clone())) - + (op0_limb_24_col75.clone() * op1_limb_2_col82.clone())) - + (op0_limb_25_col76.clone() * op1_limb_1_col81.clone())) - + (op0_limb_26_col77.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_89 = (((((((((((((((((((((((((((((M31_0 - .clone() - - mul_res_limb_27_col164.clone()) - + (op0_limb_0_col51.clone() * op1_limb_27_col107.clone())) - + (op0_limb_1_col52.clone() * op1_limb_26_col106.clone())) - + (op0_limb_2_col53.clone() * op1_limb_25_col105.clone())) - + (op0_limb_3_col54.clone() * op1_limb_24_col104.clone())) - + (op0_limb_4_col55.clone() * op1_limb_23_col103.clone())) - + (op0_limb_5_col56.clone() * op1_limb_22_col102.clone())) - + (op0_limb_6_col57.clone() * op1_limb_21_col101.clone())) - + (op0_limb_7_col58.clone() * op1_limb_20_col100.clone())) - + (op0_limb_8_col59.clone() * op1_limb_19_col99.clone())) - + (op0_limb_9_col60.clone() * op1_limb_18_col98.clone())) - + (op0_limb_10_col61.clone() * op1_limb_17_col97.clone())) - + (op0_limb_11_col62.clone() * op1_limb_16_col96.clone())) - + (op0_limb_12_col63.clone() * op1_limb_15_col95.clone())) - + (op0_limb_13_col64.clone() * op1_limb_14_col94.clone())) - + (op0_limb_14_col65.clone() * op1_limb_13_col93.clone())) - + (op0_limb_15_col66.clone() * op1_limb_12_col92.clone())) - + (op0_limb_16_col67.clone() * op1_limb_11_col91.clone())) - + (op0_limb_17_col68.clone() * op1_limb_10_col90.clone())) - + (op0_limb_18_col69.clone() * op1_limb_9_col89.clone())) - + (op0_limb_19_col70.clone() * op1_limb_8_col88.clone())) - + (op0_limb_20_col71.clone() * op1_limb_7_col87.clone())) - + (op0_limb_21_col72.clone() * op1_limb_6_col86.clone())) - + (op0_limb_22_col73.clone() * op1_limb_5_col85.clone())) - + (op0_limb_23_col74.clone() * op1_limb_4_col84.clone())) - + (op0_limb_24_col75.clone() * op1_limb_3_col83.clone())) - + (op0_limb_25_col76.clone() * op1_limb_2_col82.clone())) - + (op0_limb_26_col77.clone() * op1_limb_1_col81.clone())) - + (op0_limb_27_col78.clone() * op1_limb_0_col80.clone())); - let conv_tmp_5745_90 = (((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_1_col52.clone() * op1_limb_27_col107.clone())) - + (op0_limb_2_col53.clone() * op1_limb_26_col106.clone())) - + (op0_limb_3_col54.clone() * op1_limb_25_col105.clone())) - + (op0_limb_4_col55.clone() * op1_limb_24_col104.clone())) - + (op0_limb_5_col56.clone() * op1_limb_23_col103.clone())) - + (op0_limb_6_col57.clone() * op1_limb_22_col102.clone())) - + (op0_limb_7_col58.clone() * op1_limb_21_col101.clone())) - + (op0_limb_8_col59.clone() * op1_limb_20_col100.clone())) - + (op0_limb_9_col60.clone() * op1_limb_19_col99.clone())) - + (op0_limb_10_col61.clone() * op1_limb_18_col98.clone())) - + (op0_limb_11_col62.clone() * op1_limb_17_col97.clone())) - + (op0_limb_12_col63.clone() * op1_limb_16_col96.clone())) - + (op0_limb_13_col64.clone() * op1_limb_15_col95.clone())) - + (op0_limb_14_col65.clone() * op1_limb_14_col94.clone())) - + (op0_limb_15_col66.clone() * op1_limb_13_col93.clone())) - + (op0_limb_16_col67.clone() * op1_limb_12_col92.clone())) - + (op0_limb_17_col68.clone() * op1_limb_11_col91.clone())) - + (op0_limb_18_col69.clone() * op1_limb_10_col90.clone())) - + (op0_limb_19_col70.clone() * op1_limb_9_col89.clone())) - + (op0_limb_20_col71.clone() * op1_limb_8_col88.clone())) - + (op0_limb_21_col72.clone() * op1_limb_7_col87.clone())) - + (op0_limb_22_col73.clone() * op1_limb_6_col86.clone())) - + (op0_limb_23_col74.clone() * op1_limb_5_col85.clone())) - + (op0_limb_24_col75.clone() * op1_limb_4_col84.clone())) - + (op0_limb_25_col76.clone() * op1_limb_3_col83.clone())) - + (op0_limb_26_col77.clone() * op1_limb_2_col82.clone())) - + (op0_limb_27_col78.clone() * op1_limb_1_col81.clone())); - let conv_tmp_5745_91 = ((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_2_col53.clone() * op1_limb_27_col107.clone())) - + (op0_limb_3_col54.clone() * op1_limb_26_col106.clone())) - + (op0_limb_4_col55.clone() * op1_limb_25_col105.clone())) - + (op0_limb_5_col56.clone() * op1_limb_24_col104.clone())) - + (op0_limb_6_col57.clone() * op1_limb_23_col103.clone())) - + (op0_limb_7_col58.clone() * op1_limb_22_col102.clone())) - + (op0_limb_8_col59.clone() * op1_limb_21_col101.clone())) - + (op0_limb_9_col60.clone() * op1_limb_20_col100.clone())) - + (op0_limb_10_col61.clone() * op1_limb_19_col99.clone())) - + (op0_limb_11_col62.clone() * op1_limb_18_col98.clone())) - + (op0_limb_12_col63.clone() * op1_limb_17_col97.clone())) - + (op0_limb_13_col64.clone() * op1_limb_16_col96.clone())) - + (op0_limb_14_col65.clone() * op1_limb_15_col95.clone())) - + (op0_limb_15_col66.clone() * op1_limb_14_col94.clone())) - + (op0_limb_16_col67.clone() * op1_limb_13_col93.clone())) - + (op0_limb_17_col68.clone() * op1_limb_12_col92.clone())) - + (op0_limb_18_col69.clone() * op1_limb_11_col91.clone())) - + (op0_limb_19_col70.clone() * op1_limb_10_col90.clone())) - + (op0_limb_20_col71.clone() * op1_limb_9_col89.clone())) - + (op0_limb_21_col72.clone() * op1_limb_8_col88.clone())) - + (op0_limb_22_col73.clone() * op1_limb_7_col87.clone())) - + (op0_limb_23_col74.clone() * op1_limb_6_col86.clone())) - + (op0_limb_24_col75.clone() * op1_limb_5_col85.clone())) - + (op0_limb_25_col76.clone() * op1_limb_4_col84.clone())) - + (op0_limb_26_col77.clone() * op1_limb_3_col83.clone())) - + (op0_limb_27_col78.clone() * op1_limb_2_col82.clone())); - let conv_tmp_5745_92 = (((((((((((((((((((((((((M31_0.clone() - + (op0_limb_3_col54.clone() * op1_limb_27_col107.clone())) - + (op0_limb_4_col55.clone() * op1_limb_26_col106.clone())) - + (op0_limb_5_col56.clone() * op1_limb_25_col105.clone())) - + (op0_limb_6_col57.clone() * op1_limb_24_col104.clone())) - + (op0_limb_7_col58.clone() * op1_limb_23_col103.clone())) - + (op0_limb_8_col59.clone() * op1_limb_22_col102.clone())) - + (op0_limb_9_col60.clone() * op1_limb_21_col101.clone())) - + (op0_limb_10_col61.clone() * op1_limb_20_col100.clone())) - + (op0_limb_11_col62.clone() * op1_limb_19_col99.clone())) - + (op0_limb_12_col63.clone() * op1_limb_18_col98.clone())) - + (op0_limb_13_col64.clone() * op1_limb_17_col97.clone())) - + (op0_limb_14_col65.clone() * op1_limb_16_col96.clone())) - + (op0_limb_15_col66.clone() * op1_limb_15_col95.clone())) - + (op0_limb_16_col67.clone() * op1_limb_14_col94.clone())) - + (op0_limb_17_col68.clone() * op1_limb_13_col93.clone())) - + (op0_limb_18_col69.clone() * op1_limb_12_col92.clone())) - + (op0_limb_19_col70.clone() * op1_limb_11_col91.clone())) - + (op0_limb_20_col71.clone() * op1_limb_10_col90.clone())) - + (op0_limb_21_col72.clone() * op1_limb_9_col89.clone())) - + (op0_limb_22_col73.clone() * op1_limb_8_col88.clone())) - + (op0_limb_23_col74.clone() * op1_limb_7_col87.clone())) - + (op0_limb_24_col75.clone() * op1_limb_6_col86.clone())) - + (op0_limb_25_col76.clone() * op1_limb_5_col85.clone())) - + (op0_limb_26_col77.clone() * op1_limb_4_col84.clone())) - + (op0_limb_27_col78.clone() * op1_limb_3_col83.clone())); - let conv_tmp_5745_93 = ((((((((((((((((((((((((M31_0.clone() - + (op0_limb_4_col55.clone() * op1_limb_27_col107.clone())) - + (op0_limb_5_col56.clone() * op1_limb_26_col106.clone())) - + (op0_limb_6_col57.clone() * op1_limb_25_col105.clone())) - + (op0_limb_7_col58.clone() * op1_limb_24_col104.clone())) - + (op0_limb_8_col59.clone() * op1_limb_23_col103.clone())) - + (op0_limb_9_col60.clone() * op1_limb_22_col102.clone())) - + (op0_limb_10_col61.clone() * op1_limb_21_col101.clone())) - + (op0_limb_11_col62.clone() * op1_limb_20_col100.clone())) - + (op0_limb_12_col63.clone() * op1_limb_19_col99.clone())) - + (op0_limb_13_col64.clone() * op1_limb_18_col98.clone())) - + (op0_limb_14_col65.clone() * op1_limb_17_col97.clone())) - + (op0_limb_15_col66.clone() * op1_limb_16_col96.clone())) - + (op0_limb_16_col67.clone() * op1_limb_15_col95.clone())) - + (op0_limb_17_col68.clone() * op1_limb_14_col94.clone())) - + (op0_limb_18_col69.clone() * op1_limb_13_col93.clone())) - + (op0_limb_19_col70.clone() * op1_limb_12_col92.clone())) - + (op0_limb_20_col71.clone() * op1_limb_11_col91.clone())) - + (op0_limb_21_col72.clone() * op1_limb_10_col90.clone())) - + (op0_limb_22_col73.clone() * op1_limb_9_col89.clone())) - + (op0_limb_23_col74.clone() * op1_limb_8_col88.clone())) - + (op0_limb_24_col75.clone() * op1_limb_7_col87.clone())) - + (op0_limb_25_col76.clone() * op1_limb_6_col86.clone())) - + (op0_limb_26_col77.clone() * op1_limb_5_col85.clone())) - + (op0_limb_27_col78.clone() * op1_limb_4_col84.clone())); - let conv_tmp_5745_94 = (((((((((((((((((((((((M31_0.clone() - + (op0_limb_5_col56.clone() * op1_limb_27_col107.clone())) - + (op0_limb_6_col57.clone() * op1_limb_26_col106.clone())) - + (op0_limb_7_col58.clone() * op1_limb_25_col105.clone())) - + (op0_limb_8_col59.clone() * op1_limb_24_col104.clone())) - + (op0_limb_9_col60.clone() * op1_limb_23_col103.clone())) - + (op0_limb_10_col61.clone() * op1_limb_22_col102.clone())) - + (op0_limb_11_col62.clone() * op1_limb_21_col101.clone())) - + (op0_limb_12_col63.clone() * op1_limb_20_col100.clone())) - + (op0_limb_13_col64.clone() * op1_limb_19_col99.clone())) - + (op0_limb_14_col65.clone() * op1_limb_18_col98.clone())) - + (op0_limb_15_col66.clone() * op1_limb_17_col97.clone())) - + (op0_limb_16_col67.clone() * op1_limb_16_col96.clone())) - + (op0_limb_17_col68.clone() * op1_limb_15_col95.clone())) - + (op0_limb_18_col69.clone() * op1_limb_14_col94.clone())) - + (op0_limb_19_col70.clone() * op1_limb_13_col93.clone())) - + (op0_limb_20_col71.clone() * op1_limb_12_col92.clone())) - + (op0_limb_21_col72.clone() * op1_limb_11_col91.clone())) - + (op0_limb_22_col73.clone() * op1_limb_10_col90.clone())) - + (op0_limb_23_col74.clone() * op1_limb_9_col89.clone())) - + (op0_limb_24_col75.clone() * op1_limb_8_col88.clone())) - + (op0_limb_25_col76.clone() * op1_limb_7_col87.clone())) - + (op0_limb_26_col77.clone() * op1_limb_6_col86.clone())) - + (op0_limb_27_col78.clone() * op1_limb_5_col85.clone())); - let conv_tmp_5745_95 = ((((((((((((((((((((((M31_0.clone() - + (op0_limb_6_col57.clone() * op1_limb_27_col107.clone())) - + (op0_limb_7_col58.clone() * op1_limb_26_col106.clone())) - + (op0_limb_8_col59.clone() * op1_limb_25_col105.clone())) - + (op0_limb_9_col60.clone() * op1_limb_24_col104.clone())) - + (op0_limb_10_col61.clone() * op1_limb_23_col103.clone())) - + (op0_limb_11_col62.clone() * op1_limb_22_col102.clone())) - + (op0_limb_12_col63.clone() * op1_limb_21_col101.clone())) - + (op0_limb_13_col64.clone() * op1_limb_20_col100.clone())) - + (op0_limb_14_col65.clone() * op1_limb_19_col99.clone())) - + (op0_limb_15_col66.clone() * op1_limb_18_col98.clone())) - + (op0_limb_16_col67.clone() * op1_limb_17_col97.clone())) - + (op0_limb_17_col68.clone() * op1_limb_16_col96.clone())) - + (op0_limb_18_col69.clone() * op1_limb_15_col95.clone())) - + (op0_limb_19_col70.clone() * op1_limb_14_col94.clone())) - + (op0_limb_20_col71.clone() * op1_limb_13_col93.clone())) - + (op0_limb_21_col72.clone() * op1_limb_12_col92.clone())) - + (op0_limb_22_col73.clone() * op1_limb_11_col91.clone())) - + (op0_limb_23_col74.clone() * op1_limb_10_col90.clone())) - + (op0_limb_24_col75.clone() * op1_limb_9_col89.clone())) - + (op0_limb_25_col76.clone() * op1_limb_8_col88.clone())) - + (op0_limb_26_col77.clone() * op1_limb_7_col87.clone())) - + (op0_limb_27_col78.clone() * op1_limb_6_col86.clone())); - let conv_tmp_5745_96 = (((((((((((((((((((((M31_0.clone() - + (op0_limb_7_col58.clone() * op1_limb_27_col107.clone())) - + (op0_limb_8_col59.clone() * op1_limb_26_col106.clone())) - + (op0_limb_9_col60.clone() * op1_limb_25_col105.clone())) - + (op0_limb_10_col61.clone() * op1_limb_24_col104.clone())) - + (op0_limb_11_col62.clone() * op1_limb_23_col103.clone())) - + (op0_limb_12_col63.clone() * op1_limb_22_col102.clone())) - + (op0_limb_13_col64.clone() * op1_limb_21_col101.clone())) - + (op0_limb_14_col65.clone() * op1_limb_20_col100.clone())) - + (op0_limb_15_col66.clone() * op1_limb_19_col99.clone())) - + (op0_limb_16_col67.clone() * op1_limb_18_col98.clone())) - + (op0_limb_17_col68.clone() * op1_limb_17_col97.clone())) - + (op0_limb_18_col69.clone() * op1_limb_16_col96.clone())) - + (op0_limb_19_col70.clone() * op1_limb_15_col95.clone())) - + (op0_limb_20_col71.clone() * op1_limb_14_col94.clone())) - + (op0_limb_21_col72.clone() * op1_limb_13_col93.clone())) - + (op0_limb_22_col73.clone() * op1_limb_12_col92.clone())) - + (op0_limb_23_col74.clone() * op1_limb_11_col91.clone())) - + (op0_limb_24_col75.clone() * op1_limb_10_col90.clone())) - + (op0_limb_25_col76.clone() * op1_limb_9_col89.clone())) - + (op0_limb_26_col77.clone() * op1_limb_8_col88.clone())) - + (op0_limb_27_col78.clone() * op1_limb_7_col87.clone())); - let conv_tmp_5745_97 = ((((((((((((((((((((M31_0.clone() - + (op0_limb_8_col59.clone() * op1_limb_27_col107.clone())) - + (op0_limb_9_col60.clone() * op1_limb_26_col106.clone())) - + (op0_limb_10_col61.clone() * op1_limb_25_col105.clone())) - + (op0_limb_11_col62.clone() * op1_limb_24_col104.clone())) - + (op0_limb_12_col63.clone() * op1_limb_23_col103.clone())) - + (op0_limb_13_col64.clone() * op1_limb_22_col102.clone())) - + (op0_limb_14_col65.clone() * op1_limb_21_col101.clone())) - + (op0_limb_15_col66.clone() * op1_limb_20_col100.clone())) - + (op0_limb_16_col67.clone() * op1_limb_19_col99.clone())) - + (op0_limb_17_col68.clone() * op1_limb_18_col98.clone())) - + (op0_limb_18_col69.clone() * op1_limb_17_col97.clone())) - + (op0_limb_19_col70.clone() * op1_limb_16_col96.clone())) - + (op0_limb_20_col71.clone() * op1_limb_15_col95.clone())) - + (op0_limb_21_col72.clone() * op1_limb_14_col94.clone())) - + (op0_limb_22_col73.clone() * op1_limb_13_col93.clone())) - + (op0_limb_23_col74.clone() * op1_limb_12_col92.clone())) - + (op0_limb_24_col75.clone() * op1_limb_11_col91.clone())) - + (op0_limb_25_col76.clone() * op1_limb_10_col90.clone())) - + (op0_limb_26_col77.clone() * op1_limb_9_col89.clone())) - + (op0_limb_27_col78.clone() * op1_limb_8_col88.clone())); - let conv_tmp_5745_98 = (((((((((((((((((((M31_0.clone() - + (op0_limb_9_col60.clone() * op1_limb_27_col107.clone())) - + (op0_limb_10_col61.clone() * op1_limb_26_col106.clone())) - + (op0_limb_11_col62.clone() * op1_limb_25_col105.clone())) - + (op0_limb_12_col63.clone() * op1_limb_24_col104.clone())) - + (op0_limb_13_col64.clone() * op1_limb_23_col103.clone())) - + (op0_limb_14_col65.clone() * op1_limb_22_col102.clone())) - + (op0_limb_15_col66.clone() * op1_limb_21_col101.clone())) - + (op0_limb_16_col67.clone() * op1_limb_20_col100.clone())) - + (op0_limb_17_col68.clone() * op1_limb_19_col99.clone())) - + (op0_limb_18_col69.clone() * op1_limb_18_col98.clone())) - + (op0_limb_19_col70.clone() * op1_limb_17_col97.clone())) - + (op0_limb_20_col71.clone() * op1_limb_16_col96.clone())) - + (op0_limb_21_col72.clone() * op1_limb_15_col95.clone())) - + (op0_limb_22_col73.clone() * op1_limb_14_col94.clone())) - + (op0_limb_23_col74.clone() * op1_limb_13_col93.clone())) - + (op0_limb_24_col75.clone() * op1_limb_12_col92.clone())) - + (op0_limb_25_col76.clone() * op1_limb_11_col91.clone())) - + (op0_limb_26_col77.clone() * op1_limb_10_col90.clone())) - + (op0_limb_27_col78.clone() * op1_limb_9_col89.clone())); - let conv_tmp_5745_99 = ((((((((((((((((((M31_0.clone() - + (op0_limb_10_col61.clone() * op1_limb_27_col107.clone())) - + (op0_limb_11_col62.clone() * op1_limb_26_col106.clone())) - + (op0_limb_12_col63.clone() * op1_limb_25_col105.clone())) - + (op0_limb_13_col64.clone() * op1_limb_24_col104.clone())) - + (op0_limb_14_col65.clone() * op1_limb_23_col103.clone())) - + (op0_limb_15_col66.clone() * op1_limb_22_col102.clone())) - + (op0_limb_16_col67.clone() * op1_limb_21_col101.clone())) - + (op0_limb_17_col68.clone() * op1_limb_20_col100.clone())) - + (op0_limb_18_col69.clone() * op1_limb_19_col99.clone())) - + (op0_limb_19_col70.clone() * op1_limb_18_col98.clone())) - + (op0_limb_20_col71.clone() * op1_limb_17_col97.clone())) - + (op0_limb_21_col72.clone() * op1_limb_16_col96.clone())) - + (op0_limb_22_col73.clone() * op1_limb_15_col95.clone())) - + (op0_limb_23_col74.clone() * op1_limb_14_col94.clone())) - + (op0_limb_24_col75.clone() * op1_limb_13_col93.clone())) - + (op0_limb_25_col76.clone() * op1_limb_12_col92.clone())) - + (op0_limb_26_col77.clone() * op1_limb_11_col91.clone())) - + (op0_limb_27_col78.clone() * op1_limb_10_col90.clone())); - let conv_tmp_5745_100 = (((((((((((((((((M31_0.clone() - + (op0_limb_11_col62.clone() * op1_limb_27_col107.clone())) - + (op0_limb_12_col63.clone() * op1_limb_26_col106.clone())) - + (op0_limb_13_col64.clone() * op1_limb_25_col105.clone())) - + (op0_limb_14_col65.clone() * op1_limb_24_col104.clone())) - + (op0_limb_15_col66.clone() * op1_limb_23_col103.clone())) - + (op0_limb_16_col67.clone() * op1_limb_22_col102.clone())) - + (op0_limb_17_col68.clone() * op1_limb_21_col101.clone())) - + (op0_limb_18_col69.clone() * op1_limb_20_col100.clone())) - + (op0_limb_19_col70.clone() * op1_limb_19_col99.clone())) - + (op0_limb_20_col71.clone() * op1_limb_18_col98.clone())) - + (op0_limb_21_col72.clone() * op1_limb_17_col97.clone())) - + (op0_limb_22_col73.clone() * op1_limb_16_col96.clone())) - + (op0_limb_23_col74.clone() * op1_limb_15_col95.clone())) - + (op0_limb_24_col75.clone() * op1_limb_14_col94.clone())) - + (op0_limb_25_col76.clone() * op1_limb_13_col93.clone())) - + (op0_limb_26_col77.clone() * op1_limb_12_col92.clone())) - + (op0_limb_27_col78.clone() * op1_limb_11_col91.clone())); - let conv_tmp_5745_101 = ((((((((((((((((M31_0.clone() - + (op0_limb_12_col63.clone() * op1_limb_27_col107.clone())) - + (op0_limb_13_col64.clone() * op1_limb_26_col106.clone())) - + (op0_limb_14_col65.clone() * op1_limb_25_col105.clone())) - + (op0_limb_15_col66.clone() * op1_limb_24_col104.clone())) - + (op0_limb_16_col67.clone() * op1_limb_23_col103.clone())) - + (op0_limb_17_col68.clone() * op1_limb_22_col102.clone())) - + (op0_limb_18_col69.clone() * op1_limb_21_col101.clone())) - + (op0_limb_19_col70.clone() * op1_limb_20_col100.clone())) - + (op0_limb_20_col71.clone() * op1_limb_19_col99.clone())) - + (op0_limb_21_col72.clone() * op1_limb_18_col98.clone())) - + (op0_limb_22_col73.clone() * op1_limb_17_col97.clone())) - + (op0_limb_23_col74.clone() * op1_limb_16_col96.clone())) - + (op0_limb_24_col75.clone() * op1_limb_15_col95.clone())) - + (op0_limb_25_col76.clone() * op1_limb_14_col94.clone())) - + (op0_limb_26_col77.clone() * op1_limb_13_col93.clone())) - + (op0_limb_27_col78.clone() * op1_limb_12_col92.clone())); - let conv_tmp_5745_102 = (((((((((((((((M31_0.clone() - + (op0_limb_13_col64.clone() * op1_limb_27_col107.clone())) - + (op0_limb_14_col65.clone() * op1_limb_26_col106.clone())) - + (op0_limb_15_col66.clone() * op1_limb_25_col105.clone())) - + (op0_limb_16_col67.clone() * op1_limb_24_col104.clone())) - + (op0_limb_17_col68.clone() * op1_limb_23_col103.clone())) - + (op0_limb_18_col69.clone() * op1_limb_22_col102.clone())) - + (op0_limb_19_col70.clone() * op1_limb_21_col101.clone())) - + (op0_limb_20_col71.clone() * op1_limb_20_col100.clone())) - + (op0_limb_21_col72.clone() * op1_limb_19_col99.clone())) - + (op0_limb_22_col73.clone() * op1_limb_18_col98.clone())) - + (op0_limb_23_col74.clone() * op1_limb_17_col97.clone())) - + (op0_limb_24_col75.clone() * op1_limb_16_col96.clone())) - + (op0_limb_25_col76.clone() * op1_limb_15_col95.clone())) - + (op0_limb_26_col77.clone() * op1_limb_14_col94.clone())) - + (op0_limb_27_col78.clone() * op1_limb_13_col93.clone())); - let conv_tmp_5745_103 = ((((((((((((((M31_0.clone() - + (op0_limb_14_col65.clone() * op1_limb_27_col107.clone())) - + (op0_limb_15_col66.clone() * op1_limb_26_col106.clone())) - + (op0_limb_16_col67.clone() * op1_limb_25_col105.clone())) - + (op0_limb_17_col68.clone() * op1_limb_24_col104.clone())) - + (op0_limb_18_col69.clone() * op1_limb_23_col103.clone())) - + (op0_limb_19_col70.clone() * op1_limb_22_col102.clone())) - + (op0_limb_20_col71.clone() * op1_limb_21_col101.clone())) - + (op0_limb_21_col72.clone() * op1_limb_20_col100.clone())) - + (op0_limb_22_col73.clone() * op1_limb_19_col99.clone())) - + (op0_limb_23_col74.clone() * op1_limb_18_col98.clone())) - + (op0_limb_24_col75.clone() * op1_limb_17_col97.clone())) - + (op0_limb_25_col76.clone() * op1_limb_16_col96.clone())) - + (op0_limb_26_col77.clone() * op1_limb_15_col95.clone())) - + (op0_limb_27_col78.clone() * op1_limb_14_col94.clone())); - let conv_tmp_5745_104 = (((((((((((((M31_0.clone() - + (op0_limb_15_col66.clone() * op1_limb_27_col107.clone())) - + (op0_limb_16_col67.clone() * op1_limb_26_col106.clone())) - + (op0_limb_17_col68.clone() * op1_limb_25_col105.clone())) - + (op0_limb_18_col69.clone() * op1_limb_24_col104.clone())) - + (op0_limb_19_col70.clone() * op1_limb_23_col103.clone())) - + (op0_limb_20_col71.clone() * op1_limb_22_col102.clone())) - + (op0_limb_21_col72.clone() * op1_limb_21_col101.clone())) - + (op0_limb_22_col73.clone() * op1_limb_20_col100.clone())) - + (op0_limb_23_col74.clone() * op1_limb_19_col99.clone())) - + (op0_limb_24_col75.clone() * op1_limb_18_col98.clone())) - + (op0_limb_25_col76.clone() * op1_limb_17_col97.clone())) - + (op0_limb_26_col77.clone() * op1_limb_16_col96.clone())) - + (op0_limb_27_col78.clone() * op1_limb_15_col95.clone())); - let conv_tmp_5745_105 = ((((((((((((M31_0.clone() - + (op0_limb_16_col67.clone() * op1_limb_27_col107.clone())) - + (op0_limb_17_col68.clone() * op1_limb_26_col106.clone())) - + (op0_limb_18_col69.clone() * op1_limb_25_col105.clone())) - + (op0_limb_19_col70.clone() * op1_limb_24_col104.clone())) - + (op0_limb_20_col71.clone() * op1_limb_23_col103.clone())) - + (op0_limb_21_col72.clone() * op1_limb_22_col102.clone())) - + (op0_limb_22_col73.clone() * op1_limb_21_col101.clone())) - + (op0_limb_23_col74.clone() * op1_limb_20_col100.clone())) - + (op0_limb_24_col75.clone() * op1_limb_19_col99.clone())) - + (op0_limb_25_col76.clone() * op1_limb_18_col98.clone())) - + (op0_limb_26_col77.clone() * op1_limb_17_col97.clone())) - + (op0_limb_27_col78.clone() * op1_limb_16_col96.clone())); - let conv_tmp_5745_106 = (((((((((((M31_0.clone() - + (op0_limb_17_col68.clone() * op1_limb_27_col107.clone())) - + (op0_limb_18_col69.clone() * op1_limb_26_col106.clone())) - + (op0_limb_19_col70.clone() * op1_limb_25_col105.clone())) - + (op0_limb_20_col71.clone() * op1_limb_24_col104.clone())) - + (op0_limb_21_col72.clone() * op1_limb_23_col103.clone())) - + (op0_limb_22_col73.clone() * op1_limb_22_col102.clone())) - + (op0_limb_23_col74.clone() * op1_limb_21_col101.clone())) - + (op0_limb_24_col75.clone() * op1_limb_20_col100.clone())) - + (op0_limb_25_col76.clone() * op1_limb_19_col99.clone())) - + (op0_limb_26_col77.clone() * op1_limb_18_col98.clone())) - + (op0_limb_27_col78.clone() * op1_limb_17_col97.clone())); - let conv_tmp_5745_107 = ((((((((((M31_0.clone() - + (op0_limb_18_col69.clone() * op1_limb_27_col107.clone())) - + (op0_limb_19_col70.clone() * op1_limb_26_col106.clone())) - + (op0_limb_20_col71.clone() * op1_limb_25_col105.clone())) - + (op0_limb_21_col72.clone() * op1_limb_24_col104.clone())) - + (op0_limb_22_col73.clone() * op1_limb_23_col103.clone())) - + (op0_limb_23_col74.clone() * op1_limb_22_col102.clone())) - + (op0_limb_24_col75.clone() * op1_limb_21_col101.clone())) - + (op0_limb_25_col76.clone() * op1_limb_20_col100.clone())) - + (op0_limb_26_col77.clone() * op1_limb_19_col99.clone())) - + (op0_limb_27_col78.clone() * op1_limb_18_col98.clone())); - let conv_tmp_5745_108 = (((((((((M31_0.clone() - + (op0_limb_19_col70.clone() * op1_limb_27_col107.clone())) - + (op0_limb_20_col71.clone() * op1_limb_26_col106.clone())) - + (op0_limb_21_col72.clone() * op1_limb_25_col105.clone())) - + (op0_limb_22_col73.clone() * op1_limb_24_col104.clone())) - + (op0_limb_23_col74.clone() * op1_limb_23_col103.clone())) - + (op0_limb_24_col75.clone() * op1_limb_22_col102.clone())) - + (op0_limb_25_col76.clone() * op1_limb_21_col101.clone())) - + (op0_limb_26_col77.clone() * op1_limb_20_col100.clone())) - + (op0_limb_27_col78.clone() * op1_limb_19_col99.clone())); - let conv_tmp_5745_109 = ((((((((M31_0.clone() - + (op0_limb_20_col71.clone() * op1_limb_27_col107.clone())) - + (op0_limb_21_col72.clone() * op1_limb_26_col106.clone())) - + (op0_limb_22_col73.clone() * op1_limb_25_col105.clone())) - + (op0_limb_23_col74.clone() * op1_limb_24_col104.clone())) - + (op0_limb_24_col75.clone() * op1_limb_23_col103.clone())) - + (op0_limb_25_col76.clone() * op1_limb_22_col102.clone())) - + (op0_limb_26_col77.clone() * op1_limb_21_col101.clone())) - + (op0_limb_27_col78.clone() * op1_limb_20_col100.clone())); - let conv_tmp_5745_110 = (((((((M31_0.clone() - + (op0_limb_21_col72.clone() * op1_limb_27_col107.clone())) - + (op0_limb_22_col73.clone() * op1_limb_26_col106.clone())) - + (op0_limb_23_col74.clone() * op1_limb_25_col105.clone())) - + (op0_limb_24_col75.clone() * op1_limb_24_col104.clone())) - + (op0_limb_25_col76.clone() * op1_limb_23_col103.clone())) - + (op0_limb_26_col77.clone() * op1_limb_22_col102.clone())) - + (op0_limb_27_col78.clone() * op1_limb_21_col101.clone())); - let conv_tmp_5745_111 = ((((((M31_0.clone() - + (op0_limb_22_col73.clone() * op1_limb_27_col107.clone())) - + (op0_limb_23_col74.clone() * op1_limb_26_col106.clone())) - + (op0_limb_24_col75.clone() * op1_limb_25_col105.clone())) - + (op0_limb_25_col76.clone() * op1_limb_24_col104.clone())) - + (op0_limb_26_col77.clone() * op1_limb_23_col103.clone())) - + (op0_limb_27_col78.clone() * op1_limb_22_col102.clone())); - let conv_tmp_5745_112 = (((((M31_0.clone() - + (op0_limb_23_col74.clone() * op1_limb_27_col107.clone())) - + (op0_limb_24_col75.clone() * op1_limb_26_col106.clone())) - + (op0_limb_25_col76.clone() * op1_limb_25_col105.clone())) - + (op0_limb_26_col77.clone() * op1_limb_24_col104.clone())) - + (op0_limb_27_col78.clone() * op1_limb_23_col103.clone())); - let conv_tmp_5745_113 = ((((M31_0.clone() - + (op0_limb_24_col75.clone() * op1_limb_27_col107.clone())) - + (op0_limb_25_col76.clone() * op1_limb_26_col106.clone())) - + (op0_limb_26_col77.clone() * op1_limb_25_col105.clone())) - + (op0_limb_27_col78.clone() * op1_limb_24_col104.clone())); - let conv_tmp_5745_114 = (((M31_0.clone() - + (op0_limb_25_col76.clone() * op1_limb_27_col107.clone())) - + (op0_limb_26_col77.clone() * op1_limb_26_col106.clone())) - + (op0_limb_27_col78.clone() * op1_limb_25_col105.clone())); - let conv_tmp_5745_115 = ((M31_0.clone() - + (op0_limb_26_col77.clone() * op1_limb_27_col107.clone())) - + (op0_limb_27_col78.clone() * op1_limb_26_col106.clone())); - let conv_tmp_5745_116 = - (M31_0.clone() + (op0_limb_27_col78.clone() * op1_limb_27_col107.clone())); - let conv_mod_tmp_5745_117 = (((M31_0.clone() - + (M31_32.clone() * conv_tmp_5745_62.clone())) - - (M31_4.clone() * conv_tmp_5745_83.clone())) - + (M31_8.clone() * conv_tmp_5745_111.clone())); - let conv_mod_tmp_5745_118 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_62.clone())) - + (M31_32.clone() * conv_tmp_5745_63.clone())) - - (M31_4.clone() * conv_tmp_5745_84.clone())) - + (M31_8.clone() * conv_tmp_5745_112.clone())); - let conv_mod_tmp_5745_119 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_63.clone())) - + (M31_32.clone() * conv_tmp_5745_64.clone())) - - (M31_4.clone() * conv_tmp_5745_85.clone())) - + (M31_8.clone() * conv_tmp_5745_113.clone())); - let conv_mod_tmp_5745_120 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_64.clone())) - + (M31_32.clone() * conv_tmp_5745_65.clone())) - - (M31_4.clone() * conv_tmp_5745_86.clone())) - + (M31_8.clone() * conv_tmp_5745_114.clone())); - let conv_mod_tmp_5745_121 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_65.clone())) - + (M31_32.clone() * conv_tmp_5745_66.clone())) - - (M31_4.clone() * conv_tmp_5745_87.clone())) - + (M31_8.clone() * conv_tmp_5745_115.clone())); - let conv_mod_tmp_5745_122 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_66.clone())) - + (M31_32.clone() * conv_tmp_5745_67.clone())) - - (M31_4.clone() * conv_tmp_5745_88.clone())) - + (M31_8.clone() * conv_tmp_5745_116.clone())); - let conv_mod_tmp_5745_123 = (((M31_0.clone() - + (M31_1.clone() * conv_tmp_5745_67.clone())) - + (M31_32.clone() * conv_tmp_5745_68.clone())) - - (M31_4.clone() * conv_tmp_5745_89.clone())); - let conv_mod_tmp_5745_124 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_62.clone())) - + (M31_1.clone() * conv_tmp_5745_68.clone())) - + (M31_32.clone() * conv_tmp_5745_69.clone())) - - (M31_4.clone() * conv_tmp_5745_90.clone())); - let conv_mod_tmp_5745_125 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_63.clone())) - + (M31_1.clone() * conv_tmp_5745_69.clone())) - + (M31_32.clone() * conv_tmp_5745_70.clone())) - - (M31_4.clone() * conv_tmp_5745_91.clone())); - let conv_mod_tmp_5745_126 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_64.clone())) - + (M31_1.clone() * conv_tmp_5745_70.clone())) - + (M31_32.clone() * conv_tmp_5745_71.clone())) - - (M31_4.clone() * conv_tmp_5745_92.clone())); - let conv_mod_tmp_5745_127 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_65.clone())) - + (M31_1.clone() * conv_tmp_5745_71.clone())) - + (M31_32.clone() * conv_tmp_5745_72.clone())) - - (M31_4.clone() * conv_tmp_5745_93.clone())); - let conv_mod_tmp_5745_128 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_66.clone())) - + (M31_1.clone() * conv_tmp_5745_72.clone())) - + (M31_32.clone() * conv_tmp_5745_73.clone())) - - (M31_4.clone() * conv_tmp_5745_94.clone())); - let conv_mod_tmp_5745_129 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_67.clone())) - + (M31_1.clone() * conv_tmp_5745_73.clone())) - + (M31_32.clone() * conv_tmp_5745_74.clone())) - - (M31_4.clone() * conv_tmp_5745_95.clone())); - let conv_mod_tmp_5745_130 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_68.clone())) - + (M31_1.clone() * conv_tmp_5745_74.clone())) - + (M31_32.clone() * conv_tmp_5745_75.clone())) - - (M31_4.clone() * conv_tmp_5745_96.clone())); - let conv_mod_tmp_5745_131 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_69.clone())) - + (M31_1.clone() * conv_tmp_5745_75.clone())) - + (M31_32.clone() * conv_tmp_5745_76.clone())) - - (M31_4.clone() * conv_tmp_5745_97.clone())); - let conv_mod_tmp_5745_132 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_70.clone())) - + (M31_1.clone() * conv_tmp_5745_76.clone())) - + (M31_32.clone() * conv_tmp_5745_77.clone())) - - (M31_4.clone() * conv_tmp_5745_98.clone())); - let conv_mod_tmp_5745_133 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_71.clone())) - + (M31_1.clone() * conv_tmp_5745_77.clone())) - + (M31_32.clone() * conv_tmp_5745_78.clone())) - - (M31_4.clone() * conv_tmp_5745_99.clone())); - let conv_mod_tmp_5745_134 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_72.clone())) - + (M31_1.clone() * conv_tmp_5745_78.clone())) - + (M31_32.clone() * conv_tmp_5745_79.clone())) - - (M31_4.clone() * conv_tmp_5745_100.clone())); - let conv_mod_tmp_5745_135 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_73.clone())) - + (M31_1.clone() * conv_tmp_5745_79.clone())) - + (M31_32.clone() * conv_tmp_5745_80.clone())) - - (M31_4.clone() * conv_tmp_5745_101.clone())); - let conv_mod_tmp_5745_136 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_74.clone())) - + (M31_1.clone() * conv_tmp_5745_80.clone())) - + (M31_32.clone() * conv_tmp_5745_81.clone())) - - (M31_4.clone() * conv_tmp_5745_102.clone())); - let conv_mod_tmp_5745_137 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_75.clone())) - + (M31_1.clone() * conv_tmp_5745_81.clone())) - + (M31_32.clone() * conv_tmp_5745_82.clone())) - - (M31_4.clone() * conv_tmp_5745_103.clone())); - let conv_mod_tmp_5745_138 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_76.clone())) - + (M31_1.clone() * conv_tmp_5745_82.clone())) - - (M31_4.clone() * conv_tmp_5745_104.clone())) - + (M31_64.clone() * conv_tmp_5745_111.clone())); - let conv_mod_tmp_5745_139 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_77.clone())) - - (M31_4.clone() * conv_tmp_5745_105.clone())) - + (M31_2.clone() * conv_tmp_5745_111.clone())) - + (M31_64.clone() * conv_tmp_5745_112.clone())); - let conv_mod_tmp_5745_140 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_78.clone())) - - (M31_4.clone() * conv_tmp_5745_106.clone())) - + (M31_2.clone() * conv_tmp_5745_112.clone())) - + (M31_64.clone() * conv_tmp_5745_113.clone())); - let conv_mod_tmp_5745_141 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_79.clone())) - - (M31_4.clone() * conv_tmp_5745_107.clone())) - + (M31_2.clone() * conv_tmp_5745_113.clone())) - + (M31_64.clone() * conv_tmp_5745_114.clone())); - let conv_mod_tmp_5745_142 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_80.clone())) - - (M31_4.clone() * conv_tmp_5745_108.clone())) - + (M31_2.clone() * conv_tmp_5745_114.clone())) - + (M31_64.clone() * conv_tmp_5745_115.clone())); - let conv_mod_tmp_5745_143 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_81.clone())) - - (M31_4.clone() * conv_tmp_5745_109.clone())) - + (M31_2.clone() * conv_tmp_5745_115.clone())) - + (M31_64.clone() * conv_tmp_5745_116.clone())); - let conv_mod_tmp_5745_144 = (((M31_0.clone() - + (M31_2.clone() * conv_tmp_5745_82.clone())) - - (M31_4.clone() * conv_tmp_5745_110.clone())) - + (M31_2.clone() * conv_tmp_5745_116.clone())); + let conv_tmp_5745_62 = eval.add_intermediate( + ((M31_0.clone() - mul_res_limb_0_col137.clone()) + + (op0_limb_0_col51.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_63 = eval.add_intermediate( + (((M31_0.clone() - mul_res_limb_1_col138.clone()) + + (op0_limb_0_col51.clone() * op1_limb_1_col81.clone())) + + (op0_limb_1_col52.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_64 = eval.add_intermediate( + ((((M31_0.clone() - mul_res_limb_2_col139.clone()) + + (op0_limb_0_col51.clone() * op1_limb_2_col82.clone())) + + (op0_limb_1_col52.clone() * op1_limb_1_col81.clone())) + + (op0_limb_2_col53.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_65 = eval.add_intermediate( + (((((M31_0.clone() - mul_res_limb_3_col140.clone()) + + (op0_limb_0_col51.clone() * op1_limb_3_col83.clone())) + + (op0_limb_1_col52.clone() * op1_limb_2_col82.clone())) + + (op0_limb_2_col53.clone() * op1_limb_1_col81.clone())) + + (op0_limb_3_col54.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_66 = eval.add_intermediate( + ((((((M31_0.clone() - mul_res_limb_4_col141.clone()) + + (op0_limb_0_col51.clone() * op1_limb_4_col84.clone())) + + (op0_limb_1_col52.clone() * op1_limb_3_col83.clone())) + + (op0_limb_2_col53.clone() * op1_limb_2_col82.clone())) + + (op0_limb_3_col54.clone() * op1_limb_1_col81.clone())) + + (op0_limb_4_col55.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_67 = eval.add_intermediate( + (((((((M31_0.clone() - mul_res_limb_5_col142.clone()) + + (op0_limb_0_col51.clone() * op1_limb_5_col85.clone())) + + (op0_limb_1_col52.clone() * op1_limb_4_col84.clone())) + + (op0_limb_2_col53.clone() * op1_limb_3_col83.clone())) + + (op0_limb_3_col54.clone() * op1_limb_2_col82.clone())) + + (op0_limb_4_col55.clone() * op1_limb_1_col81.clone())) + + (op0_limb_5_col56.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_68 = eval.add_intermediate( + ((((((((M31_0.clone() - mul_res_limb_6_col143.clone()) + + (op0_limb_0_col51.clone() * op1_limb_6_col86.clone())) + + (op0_limb_1_col52.clone() * op1_limb_5_col85.clone())) + + (op0_limb_2_col53.clone() * op1_limb_4_col84.clone())) + + (op0_limb_3_col54.clone() * op1_limb_3_col83.clone())) + + (op0_limb_4_col55.clone() * op1_limb_2_col82.clone())) + + (op0_limb_5_col56.clone() * op1_limb_1_col81.clone())) + + (op0_limb_6_col57.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_69 = eval.add_intermediate( + (((((((((M31_0.clone() - mul_res_limb_7_col144.clone()) + + (op0_limb_0_col51.clone() * op1_limb_7_col87.clone())) + + (op0_limb_1_col52.clone() * op1_limb_6_col86.clone())) + + (op0_limb_2_col53.clone() * op1_limb_5_col85.clone())) + + (op0_limb_3_col54.clone() * op1_limb_4_col84.clone())) + + (op0_limb_4_col55.clone() * op1_limb_3_col83.clone())) + + (op0_limb_5_col56.clone() * op1_limb_2_col82.clone())) + + (op0_limb_6_col57.clone() * op1_limb_1_col81.clone())) + + (op0_limb_7_col58.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_70 = eval.add_intermediate( + ((((((((((M31_0.clone() - mul_res_limb_8_col145.clone()) + + (op0_limb_0_col51.clone() * op1_limb_8_col88.clone())) + + (op0_limb_1_col52.clone() * op1_limb_7_col87.clone())) + + (op0_limb_2_col53.clone() * op1_limb_6_col86.clone())) + + (op0_limb_3_col54.clone() * op1_limb_5_col85.clone())) + + (op0_limb_4_col55.clone() * op1_limb_4_col84.clone())) + + (op0_limb_5_col56.clone() * op1_limb_3_col83.clone())) + + (op0_limb_6_col57.clone() * op1_limb_2_col82.clone())) + + (op0_limb_7_col58.clone() * op1_limb_1_col81.clone())) + + (op0_limb_8_col59.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_71 = eval.add_intermediate( + (((((((((((M31_0.clone() - mul_res_limb_9_col146.clone()) + + (op0_limb_0_col51.clone() * op1_limb_9_col89.clone())) + + (op0_limb_1_col52.clone() * op1_limb_8_col88.clone())) + + (op0_limb_2_col53.clone() * op1_limb_7_col87.clone())) + + (op0_limb_3_col54.clone() * op1_limb_6_col86.clone())) + + (op0_limb_4_col55.clone() * op1_limb_5_col85.clone())) + + (op0_limb_5_col56.clone() * op1_limb_4_col84.clone())) + + (op0_limb_6_col57.clone() * op1_limb_3_col83.clone())) + + (op0_limb_7_col58.clone() * op1_limb_2_col82.clone())) + + (op0_limb_8_col59.clone() * op1_limb_1_col81.clone())) + + (op0_limb_9_col60.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_72 = eval.add_intermediate( + ((((((((((((M31_0.clone() - mul_res_limb_10_col147.clone()) + + (op0_limb_0_col51.clone() * op1_limb_10_col90.clone())) + + (op0_limb_1_col52.clone() * op1_limb_9_col89.clone())) + + (op0_limb_2_col53.clone() * op1_limb_8_col88.clone())) + + (op0_limb_3_col54.clone() * op1_limb_7_col87.clone())) + + (op0_limb_4_col55.clone() * op1_limb_6_col86.clone())) + + (op0_limb_5_col56.clone() * op1_limb_5_col85.clone())) + + (op0_limb_6_col57.clone() * op1_limb_4_col84.clone())) + + (op0_limb_7_col58.clone() * op1_limb_3_col83.clone())) + + (op0_limb_8_col59.clone() * op1_limb_2_col82.clone())) + + (op0_limb_9_col60.clone() * op1_limb_1_col81.clone())) + + (op0_limb_10_col61.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_73 = eval.add_intermediate( + (((((((((((((M31_0.clone() - mul_res_limb_11_col148.clone()) + + (op0_limb_0_col51.clone() * op1_limb_11_col91.clone())) + + (op0_limb_1_col52.clone() * op1_limb_10_col90.clone())) + + (op0_limb_2_col53.clone() * op1_limb_9_col89.clone())) + + (op0_limb_3_col54.clone() * op1_limb_8_col88.clone())) + + (op0_limb_4_col55.clone() * op1_limb_7_col87.clone())) + + (op0_limb_5_col56.clone() * op1_limb_6_col86.clone())) + + (op0_limb_6_col57.clone() * op1_limb_5_col85.clone())) + + (op0_limb_7_col58.clone() * op1_limb_4_col84.clone())) + + (op0_limb_8_col59.clone() * op1_limb_3_col83.clone())) + + (op0_limb_9_col60.clone() * op1_limb_2_col82.clone())) + + (op0_limb_10_col61.clone() * op1_limb_1_col81.clone())) + + (op0_limb_11_col62.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_74 = eval.add_intermediate( + ((((((((((((((M31_0.clone() - mul_res_limb_12_col149.clone()) + + (op0_limb_0_col51.clone() * op1_limb_12_col92.clone())) + + (op0_limb_1_col52.clone() * op1_limb_11_col91.clone())) + + (op0_limb_2_col53.clone() * op1_limb_10_col90.clone())) + + (op0_limb_3_col54.clone() * op1_limb_9_col89.clone())) + + (op0_limb_4_col55.clone() * op1_limb_8_col88.clone())) + + (op0_limb_5_col56.clone() * op1_limb_7_col87.clone())) + + (op0_limb_6_col57.clone() * op1_limb_6_col86.clone())) + + (op0_limb_7_col58.clone() * op1_limb_5_col85.clone())) + + (op0_limb_8_col59.clone() * op1_limb_4_col84.clone())) + + (op0_limb_9_col60.clone() * op1_limb_3_col83.clone())) + + (op0_limb_10_col61.clone() * op1_limb_2_col82.clone())) + + (op0_limb_11_col62.clone() * op1_limb_1_col81.clone())) + + (op0_limb_12_col63.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_75 = eval.add_intermediate( + (((((((((((((((M31_0.clone() - mul_res_limb_13_col150.clone()) + + (op0_limb_0_col51.clone() * op1_limb_13_col93.clone())) + + (op0_limb_1_col52.clone() * op1_limb_12_col92.clone())) + + (op0_limb_2_col53.clone() * op1_limb_11_col91.clone())) + + (op0_limb_3_col54.clone() * op1_limb_10_col90.clone())) + + (op0_limb_4_col55.clone() * op1_limb_9_col89.clone())) + + (op0_limb_5_col56.clone() * op1_limb_8_col88.clone())) + + (op0_limb_6_col57.clone() * op1_limb_7_col87.clone())) + + (op0_limb_7_col58.clone() * op1_limb_6_col86.clone())) + + (op0_limb_8_col59.clone() * op1_limb_5_col85.clone())) + + (op0_limb_9_col60.clone() * op1_limb_4_col84.clone())) + + (op0_limb_10_col61.clone() * op1_limb_3_col83.clone())) + + (op0_limb_11_col62.clone() * op1_limb_2_col82.clone())) + + (op0_limb_12_col63.clone() * op1_limb_1_col81.clone())) + + (op0_limb_13_col64.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_76 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() - mul_res_limb_14_col151.clone()) + + (op0_limb_0_col51.clone() * op1_limb_14_col94.clone())) + + (op0_limb_1_col52.clone() * op1_limb_13_col93.clone())) + + (op0_limb_2_col53.clone() * op1_limb_12_col92.clone())) + + (op0_limb_3_col54.clone() * op1_limb_11_col91.clone())) + + (op0_limb_4_col55.clone() * op1_limb_10_col90.clone())) + + (op0_limb_5_col56.clone() * op1_limb_9_col89.clone())) + + (op0_limb_6_col57.clone() * op1_limb_8_col88.clone())) + + (op0_limb_7_col58.clone() * op1_limb_7_col87.clone())) + + (op0_limb_8_col59.clone() * op1_limb_6_col86.clone())) + + (op0_limb_9_col60.clone() * op1_limb_5_col85.clone())) + + (op0_limb_10_col61.clone() * op1_limb_4_col84.clone())) + + (op0_limb_11_col62.clone() * op1_limb_3_col83.clone())) + + (op0_limb_12_col63.clone() * op1_limb_2_col82.clone())) + + (op0_limb_13_col64.clone() * op1_limb_1_col81.clone())) + + (op0_limb_14_col65.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_77 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() - mul_res_limb_15_col152.clone()) + + (op0_limb_0_col51.clone() * op1_limb_15_col95.clone())) + + (op0_limb_1_col52.clone() * op1_limb_14_col94.clone())) + + (op0_limb_2_col53.clone() * op1_limb_13_col93.clone())) + + (op0_limb_3_col54.clone() * op1_limb_12_col92.clone())) + + (op0_limb_4_col55.clone() * op1_limb_11_col91.clone())) + + (op0_limb_5_col56.clone() * op1_limb_10_col90.clone())) + + (op0_limb_6_col57.clone() * op1_limb_9_col89.clone())) + + (op0_limb_7_col58.clone() * op1_limb_8_col88.clone())) + + (op0_limb_8_col59.clone() * op1_limb_7_col87.clone())) + + (op0_limb_9_col60.clone() * op1_limb_6_col86.clone())) + + (op0_limb_10_col61.clone() * op1_limb_5_col85.clone())) + + (op0_limb_11_col62.clone() * op1_limb_4_col84.clone())) + + (op0_limb_12_col63.clone() * op1_limb_3_col83.clone())) + + (op0_limb_13_col64.clone() * op1_limb_2_col82.clone())) + + (op0_limb_14_col65.clone() * op1_limb_1_col81.clone())) + + (op0_limb_15_col66.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_78 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() - mul_res_limb_16_col153.clone()) + + (op0_limb_0_col51.clone() * op1_limb_16_col96.clone())) + + (op0_limb_1_col52.clone() * op1_limb_15_col95.clone())) + + (op0_limb_2_col53.clone() * op1_limb_14_col94.clone())) + + (op0_limb_3_col54.clone() * op1_limb_13_col93.clone())) + + (op0_limb_4_col55.clone() * op1_limb_12_col92.clone())) + + (op0_limb_5_col56.clone() * op1_limb_11_col91.clone())) + + (op0_limb_6_col57.clone() * op1_limb_10_col90.clone())) + + (op0_limb_7_col58.clone() * op1_limb_9_col89.clone())) + + (op0_limb_8_col59.clone() * op1_limb_8_col88.clone())) + + (op0_limb_9_col60.clone() * op1_limb_7_col87.clone())) + + (op0_limb_10_col61.clone() * op1_limb_6_col86.clone())) + + (op0_limb_11_col62.clone() * op1_limb_5_col85.clone())) + + (op0_limb_12_col63.clone() * op1_limb_4_col84.clone())) + + (op0_limb_13_col64.clone() * op1_limb_3_col83.clone())) + + (op0_limb_14_col65.clone() * op1_limb_2_col82.clone())) + + (op0_limb_15_col66.clone() * op1_limb_1_col81.clone())) + + (op0_limb_16_col67.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_79 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() - mul_res_limb_17_col154.clone()) + + (op0_limb_0_col51.clone() * op1_limb_17_col97.clone())) + + (op0_limb_1_col52.clone() * op1_limb_16_col96.clone())) + + (op0_limb_2_col53.clone() * op1_limb_15_col95.clone())) + + (op0_limb_3_col54.clone() * op1_limb_14_col94.clone())) + + (op0_limb_4_col55.clone() * op1_limb_13_col93.clone())) + + (op0_limb_5_col56.clone() * op1_limb_12_col92.clone())) + + (op0_limb_6_col57.clone() * op1_limb_11_col91.clone())) + + (op0_limb_7_col58.clone() * op1_limb_10_col90.clone())) + + (op0_limb_8_col59.clone() * op1_limb_9_col89.clone())) + + (op0_limb_9_col60.clone() * op1_limb_8_col88.clone())) + + (op0_limb_10_col61.clone() * op1_limb_7_col87.clone())) + + (op0_limb_11_col62.clone() * op1_limb_6_col86.clone())) + + (op0_limb_12_col63.clone() * op1_limb_5_col85.clone())) + + (op0_limb_13_col64.clone() * op1_limb_4_col84.clone())) + + (op0_limb_14_col65.clone() * op1_limb_3_col83.clone())) + + (op0_limb_15_col66.clone() * op1_limb_2_col82.clone())) + + (op0_limb_16_col67.clone() * op1_limb_1_col81.clone())) + + (op0_limb_17_col68.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_80 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() - mul_res_limb_18_col155.clone()) + + (op0_limb_0_col51.clone() * op1_limb_18_col98.clone())) + + (op0_limb_1_col52.clone() * op1_limb_17_col97.clone())) + + (op0_limb_2_col53.clone() * op1_limb_16_col96.clone())) + + (op0_limb_3_col54.clone() * op1_limb_15_col95.clone())) + + (op0_limb_4_col55.clone() * op1_limb_14_col94.clone())) + + (op0_limb_5_col56.clone() * op1_limb_13_col93.clone())) + + (op0_limb_6_col57.clone() * op1_limb_12_col92.clone())) + + (op0_limb_7_col58.clone() * op1_limb_11_col91.clone())) + + (op0_limb_8_col59.clone() * op1_limb_10_col90.clone())) + + (op0_limb_9_col60.clone() * op1_limb_9_col89.clone())) + + (op0_limb_10_col61.clone() * op1_limb_8_col88.clone())) + + (op0_limb_11_col62.clone() * op1_limb_7_col87.clone())) + + (op0_limb_12_col63.clone() * op1_limb_6_col86.clone())) + + (op0_limb_13_col64.clone() * op1_limb_5_col85.clone())) + + (op0_limb_14_col65.clone() * op1_limb_4_col84.clone())) + + (op0_limb_15_col66.clone() * op1_limb_3_col83.clone())) + + (op0_limb_16_col67.clone() * op1_limb_2_col82.clone())) + + (op0_limb_17_col68.clone() * op1_limb_1_col81.clone())) + + (op0_limb_18_col69.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_81 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() + - mul_res_limb_19_col156.clone()) + + (op0_limb_0_col51.clone() * op1_limb_19_col99.clone())) + + (op0_limb_1_col52.clone() * op1_limb_18_col98.clone())) + + (op0_limb_2_col53.clone() * op1_limb_17_col97.clone())) + + (op0_limb_3_col54.clone() * op1_limb_16_col96.clone())) + + (op0_limb_4_col55.clone() * op1_limb_15_col95.clone())) + + (op0_limb_5_col56.clone() * op1_limb_14_col94.clone())) + + (op0_limb_6_col57.clone() * op1_limb_13_col93.clone())) + + (op0_limb_7_col58.clone() * op1_limb_12_col92.clone())) + + (op0_limb_8_col59.clone() * op1_limb_11_col91.clone())) + + (op0_limb_9_col60.clone() * op1_limb_10_col90.clone())) + + (op0_limb_10_col61.clone() * op1_limb_9_col89.clone())) + + (op0_limb_11_col62.clone() * op1_limb_8_col88.clone())) + + (op0_limb_12_col63.clone() * op1_limb_7_col87.clone())) + + (op0_limb_13_col64.clone() * op1_limb_6_col86.clone())) + + (op0_limb_14_col65.clone() * op1_limb_5_col85.clone())) + + (op0_limb_15_col66.clone() * op1_limb_4_col84.clone())) + + (op0_limb_16_col67.clone() * op1_limb_3_col83.clone())) + + (op0_limb_17_col68.clone() * op1_limb_2_col82.clone())) + + (op0_limb_18_col69.clone() * op1_limb_1_col81.clone())) + + (op0_limb_19_col70.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_82 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() + - mul_res_limb_20_col157.clone()) + + (op0_limb_0_col51.clone() * op1_limb_20_col100.clone())) + + (op0_limb_1_col52.clone() * op1_limb_19_col99.clone())) + + (op0_limb_2_col53.clone() * op1_limb_18_col98.clone())) + + (op0_limb_3_col54.clone() * op1_limb_17_col97.clone())) + + (op0_limb_4_col55.clone() * op1_limb_16_col96.clone())) + + (op0_limb_5_col56.clone() * op1_limb_15_col95.clone())) + + (op0_limb_6_col57.clone() * op1_limb_14_col94.clone())) + + (op0_limb_7_col58.clone() * op1_limb_13_col93.clone())) + + (op0_limb_8_col59.clone() * op1_limb_12_col92.clone())) + + (op0_limb_9_col60.clone() * op1_limb_11_col91.clone())) + + (op0_limb_10_col61.clone() * op1_limb_10_col90.clone())) + + (op0_limb_11_col62.clone() * op1_limb_9_col89.clone())) + + (op0_limb_12_col63.clone() * op1_limb_8_col88.clone())) + + (op0_limb_13_col64.clone() * op1_limb_7_col87.clone())) + + (op0_limb_14_col65.clone() * op1_limb_6_col86.clone())) + + (op0_limb_15_col66.clone() * op1_limb_5_col85.clone())) + + (op0_limb_16_col67.clone() * op1_limb_4_col84.clone())) + + (op0_limb_17_col68.clone() * op1_limb_3_col83.clone())) + + (op0_limb_18_col69.clone() * op1_limb_2_col82.clone())) + + (op0_limb_19_col70.clone() * op1_limb_1_col81.clone())) + + (op0_limb_20_col71.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_83 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() + - mul_res_limb_21_col158.clone()) + + (op0_limb_0_col51.clone() * op1_limb_21_col101.clone())) + + (op0_limb_1_col52.clone() * op1_limb_20_col100.clone())) + + (op0_limb_2_col53.clone() * op1_limb_19_col99.clone())) + + (op0_limb_3_col54.clone() * op1_limb_18_col98.clone())) + + (op0_limb_4_col55.clone() * op1_limb_17_col97.clone())) + + (op0_limb_5_col56.clone() * op1_limb_16_col96.clone())) + + (op0_limb_6_col57.clone() * op1_limb_15_col95.clone())) + + (op0_limb_7_col58.clone() * op1_limb_14_col94.clone())) + + (op0_limb_8_col59.clone() * op1_limb_13_col93.clone())) + + (op0_limb_9_col60.clone() * op1_limb_12_col92.clone())) + + (op0_limb_10_col61.clone() * op1_limb_11_col91.clone())) + + (op0_limb_11_col62.clone() * op1_limb_10_col90.clone())) + + (op0_limb_12_col63.clone() * op1_limb_9_col89.clone())) + + (op0_limb_13_col64.clone() * op1_limb_8_col88.clone())) + + (op0_limb_14_col65.clone() * op1_limb_7_col87.clone())) + + (op0_limb_15_col66.clone() * op1_limb_6_col86.clone())) + + (op0_limb_16_col67.clone() * op1_limb_5_col85.clone())) + + (op0_limb_17_col68.clone() * op1_limb_4_col84.clone())) + + (op0_limb_18_col69.clone() * op1_limb_3_col83.clone())) + + (op0_limb_19_col70.clone() * op1_limb_2_col82.clone())) + + (op0_limb_20_col71.clone() * op1_limb_1_col81.clone())) + + (op0_limb_21_col72.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_84 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_22_col159.clone()) + + (op0_limb_0_col51.clone() * op1_limb_22_col102.clone())) + + (op0_limb_1_col52.clone() * op1_limb_21_col101.clone())) + + (op0_limb_2_col53.clone() * op1_limb_20_col100.clone())) + + (op0_limb_3_col54.clone() * op1_limb_19_col99.clone())) + + (op0_limb_4_col55.clone() * op1_limb_18_col98.clone())) + + (op0_limb_5_col56.clone() * op1_limb_17_col97.clone())) + + (op0_limb_6_col57.clone() * op1_limb_16_col96.clone())) + + (op0_limb_7_col58.clone() * op1_limb_15_col95.clone())) + + (op0_limb_8_col59.clone() * op1_limb_14_col94.clone())) + + (op0_limb_9_col60.clone() * op1_limb_13_col93.clone())) + + (op0_limb_10_col61.clone() * op1_limb_12_col92.clone())) + + (op0_limb_11_col62.clone() * op1_limb_11_col91.clone())) + + (op0_limb_12_col63.clone() * op1_limb_10_col90.clone())) + + (op0_limb_13_col64.clone() * op1_limb_9_col89.clone())) + + (op0_limb_14_col65.clone() * op1_limb_8_col88.clone())) + + (op0_limb_15_col66.clone() * op1_limb_7_col87.clone())) + + (op0_limb_16_col67.clone() * op1_limb_6_col86.clone())) + + (op0_limb_17_col68.clone() * op1_limb_5_col85.clone())) + + (op0_limb_18_col69.clone() * op1_limb_4_col84.clone())) + + (op0_limb_19_col70.clone() * op1_limb_3_col83.clone())) + + (op0_limb_20_col71.clone() * op1_limb_2_col82.clone())) + + (op0_limb_21_col72.clone() * op1_limb_1_col81.clone())) + + (op0_limb_22_col73.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_85 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_23_col160.clone()) + + (op0_limb_0_col51.clone() * op1_limb_23_col103.clone())) + + (op0_limb_1_col52.clone() * op1_limb_22_col102.clone())) + + (op0_limb_2_col53.clone() * op1_limb_21_col101.clone())) + + (op0_limb_3_col54.clone() * op1_limb_20_col100.clone())) + + (op0_limb_4_col55.clone() * op1_limb_19_col99.clone())) + + (op0_limb_5_col56.clone() * op1_limb_18_col98.clone())) + + (op0_limb_6_col57.clone() * op1_limb_17_col97.clone())) + + (op0_limb_7_col58.clone() * op1_limb_16_col96.clone())) + + (op0_limb_8_col59.clone() * op1_limb_15_col95.clone())) + + (op0_limb_9_col60.clone() * op1_limb_14_col94.clone())) + + (op0_limb_10_col61.clone() * op1_limb_13_col93.clone())) + + (op0_limb_11_col62.clone() * op1_limb_12_col92.clone())) + + (op0_limb_12_col63.clone() * op1_limb_11_col91.clone())) + + (op0_limb_13_col64.clone() * op1_limb_10_col90.clone())) + + (op0_limb_14_col65.clone() * op1_limb_9_col89.clone())) + + (op0_limb_15_col66.clone() * op1_limb_8_col88.clone())) + + (op0_limb_16_col67.clone() * op1_limb_7_col87.clone())) + + (op0_limb_17_col68.clone() * op1_limb_6_col86.clone())) + + (op0_limb_18_col69.clone() * op1_limb_5_col85.clone())) + + (op0_limb_19_col70.clone() * op1_limb_4_col84.clone())) + + (op0_limb_20_col71.clone() * op1_limb_3_col83.clone())) + + (op0_limb_21_col72.clone() * op1_limb_2_col82.clone())) + + (op0_limb_22_col73.clone() * op1_limb_1_col81.clone())) + + (op0_limb_23_col74.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_86 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_24_col161.clone()) + + (op0_limb_0_col51.clone() * op1_limb_24_col104.clone())) + + (op0_limb_1_col52.clone() * op1_limb_23_col103.clone())) + + (op0_limb_2_col53.clone() * op1_limb_22_col102.clone())) + + (op0_limb_3_col54.clone() * op1_limb_21_col101.clone())) + + (op0_limb_4_col55.clone() * op1_limb_20_col100.clone())) + + (op0_limb_5_col56.clone() * op1_limb_19_col99.clone())) + + (op0_limb_6_col57.clone() * op1_limb_18_col98.clone())) + + (op0_limb_7_col58.clone() * op1_limb_17_col97.clone())) + + (op0_limb_8_col59.clone() * op1_limb_16_col96.clone())) + + (op0_limb_9_col60.clone() * op1_limb_15_col95.clone())) + + (op0_limb_10_col61.clone() * op1_limb_14_col94.clone())) + + (op0_limb_11_col62.clone() * op1_limb_13_col93.clone())) + + (op0_limb_12_col63.clone() * op1_limb_12_col92.clone())) + + (op0_limb_13_col64.clone() * op1_limb_11_col91.clone())) + + (op0_limb_14_col65.clone() * op1_limb_10_col90.clone())) + + (op0_limb_15_col66.clone() * op1_limb_9_col89.clone())) + + (op0_limb_16_col67.clone() * op1_limb_8_col88.clone())) + + (op0_limb_17_col68.clone() * op1_limb_7_col87.clone())) + + (op0_limb_18_col69.clone() * op1_limb_6_col86.clone())) + + (op0_limb_19_col70.clone() * op1_limb_5_col85.clone())) + + (op0_limb_20_col71.clone() * op1_limb_4_col84.clone())) + + (op0_limb_21_col72.clone() * op1_limb_3_col83.clone())) + + (op0_limb_22_col73.clone() * op1_limb_2_col82.clone())) + + (op0_limb_23_col74.clone() * op1_limb_1_col81.clone())) + + (op0_limb_24_col75.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_87 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_25_col162.clone()) + + (op0_limb_0_col51.clone() * op1_limb_25_col105.clone())) + + (op0_limb_1_col52.clone() * op1_limb_24_col104.clone())) + + (op0_limb_2_col53.clone() * op1_limb_23_col103.clone())) + + (op0_limb_3_col54.clone() * op1_limb_22_col102.clone())) + + (op0_limb_4_col55.clone() * op1_limb_21_col101.clone())) + + (op0_limb_5_col56.clone() * op1_limb_20_col100.clone())) + + (op0_limb_6_col57.clone() * op1_limb_19_col99.clone())) + + (op0_limb_7_col58.clone() * op1_limb_18_col98.clone())) + + (op0_limb_8_col59.clone() * op1_limb_17_col97.clone())) + + (op0_limb_9_col60.clone() * op1_limb_16_col96.clone())) + + (op0_limb_10_col61.clone() * op1_limb_15_col95.clone())) + + (op0_limb_11_col62.clone() * op1_limb_14_col94.clone())) + + (op0_limb_12_col63.clone() * op1_limb_13_col93.clone())) + + (op0_limb_13_col64.clone() * op1_limb_12_col92.clone())) + + (op0_limb_14_col65.clone() * op1_limb_11_col91.clone())) + + (op0_limb_15_col66.clone() * op1_limb_10_col90.clone())) + + (op0_limb_16_col67.clone() * op1_limb_9_col89.clone())) + + (op0_limb_17_col68.clone() * op1_limb_8_col88.clone())) + + (op0_limb_18_col69.clone() * op1_limb_7_col87.clone())) + + (op0_limb_19_col70.clone() * op1_limb_6_col86.clone())) + + (op0_limb_20_col71.clone() * op1_limb_5_col85.clone())) + + (op0_limb_21_col72.clone() * op1_limb_4_col84.clone())) + + (op0_limb_22_col73.clone() * op1_limb_3_col83.clone())) + + (op0_limb_23_col74.clone() * op1_limb_2_col82.clone())) + + (op0_limb_24_col75.clone() * op1_limb_1_col81.clone())) + + (op0_limb_25_col76.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_88 = eval.add_intermediate( + ((((((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_26_col163.clone()) + + (op0_limb_0_col51.clone() + * op1_limb_26_col106.clone())) + + (op0_limb_1_col52.clone() * op1_limb_25_col105.clone())) + + (op0_limb_2_col53.clone() * op1_limb_24_col104.clone())) + + (op0_limb_3_col54.clone() * op1_limb_23_col103.clone())) + + (op0_limb_4_col55.clone() * op1_limb_22_col102.clone())) + + (op0_limb_5_col56.clone() * op1_limb_21_col101.clone())) + + (op0_limb_6_col57.clone() * op1_limb_20_col100.clone())) + + (op0_limb_7_col58.clone() * op1_limb_19_col99.clone())) + + (op0_limb_8_col59.clone() * op1_limb_18_col98.clone())) + + (op0_limb_9_col60.clone() * op1_limb_17_col97.clone())) + + (op0_limb_10_col61.clone() * op1_limb_16_col96.clone())) + + (op0_limb_11_col62.clone() * op1_limb_15_col95.clone())) + + (op0_limb_12_col63.clone() * op1_limb_14_col94.clone())) + + (op0_limb_13_col64.clone() * op1_limb_13_col93.clone())) + + (op0_limb_14_col65.clone() * op1_limb_12_col92.clone())) + + (op0_limb_15_col66.clone() * op1_limb_11_col91.clone())) + + (op0_limb_16_col67.clone() * op1_limb_10_col90.clone())) + + (op0_limb_17_col68.clone() * op1_limb_9_col89.clone())) + + (op0_limb_18_col69.clone() * op1_limb_8_col88.clone())) + + (op0_limb_19_col70.clone() * op1_limb_7_col87.clone())) + + (op0_limb_20_col71.clone() * op1_limb_6_col86.clone())) + + (op0_limb_21_col72.clone() * op1_limb_5_col85.clone())) + + (op0_limb_22_col73.clone() * op1_limb_4_col84.clone())) + + (op0_limb_23_col74.clone() * op1_limb_3_col83.clone())) + + (op0_limb_24_col75.clone() * op1_limb_2_col82.clone())) + + (op0_limb_25_col76.clone() * op1_limb_1_col81.clone())) + + (op0_limb_26_col77.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_89 = eval.add_intermediate( + (((((((((((((((((((((((((((((M31_0.clone() + - mul_res_limb_27_col164.clone()) + + (op0_limb_0_col51.clone() + * op1_limb_27_col107.clone())) + + (op0_limb_1_col52.clone() + * op1_limb_26_col106.clone())) + + (op0_limb_2_col53.clone() * op1_limb_25_col105.clone())) + + (op0_limb_3_col54.clone() * op1_limb_24_col104.clone())) + + (op0_limb_4_col55.clone() * op1_limb_23_col103.clone())) + + (op0_limb_5_col56.clone() * op1_limb_22_col102.clone())) + + (op0_limb_6_col57.clone() * op1_limb_21_col101.clone())) + + (op0_limb_7_col58.clone() * op1_limb_20_col100.clone())) + + (op0_limb_8_col59.clone() * op1_limb_19_col99.clone())) + + (op0_limb_9_col60.clone() * op1_limb_18_col98.clone())) + + (op0_limb_10_col61.clone() * op1_limb_17_col97.clone())) + + (op0_limb_11_col62.clone() * op1_limb_16_col96.clone())) + + (op0_limb_12_col63.clone() * op1_limb_15_col95.clone())) + + (op0_limb_13_col64.clone() * op1_limb_14_col94.clone())) + + (op0_limb_14_col65.clone() * op1_limb_13_col93.clone())) + + (op0_limb_15_col66.clone() * op1_limb_12_col92.clone())) + + (op0_limb_16_col67.clone() * op1_limb_11_col91.clone())) + + (op0_limb_17_col68.clone() * op1_limb_10_col90.clone())) + + (op0_limb_18_col69.clone() * op1_limb_9_col89.clone())) + + (op0_limb_19_col70.clone() * op1_limb_8_col88.clone())) + + (op0_limb_20_col71.clone() * op1_limb_7_col87.clone())) + + (op0_limb_21_col72.clone() * op1_limb_6_col86.clone())) + + (op0_limb_22_col73.clone() * op1_limb_5_col85.clone())) + + (op0_limb_23_col74.clone() * op1_limb_4_col84.clone())) + + (op0_limb_24_col75.clone() * op1_limb_3_col83.clone())) + + (op0_limb_25_col76.clone() * op1_limb_2_col82.clone())) + + (op0_limb_26_col77.clone() * op1_limb_1_col81.clone())) + + (op0_limb_27_col78.clone() * op1_limb_0_col80.clone())), + ); + let conv_tmp_5745_90 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_1_col52.clone() + * op1_limb_27_col107.clone())) + + (op0_limb_2_col53.clone() * op1_limb_26_col106.clone())) + + (op0_limb_3_col54.clone() * op1_limb_25_col105.clone())) + + (op0_limb_4_col55.clone() * op1_limb_24_col104.clone())) + + (op0_limb_5_col56.clone() * op1_limb_23_col103.clone())) + + (op0_limb_6_col57.clone() * op1_limb_22_col102.clone())) + + (op0_limb_7_col58.clone() * op1_limb_21_col101.clone())) + + (op0_limb_8_col59.clone() * op1_limb_20_col100.clone())) + + (op0_limb_9_col60.clone() * op1_limb_19_col99.clone())) + + (op0_limb_10_col61.clone() * op1_limb_18_col98.clone())) + + (op0_limb_11_col62.clone() * op1_limb_17_col97.clone())) + + (op0_limb_12_col63.clone() * op1_limb_16_col96.clone())) + + (op0_limb_13_col64.clone() * op1_limb_15_col95.clone())) + + (op0_limb_14_col65.clone() * op1_limb_14_col94.clone())) + + (op0_limb_15_col66.clone() * op1_limb_13_col93.clone())) + + (op0_limb_16_col67.clone() * op1_limb_12_col92.clone())) + + (op0_limb_17_col68.clone() * op1_limb_11_col91.clone())) + + (op0_limb_18_col69.clone() * op1_limb_10_col90.clone())) + + (op0_limb_19_col70.clone() * op1_limb_9_col89.clone())) + + (op0_limb_20_col71.clone() * op1_limb_8_col88.clone())) + + (op0_limb_21_col72.clone() * op1_limb_7_col87.clone())) + + (op0_limb_22_col73.clone() * op1_limb_6_col86.clone())) + + (op0_limb_23_col74.clone() * op1_limb_5_col85.clone())) + + (op0_limb_24_col75.clone() * op1_limb_4_col84.clone())) + + (op0_limb_25_col76.clone() * op1_limb_3_col83.clone())) + + (op0_limb_26_col77.clone() * op1_limb_2_col82.clone())) + + (op0_limb_27_col78.clone() * op1_limb_1_col81.clone())), + ); + let conv_tmp_5745_91 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_2_col53.clone() * op1_limb_27_col107.clone())) + + (op0_limb_3_col54.clone() * op1_limb_26_col106.clone())) + + (op0_limb_4_col55.clone() * op1_limb_25_col105.clone())) + + (op0_limb_5_col56.clone() * op1_limb_24_col104.clone())) + + (op0_limb_6_col57.clone() * op1_limb_23_col103.clone())) + + (op0_limb_7_col58.clone() * op1_limb_22_col102.clone())) + + (op0_limb_8_col59.clone() * op1_limb_21_col101.clone())) + + (op0_limb_9_col60.clone() * op1_limb_20_col100.clone())) + + (op0_limb_10_col61.clone() * op1_limb_19_col99.clone())) + + (op0_limb_11_col62.clone() * op1_limb_18_col98.clone())) + + (op0_limb_12_col63.clone() * op1_limb_17_col97.clone())) + + (op0_limb_13_col64.clone() * op1_limb_16_col96.clone())) + + (op0_limb_14_col65.clone() * op1_limb_15_col95.clone())) + + (op0_limb_15_col66.clone() * op1_limb_14_col94.clone())) + + (op0_limb_16_col67.clone() * op1_limb_13_col93.clone())) + + (op0_limb_17_col68.clone() * op1_limb_12_col92.clone())) + + (op0_limb_18_col69.clone() * op1_limb_11_col91.clone())) + + (op0_limb_19_col70.clone() * op1_limb_10_col90.clone())) + + (op0_limb_20_col71.clone() * op1_limb_9_col89.clone())) + + (op0_limb_21_col72.clone() * op1_limb_8_col88.clone())) + + (op0_limb_22_col73.clone() * op1_limb_7_col87.clone())) + + (op0_limb_23_col74.clone() * op1_limb_6_col86.clone())) + + (op0_limb_24_col75.clone() * op1_limb_5_col85.clone())) + + (op0_limb_25_col76.clone() * op1_limb_4_col84.clone())) + + (op0_limb_26_col77.clone() * op1_limb_3_col83.clone())) + + (op0_limb_27_col78.clone() * op1_limb_2_col82.clone())), + ); + let conv_tmp_5745_92 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + + (op0_limb_3_col54.clone() * op1_limb_27_col107.clone())) + + (op0_limb_4_col55.clone() * op1_limb_26_col106.clone())) + + (op0_limb_5_col56.clone() * op1_limb_25_col105.clone())) + + (op0_limb_6_col57.clone() * op1_limb_24_col104.clone())) + + (op0_limb_7_col58.clone() * op1_limb_23_col103.clone())) + + (op0_limb_8_col59.clone() * op1_limb_22_col102.clone())) + + (op0_limb_9_col60.clone() * op1_limb_21_col101.clone())) + + (op0_limb_10_col61.clone() * op1_limb_20_col100.clone())) + + (op0_limb_11_col62.clone() * op1_limb_19_col99.clone())) + + (op0_limb_12_col63.clone() * op1_limb_18_col98.clone())) + + (op0_limb_13_col64.clone() * op1_limb_17_col97.clone())) + + (op0_limb_14_col65.clone() * op1_limb_16_col96.clone())) + + (op0_limb_15_col66.clone() * op1_limb_15_col95.clone())) + + (op0_limb_16_col67.clone() * op1_limb_14_col94.clone())) + + (op0_limb_17_col68.clone() * op1_limb_13_col93.clone())) + + (op0_limb_18_col69.clone() * op1_limb_12_col92.clone())) + + (op0_limb_19_col70.clone() * op1_limb_11_col91.clone())) + + (op0_limb_20_col71.clone() * op1_limb_10_col90.clone())) + + (op0_limb_21_col72.clone() * op1_limb_9_col89.clone())) + + (op0_limb_22_col73.clone() * op1_limb_8_col88.clone())) + + (op0_limb_23_col74.clone() * op1_limb_7_col87.clone())) + + (op0_limb_24_col75.clone() * op1_limb_6_col86.clone())) + + (op0_limb_25_col76.clone() * op1_limb_5_col85.clone())) + + (op0_limb_26_col77.clone() * op1_limb_4_col84.clone())) + + (op0_limb_27_col78.clone() * op1_limb_3_col83.clone())), + ); + let conv_tmp_5745_93 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + + (op0_limb_4_col55.clone() * op1_limb_27_col107.clone())) + + (op0_limb_5_col56.clone() * op1_limb_26_col106.clone())) + + (op0_limb_6_col57.clone() * op1_limb_25_col105.clone())) + + (op0_limb_7_col58.clone() * op1_limb_24_col104.clone())) + + (op0_limb_8_col59.clone() * op1_limb_23_col103.clone())) + + (op0_limb_9_col60.clone() * op1_limb_22_col102.clone())) + + (op0_limb_10_col61.clone() * op1_limb_21_col101.clone())) + + (op0_limb_11_col62.clone() * op1_limb_20_col100.clone())) + + (op0_limb_12_col63.clone() * op1_limb_19_col99.clone())) + + (op0_limb_13_col64.clone() * op1_limb_18_col98.clone())) + + (op0_limb_14_col65.clone() * op1_limb_17_col97.clone())) + + (op0_limb_15_col66.clone() * op1_limb_16_col96.clone())) + + (op0_limb_16_col67.clone() * op1_limb_15_col95.clone())) + + (op0_limb_17_col68.clone() * op1_limb_14_col94.clone())) + + (op0_limb_18_col69.clone() * op1_limb_13_col93.clone())) + + (op0_limb_19_col70.clone() * op1_limb_12_col92.clone())) + + (op0_limb_20_col71.clone() * op1_limb_11_col91.clone())) + + (op0_limb_21_col72.clone() * op1_limb_10_col90.clone())) + + (op0_limb_22_col73.clone() * op1_limb_9_col89.clone())) + + (op0_limb_23_col74.clone() * op1_limb_8_col88.clone())) + + (op0_limb_24_col75.clone() * op1_limb_7_col87.clone())) + + (op0_limb_25_col76.clone() * op1_limb_6_col86.clone())) + + (op0_limb_26_col77.clone() * op1_limb_5_col85.clone())) + + (op0_limb_27_col78.clone() * op1_limb_4_col84.clone())), + ); + let conv_tmp_5745_94 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() + + (op0_limb_5_col56.clone() * op1_limb_27_col107.clone())) + + (op0_limb_6_col57.clone() * op1_limb_26_col106.clone())) + + (op0_limb_7_col58.clone() * op1_limb_25_col105.clone())) + + (op0_limb_8_col59.clone() * op1_limb_24_col104.clone())) + + (op0_limb_9_col60.clone() * op1_limb_23_col103.clone())) + + (op0_limb_10_col61.clone() * op1_limb_22_col102.clone())) + + (op0_limb_11_col62.clone() * op1_limb_21_col101.clone())) + + (op0_limb_12_col63.clone() * op1_limb_20_col100.clone())) + + (op0_limb_13_col64.clone() * op1_limb_19_col99.clone())) + + (op0_limb_14_col65.clone() * op1_limb_18_col98.clone())) + + (op0_limb_15_col66.clone() * op1_limb_17_col97.clone())) + + (op0_limb_16_col67.clone() * op1_limb_16_col96.clone())) + + (op0_limb_17_col68.clone() * op1_limb_15_col95.clone())) + + (op0_limb_18_col69.clone() * op1_limb_14_col94.clone())) + + (op0_limb_19_col70.clone() * op1_limb_13_col93.clone())) + + (op0_limb_20_col71.clone() * op1_limb_12_col92.clone())) + + (op0_limb_21_col72.clone() * op1_limb_11_col91.clone())) + + (op0_limb_22_col73.clone() * op1_limb_10_col90.clone())) + + (op0_limb_23_col74.clone() * op1_limb_9_col89.clone())) + + (op0_limb_24_col75.clone() * op1_limb_8_col88.clone())) + + (op0_limb_25_col76.clone() * op1_limb_7_col87.clone())) + + (op0_limb_26_col77.clone() * op1_limb_6_col86.clone())) + + (op0_limb_27_col78.clone() * op1_limb_5_col85.clone())), + ); + let conv_tmp_5745_95 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() + + (op0_limb_6_col57.clone() * op1_limb_27_col107.clone())) + + (op0_limb_7_col58.clone() * op1_limb_26_col106.clone())) + + (op0_limb_8_col59.clone() * op1_limb_25_col105.clone())) + + (op0_limb_9_col60.clone() * op1_limb_24_col104.clone())) + + (op0_limb_10_col61.clone() * op1_limb_23_col103.clone())) + + (op0_limb_11_col62.clone() * op1_limb_22_col102.clone())) + + (op0_limb_12_col63.clone() * op1_limb_21_col101.clone())) + + (op0_limb_13_col64.clone() * op1_limb_20_col100.clone())) + + (op0_limb_14_col65.clone() * op1_limb_19_col99.clone())) + + (op0_limb_15_col66.clone() * op1_limb_18_col98.clone())) + + (op0_limb_16_col67.clone() * op1_limb_17_col97.clone())) + + (op0_limb_17_col68.clone() * op1_limb_16_col96.clone())) + + (op0_limb_18_col69.clone() * op1_limb_15_col95.clone())) + + (op0_limb_19_col70.clone() * op1_limb_14_col94.clone())) + + (op0_limb_20_col71.clone() * op1_limb_13_col93.clone())) + + (op0_limb_21_col72.clone() * op1_limb_12_col92.clone())) + + (op0_limb_22_col73.clone() * op1_limb_11_col91.clone())) + + (op0_limb_23_col74.clone() * op1_limb_10_col90.clone())) + + (op0_limb_24_col75.clone() * op1_limb_9_col89.clone())) + + (op0_limb_25_col76.clone() * op1_limb_8_col88.clone())) + + (op0_limb_26_col77.clone() * op1_limb_7_col87.clone())) + + (op0_limb_27_col78.clone() * op1_limb_6_col86.clone())), + ); + let conv_tmp_5745_96 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() + + (op0_limb_7_col58.clone() * op1_limb_27_col107.clone())) + + (op0_limb_8_col59.clone() * op1_limb_26_col106.clone())) + + (op0_limb_9_col60.clone() * op1_limb_25_col105.clone())) + + (op0_limb_10_col61.clone() * op1_limb_24_col104.clone())) + + (op0_limb_11_col62.clone() * op1_limb_23_col103.clone())) + + (op0_limb_12_col63.clone() * op1_limb_22_col102.clone())) + + (op0_limb_13_col64.clone() * op1_limb_21_col101.clone())) + + (op0_limb_14_col65.clone() * op1_limb_20_col100.clone())) + + (op0_limb_15_col66.clone() * op1_limb_19_col99.clone())) + + (op0_limb_16_col67.clone() * op1_limb_18_col98.clone())) + + (op0_limb_17_col68.clone() * op1_limb_17_col97.clone())) + + (op0_limb_18_col69.clone() * op1_limb_16_col96.clone())) + + (op0_limb_19_col70.clone() * op1_limb_15_col95.clone())) + + (op0_limb_20_col71.clone() * op1_limb_14_col94.clone())) + + (op0_limb_21_col72.clone() * op1_limb_13_col93.clone())) + + (op0_limb_22_col73.clone() * op1_limb_12_col92.clone())) + + (op0_limb_23_col74.clone() * op1_limb_11_col91.clone())) + + (op0_limb_24_col75.clone() * op1_limb_10_col90.clone())) + + (op0_limb_25_col76.clone() * op1_limb_9_col89.clone())) + + (op0_limb_26_col77.clone() * op1_limb_8_col88.clone())) + + (op0_limb_27_col78.clone() * op1_limb_7_col87.clone())), + ); + let conv_tmp_5745_97 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() + + (op0_limb_8_col59.clone() * op1_limb_27_col107.clone())) + + (op0_limb_9_col60.clone() * op1_limb_26_col106.clone())) + + (op0_limb_10_col61.clone() * op1_limb_25_col105.clone())) + + (op0_limb_11_col62.clone() * op1_limb_24_col104.clone())) + + (op0_limb_12_col63.clone() * op1_limb_23_col103.clone())) + + (op0_limb_13_col64.clone() * op1_limb_22_col102.clone())) + + (op0_limb_14_col65.clone() * op1_limb_21_col101.clone())) + + (op0_limb_15_col66.clone() * op1_limb_20_col100.clone())) + + (op0_limb_16_col67.clone() * op1_limb_19_col99.clone())) + + (op0_limb_17_col68.clone() * op1_limb_18_col98.clone())) + + (op0_limb_18_col69.clone() * op1_limb_17_col97.clone())) + + (op0_limb_19_col70.clone() * op1_limb_16_col96.clone())) + + (op0_limb_20_col71.clone() * op1_limb_15_col95.clone())) + + (op0_limb_21_col72.clone() * op1_limb_14_col94.clone())) + + (op0_limb_22_col73.clone() * op1_limb_13_col93.clone())) + + (op0_limb_23_col74.clone() * op1_limb_12_col92.clone())) + + (op0_limb_24_col75.clone() * op1_limb_11_col91.clone())) + + (op0_limb_25_col76.clone() * op1_limb_10_col90.clone())) + + (op0_limb_26_col77.clone() * op1_limb_9_col89.clone())) + + (op0_limb_27_col78.clone() * op1_limb_8_col88.clone())), + ); + let conv_tmp_5745_98 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() + + (op0_limb_9_col60.clone() * op1_limb_27_col107.clone())) + + (op0_limb_10_col61.clone() * op1_limb_26_col106.clone())) + + (op0_limb_11_col62.clone() * op1_limb_25_col105.clone())) + + (op0_limb_12_col63.clone() * op1_limb_24_col104.clone())) + + (op0_limb_13_col64.clone() * op1_limb_23_col103.clone())) + + (op0_limb_14_col65.clone() * op1_limb_22_col102.clone())) + + (op0_limb_15_col66.clone() * op1_limb_21_col101.clone())) + + (op0_limb_16_col67.clone() * op1_limb_20_col100.clone())) + + (op0_limb_17_col68.clone() * op1_limb_19_col99.clone())) + + (op0_limb_18_col69.clone() * op1_limb_18_col98.clone())) + + (op0_limb_19_col70.clone() * op1_limb_17_col97.clone())) + + (op0_limb_20_col71.clone() * op1_limb_16_col96.clone())) + + (op0_limb_21_col72.clone() * op1_limb_15_col95.clone())) + + (op0_limb_22_col73.clone() * op1_limb_14_col94.clone())) + + (op0_limb_23_col74.clone() * op1_limb_13_col93.clone())) + + (op0_limb_24_col75.clone() * op1_limb_12_col92.clone())) + + (op0_limb_25_col76.clone() * op1_limb_11_col91.clone())) + + (op0_limb_26_col77.clone() * op1_limb_10_col90.clone())) + + (op0_limb_27_col78.clone() * op1_limb_9_col89.clone())), + ); + let conv_tmp_5745_99 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() + + (op0_limb_10_col61.clone() * op1_limb_27_col107.clone())) + + (op0_limb_11_col62.clone() * op1_limb_26_col106.clone())) + + (op0_limb_12_col63.clone() * op1_limb_25_col105.clone())) + + (op0_limb_13_col64.clone() * op1_limb_24_col104.clone())) + + (op0_limb_14_col65.clone() * op1_limb_23_col103.clone())) + + (op0_limb_15_col66.clone() * op1_limb_22_col102.clone())) + + (op0_limb_16_col67.clone() * op1_limb_21_col101.clone())) + + (op0_limb_17_col68.clone() * op1_limb_20_col100.clone())) + + (op0_limb_18_col69.clone() * op1_limb_19_col99.clone())) + + (op0_limb_19_col70.clone() * op1_limb_18_col98.clone())) + + (op0_limb_20_col71.clone() * op1_limb_17_col97.clone())) + + (op0_limb_21_col72.clone() * op1_limb_16_col96.clone())) + + (op0_limb_22_col73.clone() * op1_limb_15_col95.clone())) + + (op0_limb_23_col74.clone() * op1_limb_14_col94.clone())) + + (op0_limb_24_col75.clone() * op1_limb_13_col93.clone())) + + (op0_limb_25_col76.clone() * op1_limb_12_col92.clone())) + + (op0_limb_26_col77.clone() * op1_limb_11_col91.clone())) + + (op0_limb_27_col78.clone() * op1_limb_10_col90.clone())), + ); + let conv_tmp_5745_100 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() + + (op0_limb_11_col62.clone() * op1_limb_27_col107.clone())) + + (op0_limb_12_col63.clone() * op1_limb_26_col106.clone())) + + (op0_limb_13_col64.clone() * op1_limb_25_col105.clone())) + + (op0_limb_14_col65.clone() * op1_limb_24_col104.clone())) + + (op0_limb_15_col66.clone() * op1_limb_23_col103.clone())) + + (op0_limb_16_col67.clone() * op1_limb_22_col102.clone())) + + (op0_limb_17_col68.clone() * op1_limb_21_col101.clone())) + + (op0_limb_18_col69.clone() * op1_limb_20_col100.clone())) + + (op0_limb_19_col70.clone() * op1_limb_19_col99.clone())) + + (op0_limb_20_col71.clone() * op1_limb_18_col98.clone())) + + (op0_limb_21_col72.clone() * op1_limb_17_col97.clone())) + + (op0_limb_22_col73.clone() * op1_limb_16_col96.clone())) + + (op0_limb_23_col74.clone() * op1_limb_15_col95.clone())) + + (op0_limb_24_col75.clone() * op1_limb_14_col94.clone())) + + (op0_limb_25_col76.clone() * op1_limb_13_col93.clone())) + + (op0_limb_26_col77.clone() * op1_limb_12_col92.clone())) + + (op0_limb_27_col78.clone() * op1_limb_11_col91.clone())), + ); + let conv_tmp_5745_101 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() + + (op0_limb_12_col63.clone() * op1_limb_27_col107.clone())) + + (op0_limb_13_col64.clone() * op1_limb_26_col106.clone())) + + (op0_limb_14_col65.clone() * op1_limb_25_col105.clone())) + + (op0_limb_15_col66.clone() * op1_limb_24_col104.clone())) + + (op0_limb_16_col67.clone() * op1_limb_23_col103.clone())) + + (op0_limb_17_col68.clone() * op1_limb_22_col102.clone())) + + (op0_limb_18_col69.clone() * op1_limb_21_col101.clone())) + + (op0_limb_19_col70.clone() * op1_limb_20_col100.clone())) + + (op0_limb_20_col71.clone() * op1_limb_19_col99.clone())) + + (op0_limb_21_col72.clone() * op1_limb_18_col98.clone())) + + (op0_limb_22_col73.clone() * op1_limb_17_col97.clone())) + + (op0_limb_23_col74.clone() * op1_limb_16_col96.clone())) + + (op0_limb_24_col75.clone() * op1_limb_15_col95.clone())) + + (op0_limb_25_col76.clone() * op1_limb_14_col94.clone())) + + (op0_limb_26_col77.clone() * op1_limb_13_col93.clone())) + + (op0_limb_27_col78.clone() * op1_limb_12_col92.clone())), + ); + let conv_tmp_5745_102 = eval.add_intermediate( + (((((((((((((((M31_0.clone() + + (op0_limb_13_col64.clone() * op1_limb_27_col107.clone())) + + (op0_limb_14_col65.clone() * op1_limb_26_col106.clone())) + + (op0_limb_15_col66.clone() * op1_limb_25_col105.clone())) + + (op0_limb_16_col67.clone() * op1_limb_24_col104.clone())) + + (op0_limb_17_col68.clone() * op1_limb_23_col103.clone())) + + (op0_limb_18_col69.clone() * op1_limb_22_col102.clone())) + + (op0_limb_19_col70.clone() * op1_limb_21_col101.clone())) + + (op0_limb_20_col71.clone() * op1_limb_20_col100.clone())) + + (op0_limb_21_col72.clone() * op1_limb_19_col99.clone())) + + (op0_limb_22_col73.clone() * op1_limb_18_col98.clone())) + + (op0_limb_23_col74.clone() * op1_limb_17_col97.clone())) + + (op0_limb_24_col75.clone() * op1_limb_16_col96.clone())) + + (op0_limb_25_col76.clone() * op1_limb_15_col95.clone())) + + (op0_limb_26_col77.clone() * op1_limb_14_col94.clone())) + + (op0_limb_27_col78.clone() * op1_limb_13_col93.clone())), + ); + let conv_tmp_5745_103 = eval.add_intermediate( + ((((((((((((((M31_0.clone() + + (op0_limb_14_col65.clone() * op1_limb_27_col107.clone())) + + (op0_limb_15_col66.clone() * op1_limb_26_col106.clone())) + + (op0_limb_16_col67.clone() * op1_limb_25_col105.clone())) + + (op0_limb_17_col68.clone() * op1_limb_24_col104.clone())) + + (op0_limb_18_col69.clone() * op1_limb_23_col103.clone())) + + (op0_limb_19_col70.clone() * op1_limb_22_col102.clone())) + + (op0_limb_20_col71.clone() * op1_limb_21_col101.clone())) + + (op0_limb_21_col72.clone() * op1_limb_20_col100.clone())) + + (op0_limb_22_col73.clone() * op1_limb_19_col99.clone())) + + (op0_limb_23_col74.clone() * op1_limb_18_col98.clone())) + + (op0_limb_24_col75.clone() * op1_limb_17_col97.clone())) + + (op0_limb_25_col76.clone() * op1_limb_16_col96.clone())) + + (op0_limb_26_col77.clone() * op1_limb_15_col95.clone())) + + (op0_limb_27_col78.clone() * op1_limb_14_col94.clone())), + ); + let conv_tmp_5745_104 = eval.add_intermediate( + (((((((((((((M31_0.clone() + + (op0_limb_15_col66.clone() * op1_limb_27_col107.clone())) + + (op0_limb_16_col67.clone() * op1_limb_26_col106.clone())) + + (op0_limb_17_col68.clone() * op1_limb_25_col105.clone())) + + (op0_limb_18_col69.clone() * op1_limb_24_col104.clone())) + + (op0_limb_19_col70.clone() * op1_limb_23_col103.clone())) + + (op0_limb_20_col71.clone() * op1_limb_22_col102.clone())) + + (op0_limb_21_col72.clone() * op1_limb_21_col101.clone())) + + (op0_limb_22_col73.clone() * op1_limb_20_col100.clone())) + + (op0_limb_23_col74.clone() * op1_limb_19_col99.clone())) + + (op0_limb_24_col75.clone() * op1_limb_18_col98.clone())) + + (op0_limb_25_col76.clone() * op1_limb_17_col97.clone())) + + (op0_limb_26_col77.clone() * op1_limb_16_col96.clone())) + + (op0_limb_27_col78.clone() * op1_limb_15_col95.clone())), + ); + let conv_tmp_5745_105 = eval.add_intermediate( + ((((((((((((M31_0.clone() + + (op0_limb_16_col67.clone() * op1_limb_27_col107.clone())) + + (op0_limb_17_col68.clone() * op1_limb_26_col106.clone())) + + (op0_limb_18_col69.clone() * op1_limb_25_col105.clone())) + + (op0_limb_19_col70.clone() * op1_limb_24_col104.clone())) + + (op0_limb_20_col71.clone() * op1_limb_23_col103.clone())) + + (op0_limb_21_col72.clone() * op1_limb_22_col102.clone())) + + (op0_limb_22_col73.clone() * op1_limb_21_col101.clone())) + + (op0_limb_23_col74.clone() * op1_limb_20_col100.clone())) + + (op0_limb_24_col75.clone() * op1_limb_19_col99.clone())) + + (op0_limb_25_col76.clone() * op1_limb_18_col98.clone())) + + (op0_limb_26_col77.clone() * op1_limb_17_col97.clone())) + + (op0_limb_27_col78.clone() * op1_limb_16_col96.clone())), + ); + let conv_tmp_5745_106 = eval.add_intermediate( + (((((((((((M31_0.clone() + + (op0_limb_17_col68.clone() * op1_limb_27_col107.clone())) + + (op0_limb_18_col69.clone() * op1_limb_26_col106.clone())) + + (op0_limb_19_col70.clone() * op1_limb_25_col105.clone())) + + (op0_limb_20_col71.clone() * op1_limb_24_col104.clone())) + + (op0_limb_21_col72.clone() * op1_limb_23_col103.clone())) + + (op0_limb_22_col73.clone() * op1_limb_22_col102.clone())) + + (op0_limb_23_col74.clone() * op1_limb_21_col101.clone())) + + (op0_limb_24_col75.clone() * op1_limb_20_col100.clone())) + + (op0_limb_25_col76.clone() * op1_limb_19_col99.clone())) + + (op0_limb_26_col77.clone() * op1_limb_18_col98.clone())) + + (op0_limb_27_col78.clone() * op1_limb_17_col97.clone())), + ); + let conv_tmp_5745_107 = eval.add_intermediate( + ((((((((((M31_0.clone() + + (op0_limb_18_col69.clone() * op1_limb_27_col107.clone())) + + (op0_limb_19_col70.clone() * op1_limb_26_col106.clone())) + + (op0_limb_20_col71.clone() * op1_limb_25_col105.clone())) + + (op0_limb_21_col72.clone() * op1_limb_24_col104.clone())) + + (op0_limb_22_col73.clone() * op1_limb_23_col103.clone())) + + (op0_limb_23_col74.clone() * op1_limb_22_col102.clone())) + + (op0_limb_24_col75.clone() * op1_limb_21_col101.clone())) + + (op0_limb_25_col76.clone() * op1_limb_20_col100.clone())) + + (op0_limb_26_col77.clone() * op1_limb_19_col99.clone())) + + (op0_limb_27_col78.clone() * op1_limb_18_col98.clone())), + ); + let conv_tmp_5745_108 = eval.add_intermediate( + (((((((((M31_0.clone() + + (op0_limb_19_col70.clone() * op1_limb_27_col107.clone())) + + (op0_limb_20_col71.clone() * op1_limb_26_col106.clone())) + + (op0_limb_21_col72.clone() * op1_limb_25_col105.clone())) + + (op0_limb_22_col73.clone() * op1_limb_24_col104.clone())) + + (op0_limb_23_col74.clone() * op1_limb_23_col103.clone())) + + (op0_limb_24_col75.clone() * op1_limb_22_col102.clone())) + + (op0_limb_25_col76.clone() * op1_limb_21_col101.clone())) + + (op0_limb_26_col77.clone() * op1_limb_20_col100.clone())) + + (op0_limb_27_col78.clone() * op1_limb_19_col99.clone())), + ); + let conv_tmp_5745_109 = eval.add_intermediate( + ((((((((M31_0.clone() + + (op0_limb_20_col71.clone() * op1_limb_27_col107.clone())) + + (op0_limb_21_col72.clone() * op1_limb_26_col106.clone())) + + (op0_limb_22_col73.clone() * op1_limb_25_col105.clone())) + + (op0_limb_23_col74.clone() * op1_limb_24_col104.clone())) + + (op0_limb_24_col75.clone() * op1_limb_23_col103.clone())) + + (op0_limb_25_col76.clone() * op1_limb_22_col102.clone())) + + (op0_limb_26_col77.clone() * op1_limb_21_col101.clone())) + + (op0_limb_27_col78.clone() * op1_limb_20_col100.clone())), + ); + let conv_tmp_5745_110 = eval.add_intermediate( + (((((((M31_0.clone() + (op0_limb_21_col72.clone() * op1_limb_27_col107.clone())) + + (op0_limb_22_col73.clone() * op1_limb_26_col106.clone())) + + (op0_limb_23_col74.clone() * op1_limb_25_col105.clone())) + + (op0_limb_24_col75.clone() * op1_limb_24_col104.clone())) + + (op0_limb_25_col76.clone() * op1_limb_23_col103.clone())) + + (op0_limb_26_col77.clone() * op1_limb_22_col102.clone())) + + (op0_limb_27_col78.clone() * op1_limb_21_col101.clone())), + ); + let conv_tmp_5745_111 = eval.add_intermediate( + ((((((M31_0.clone() + (op0_limb_22_col73.clone() * op1_limb_27_col107.clone())) + + (op0_limb_23_col74.clone() * op1_limb_26_col106.clone())) + + (op0_limb_24_col75.clone() * op1_limb_25_col105.clone())) + + (op0_limb_25_col76.clone() * op1_limb_24_col104.clone())) + + (op0_limb_26_col77.clone() * op1_limb_23_col103.clone())) + + (op0_limb_27_col78.clone() * op1_limb_22_col102.clone())), + ); + let conv_tmp_5745_112 = eval.add_intermediate( + (((((M31_0.clone() + (op0_limb_23_col74.clone() * op1_limb_27_col107.clone())) + + (op0_limb_24_col75.clone() * op1_limb_26_col106.clone())) + + (op0_limb_25_col76.clone() * op1_limb_25_col105.clone())) + + (op0_limb_26_col77.clone() * op1_limb_24_col104.clone())) + + (op0_limb_27_col78.clone() * op1_limb_23_col103.clone())), + ); + let conv_tmp_5745_113 = eval.add_intermediate( + ((((M31_0.clone() + (op0_limb_24_col75.clone() * op1_limb_27_col107.clone())) + + (op0_limb_25_col76.clone() * op1_limb_26_col106.clone())) + + (op0_limb_26_col77.clone() * op1_limb_25_col105.clone())) + + (op0_limb_27_col78.clone() * op1_limb_24_col104.clone())), + ); + let conv_tmp_5745_114 = eval.add_intermediate( + (((M31_0.clone() + (op0_limb_25_col76.clone() * op1_limb_27_col107.clone())) + + (op0_limb_26_col77.clone() * op1_limb_26_col106.clone())) + + (op0_limb_27_col78.clone() * op1_limb_25_col105.clone())), + ); + let conv_tmp_5745_115 = eval.add_intermediate( + ((M31_0.clone() + (op0_limb_26_col77.clone() * op1_limb_27_col107.clone())) + + (op0_limb_27_col78.clone() * op1_limb_26_col106.clone())), + ); + let conv_tmp_5745_116 = eval.add_intermediate( + (M31_0.clone() + (op0_limb_27_col78.clone() * op1_limb_27_col107.clone())), + ); + let conv_mod_tmp_5745_117 = eval.add_intermediate( + (((M31_0.clone() + (M31_32.clone() * conv_tmp_5745_62.clone())) + - (M31_4.clone() * conv_tmp_5745_83.clone())) + + (M31_8.clone() * conv_tmp_5745_111.clone())), + ); + let conv_mod_tmp_5745_118 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_62.clone())) + + (M31_32.clone() * conv_tmp_5745_63.clone())) + - (M31_4.clone() * conv_tmp_5745_84.clone())) + + (M31_8.clone() * conv_tmp_5745_112.clone())), + ); + let conv_mod_tmp_5745_119 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_63.clone())) + + (M31_32.clone() * conv_tmp_5745_64.clone())) + - (M31_4.clone() * conv_tmp_5745_85.clone())) + + (M31_8.clone() * conv_tmp_5745_113.clone())), + ); + let conv_mod_tmp_5745_120 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_64.clone())) + + (M31_32.clone() * conv_tmp_5745_65.clone())) + - (M31_4.clone() * conv_tmp_5745_86.clone())) + + (M31_8.clone() * conv_tmp_5745_114.clone())), + ); + let conv_mod_tmp_5745_121 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_65.clone())) + + (M31_32.clone() * conv_tmp_5745_66.clone())) + - (M31_4.clone() * conv_tmp_5745_87.clone())) + + (M31_8.clone() * conv_tmp_5745_115.clone())), + ); + let conv_mod_tmp_5745_122 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_66.clone())) + + (M31_32.clone() * conv_tmp_5745_67.clone())) + - (M31_4.clone() * conv_tmp_5745_88.clone())) + + (M31_8.clone() * conv_tmp_5745_116.clone())), + ); + let conv_mod_tmp_5745_123 = eval.add_intermediate( + (((M31_0.clone() + (M31_1.clone() * conv_tmp_5745_67.clone())) + + (M31_32.clone() * conv_tmp_5745_68.clone())) + - (M31_4.clone() * conv_tmp_5745_89.clone())), + ); + let conv_mod_tmp_5745_124 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_62.clone())) + + (M31_1.clone() * conv_tmp_5745_68.clone())) + + (M31_32.clone() * conv_tmp_5745_69.clone())) + - (M31_4.clone() * conv_tmp_5745_90.clone())), + ); + let conv_mod_tmp_5745_125 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_63.clone())) + + (M31_1.clone() * conv_tmp_5745_69.clone())) + + (M31_32.clone() * conv_tmp_5745_70.clone())) + - (M31_4.clone() * conv_tmp_5745_91.clone())), + ); + let conv_mod_tmp_5745_126 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_64.clone())) + + (M31_1.clone() * conv_tmp_5745_70.clone())) + + (M31_32.clone() * conv_tmp_5745_71.clone())) + - (M31_4.clone() * conv_tmp_5745_92.clone())), + ); + let conv_mod_tmp_5745_127 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_65.clone())) + + (M31_1.clone() * conv_tmp_5745_71.clone())) + + (M31_32.clone() * conv_tmp_5745_72.clone())) + - (M31_4.clone() * conv_tmp_5745_93.clone())), + ); + let conv_mod_tmp_5745_128 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_66.clone())) + + (M31_1.clone() * conv_tmp_5745_72.clone())) + + (M31_32.clone() * conv_tmp_5745_73.clone())) + - (M31_4.clone() * conv_tmp_5745_94.clone())), + ); + let conv_mod_tmp_5745_129 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_67.clone())) + + (M31_1.clone() * conv_tmp_5745_73.clone())) + + (M31_32.clone() * conv_tmp_5745_74.clone())) + - (M31_4.clone() * conv_tmp_5745_95.clone())), + ); + let conv_mod_tmp_5745_130 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_68.clone())) + + (M31_1.clone() * conv_tmp_5745_74.clone())) + + (M31_32.clone() * conv_tmp_5745_75.clone())) + - (M31_4.clone() * conv_tmp_5745_96.clone())), + ); + let conv_mod_tmp_5745_131 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_69.clone())) + + (M31_1.clone() * conv_tmp_5745_75.clone())) + + (M31_32.clone() * conv_tmp_5745_76.clone())) + - (M31_4.clone() * conv_tmp_5745_97.clone())), + ); + let conv_mod_tmp_5745_132 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_70.clone())) + + (M31_1.clone() * conv_tmp_5745_76.clone())) + + (M31_32.clone() * conv_tmp_5745_77.clone())) + - (M31_4.clone() * conv_tmp_5745_98.clone())), + ); + let conv_mod_tmp_5745_133 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_71.clone())) + + (M31_1.clone() * conv_tmp_5745_77.clone())) + + (M31_32.clone() * conv_tmp_5745_78.clone())) + - (M31_4.clone() * conv_tmp_5745_99.clone())), + ); + let conv_mod_tmp_5745_134 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_72.clone())) + + (M31_1.clone() * conv_tmp_5745_78.clone())) + + (M31_32.clone() * conv_tmp_5745_79.clone())) + - (M31_4.clone() * conv_tmp_5745_100.clone())), + ); + let conv_mod_tmp_5745_135 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_73.clone())) + + (M31_1.clone() * conv_tmp_5745_79.clone())) + + (M31_32.clone() * conv_tmp_5745_80.clone())) + - (M31_4.clone() * conv_tmp_5745_101.clone())), + ); + let conv_mod_tmp_5745_136 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_74.clone())) + + (M31_1.clone() * conv_tmp_5745_80.clone())) + + (M31_32.clone() * conv_tmp_5745_81.clone())) + - (M31_4.clone() * conv_tmp_5745_102.clone())), + ); + let conv_mod_tmp_5745_137 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_75.clone())) + + (M31_1.clone() * conv_tmp_5745_81.clone())) + + (M31_32.clone() * conv_tmp_5745_82.clone())) + - (M31_4.clone() * conv_tmp_5745_103.clone())), + ); + let conv_mod_tmp_5745_138 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_76.clone())) + + (M31_1.clone() * conv_tmp_5745_82.clone())) + - (M31_4.clone() * conv_tmp_5745_104.clone())) + + (M31_64.clone() * conv_tmp_5745_111.clone())), + ); + let conv_mod_tmp_5745_139 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_77.clone())) + - (M31_4.clone() * conv_tmp_5745_105.clone())) + + (M31_2.clone() * conv_tmp_5745_111.clone())) + + (M31_64.clone() * conv_tmp_5745_112.clone())), + ); + let conv_mod_tmp_5745_140 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_78.clone())) + - (M31_4.clone() * conv_tmp_5745_106.clone())) + + (M31_2.clone() * conv_tmp_5745_112.clone())) + + (M31_64.clone() * conv_tmp_5745_113.clone())), + ); + let conv_mod_tmp_5745_141 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_79.clone())) + - (M31_4.clone() * conv_tmp_5745_107.clone())) + + (M31_2.clone() * conv_tmp_5745_113.clone())) + + (M31_64.clone() * conv_tmp_5745_114.clone())), + ); + let conv_mod_tmp_5745_142 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_80.clone())) + - (M31_4.clone() * conv_tmp_5745_108.clone())) + + (M31_2.clone() * conv_tmp_5745_114.clone())) + + (M31_64.clone() * conv_tmp_5745_115.clone())), + ); + let conv_mod_tmp_5745_143 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_81.clone())) + - (M31_4.clone() * conv_tmp_5745_109.clone())) + + (M31_2.clone() * conv_tmp_5745_115.clone())) + + (M31_64.clone() * conv_tmp_5745_116.clone())), + ); + let conv_mod_tmp_5745_144 = eval.add_intermediate( + (((M31_0.clone() + (M31_2.clone() * conv_tmp_5745_82.clone())) + - (M31_4.clone() * conv_tmp_5745_110.clone())) + + (M31_2.clone() * conv_tmp_5745_116.clone())), + ); eval.add_to_relation(RelationEntry::new( &self.rangecheck_19_lookup_elements, E::EF::one(), @@ -2366,7 +2548,8 @@ impl FrameworkEval for Eval { + carry_26_col192.clone()), ); - let res_constrained_tmp_5745_147 = (M31_1.clone() - pc_update_jnz_col15.clone()); + let res_constrained_tmp_5745_147 = + eval.add_intermediate((M31_1.clone() - pc_update_jnz_col15.clone())); eval.add_constraint( (res_constrained_tmp_5745_147.clone() * (((res_op1_tmp_5745_22.clone() @@ -3137,9 +3320,12 @@ impl FrameworkEval for Eval { * (res_limb_27_col220.clone() - (msb_col221.clone() * M31_256.clone()))), ); - let diff_from_p_tmp_5745_150 = (dst_limb_0_col22.clone() - M31_1.clone()); - let diff_from_p_tmp_5745_151 = (dst_limb_21_col43.clone() - M31_136.clone()); - let diff_from_p_tmp_5745_152 = (dst_limb_27_col49.clone() - M31_256.clone()); + let diff_from_p_tmp_5745_150 = + eval.add_intermediate((dst_limb_0_col22.clone() - M31_1.clone())); + let diff_from_p_tmp_5745_151 = + eval.add_intermediate((dst_limb_21_col43.clone() - M31_136.clone())); + let diff_from_p_tmp_5745_152 = + eval.add_intermediate((dst_limb_27_col49.clone() - M31_256.clone())); // dst_not_p. eval.add_constraint( ((((((((((((((((((((((((((((((M31_0.clone() diff --git a/stwo_cairo_prover/crates/prover/src/components/generic_opcode/prover.rs b/stwo_cairo_prover/crates/prover/src/components/generic_opcode/prover.rs index 2074032c..e617d491 100644 --- a/stwo_cairo_prover/crates/prover/src/components/generic_opcode/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/generic_opcode/prover.rs @@ -1,5 +1,6 @@ #![cfg_attr(rustfmt, rustfmt_skip)]#![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -110,32 +111,9 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs {pub memory_address_to_id_inputs: [Vec; 3],pub memory_id_to_big_inputs: [Vec; 3],pub range_check_19_inputs: [Vec; 28],pub range_check_9_9_inputs: [Vec; 28],pub verify_instruction_inputs: [Vec; 1],} -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self {memory_address_to_id_inputs: [Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),],memory_id_to_big_inputs: [Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),],range_check_19_inputs: [Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),],range_check_9_9_inputs: [Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),Vec::with_capacity(capacity),],verify_instruction_inputs: [Vec::with_capacity(capacity),],} - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.range_check_19_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.range_check_9_9_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_f/prover.rs index f0e9e516..90bd9761 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_t/prover.rs index 64704552..125a74fb 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_f_dst_base_fp_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/component.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/component.rs index a279ad69..a7311ee5 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/component.rs @@ -236,9 +236,12 @@ impl FrameworkEval for Eval { * res_col34.clone()) - M31_1.clone()), ); - let diff_from_p_tmp_490d_7 = (dst_limb_0_col6.clone() - M31_1.clone()); - let diff_from_p_tmp_490d_8 = (dst_limb_21_col27.clone() - M31_136.clone()); - let diff_from_p_tmp_490d_9 = (dst_limb_27_col33.clone() - M31_256.clone()); + let diff_from_p_tmp_490d_7 = + eval.add_intermediate((dst_limb_0_col6.clone() - M31_1.clone())); + let diff_from_p_tmp_490d_8 = + eval.add_intermediate((dst_limb_21_col27.clone() - M31_136.clone())); + let diff_from_p_tmp_490d_9 = + eval.add_intermediate((dst_limb_27_col33.clone() - M31_256.clone())); // dst doesn't equal P. eval.add_constraint( ((((((((((((((((((((((((((((((M31_0.clone() diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/prover.rs index a48176ca..ef67e91f 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,36 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub memory_id_to_big_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [Vec::with_capacity(capacity), Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/component.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/component.rs index f1f2e44a..c97abb10 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/component.rs @@ -236,9 +236,12 @@ impl FrameworkEval for Eval { * res_col34.clone()) - M31_1.clone()), ); - let diff_from_p_tmp_1078_7 = (dst_limb_0_col6.clone() - M31_1.clone()); - let diff_from_p_tmp_1078_8 = (dst_limb_21_col27.clone() - M31_136.clone()); - let diff_from_p_tmp_1078_9 = (dst_limb_27_col33.clone() - M31_256.clone()); + let diff_from_p_tmp_1078_7 = + eval.add_intermediate((dst_limb_0_col6.clone() - M31_1.clone())); + let diff_from_p_tmp_1078_8 = + eval.add_intermediate((dst_limb_21_col27.clone() - M31_136.clone())); + let diff_from_p_tmp_1078_9 = + eval.add_intermediate((dst_limb_27_col33.clone() - M31_256.clone())); // dst doesn't equal P. eval.add_constraint( ((((((((((((((((((((((((((((((M31_0.clone() diff --git a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/prover.rs index 6c32743c..f3bea673 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jnz_opcode_is_taken_t_dst_base_fp_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,36 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub memory_id_to_big_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [Vec::with_capacity(capacity), Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_f/prover.rs index c890f5ad..a6c3cfb5 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_t/prover.rs index b9c86250..b2446713 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_f_is_imm_f_is_double_deref_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,36 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub memory_id_to_big_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [Vec::with_capacity(capacity), Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_f_is_double_deref_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_f_is_double_deref_f/prover.rs index e225d714..2127a5c2 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_f_is_double_deref_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_f_is_double_deref_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_t_is_double_deref_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_t_is_double_deref_f/prover.rs index 8de7ed71..de77998e 100644 --- a/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_t_is_double_deref_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/jump_opcode_is_rel_t_is_imm_t_is_double_deref_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,33 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/component.rs b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/component.rs index ca8fdbd1..0d0a4e64 100644 --- a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/component.rs @@ -399,998 +399,1119 @@ impl FrameworkEval for Eval { // VerifyMul252. - let conv_tmp_5a14_17 = ((M31_0.clone() - dst_limb_0_col12.clone()) - + (op0_limb_0_col41.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_18 = (((M31_0.clone() - dst_limb_1_col13.clone()) - + (op0_limb_0_col41.clone() * op1_limb_1_col71.clone())) - + (op0_limb_1_col42.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_19 = ((((M31_0.clone() - dst_limb_2_col14.clone()) - + (op0_limb_0_col41.clone() * op1_limb_2_col72.clone())) - + (op0_limb_1_col42.clone() * op1_limb_1_col71.clone())) - + (op0_limb_2_col43.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_20 = (((((M31_0.clone() - dst_limb_3_col15.clone()) - + (op0_limb_0_col41.clone() * op1_limb_3_col73.clone())) - + (op0_limb_1_col42.clone() * op1_limb_2_col72.clone())) - + (op0_limb_2_col43.clone() * op1_limb_1_col71.clone())) - + (op0_limb_3_col44.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_21 = ((((((M31_0.clone() - dst_limb_4_col16.clone()) - + (op0_limb_0_col41.clone() * op1_limb_4_col74.clone())) - + (op0_limb_1_col42.clone() * op1_limb_3_col73.clone())) - + (op0_limb_2_col43.clone() * op1_limb_2_col72.clone())) - + (op0_limb_3_col44.clone() * op1_limb_1_col71.clone())) - + (op0_limb_4_col45.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_22 = (((((((M31_0.clone() - dst_limb_5_col17.clone()) - + (op0_limb_0_col41.clone() * op1_limb_5_col75.clone())) - + (op0_limb_1_col42.clone() * op1_limb_4_col74.clone())) - + (op0_limb_2_col43.clone() * op1_limb_3_col73.clone())) - + (op0_limb_3_col44.clone() * op1_limb_2_col72.clone())) - + (op0_limb_4_col45.clone() * op1_limb_1_col71.clone())) - + (op0_limb_5_col46.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_23 = ((((((((M31_0.clone() - dst_limb_6_col18.clone()) - + (op0_limb_0_col41.clone() * op1_limb_6_col76.clone())) - + (op0_limb_1_col42.clone() * op1_limb_5_col75.clone())) - + (op0_limb_2_col43.clone() * op1_limb_4_col74.clone())) - + (op0_limb_3_col44.clone() * op1_limb_3_col73.clone())) - + (op0_limb_4_col45.clone() * op1_limb_2_col72.clone())) - + (op0_limb_5_col46.clone() * op1_limb_1_col71.clone())) - + (op0_limb_6_col47.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_24 = (((((((((M31_0.clone() - dst_limb_7_col19.clone()) - + (op0_limb_0_col41.clone() * op1_limb_7_col77.clone())) - + (op0_limb_1_col42.clone() * op1_limb_6_col76.clone())) - + (op0_limb_2_col43.clone() * op1_limb_5_col75.clone())) - + (op0_limb_3_col44.clone() * op1_limb_4_col74.clone())) - + (op0_limb_4_col45.clone() * op1_limb_3_col73.clone())) - + (op0_limb_5_col46.clone() * op1_limb_2_col72.clone())) - + (op0_limb_6_col47.clone() * op1_limb_1_col71.clone())) - + (op0_limb_7_col48.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_25 = ((((((((((M31_0.clone() - dst_limb_8_col20.clone()) - + (op0_limb_0_col41.clone() * op1_limb_8_col78.clone())) - + (op0_limb_1_col42.clone() * op1_limb_7_col77.clone())) - + (op0_limb_2_col43.clone() * op1_limb_6_col76.clone())) - + (op0_limb_3_col44.clone() * op1_limb_5_col75.clone())) - + (op0_limb_4_col45.clone() * op1_limb_4_col74.clone())) - + (op0_limb_5_col46.clone() * op1_limb_3_col73.clone())) - + (op0_limb_6_col47.clone() * op1_limb_2_col72.clone())) - + (op0_limb_7_col48.clone() * op1_limb_1_col71.clone())) - + (op0_limb_8_col49.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_26 = (((((((((((M31_0.clone() - dst_limb_9_col21.clone()) - + (op0_limb_0_col41.clone() * op1_limb_9_col79.clone())) - + (op0_limb_1_col42.clone() * op1_limb_8_col78.clone())) - + (op0_limb_2_col43.clone() * op1_limb_7_col77.clone())) - + (op0_limb_3_col44.clone() * op1_limb_6_col76.clone())) - + (op0_limb_4_col45.clone() * op1_limb_5_col75.clone())) - + (op0_limb_5_col46.clone() * op1_limb_4_col74.clone())) - + (op0_limb_6_col47.clone() * op1_limb_3_col73.clone())) - + (op0_limb_7_col48.clone() * op1_limb_2_col72.clone())) - + (op0_limb_8_col49.clone() * op1_limb_1_col71.clone())) - + (op0_limb_9_col50.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_27 = ((((((((((((M31_0.clone() - dst_limb_10_col22.clone()) - + (op0_limb_0_col41.clone() * op1_limb_10_col80.clone())) - + (op0_limb_1_col42.clone() * op1_limb_9_col79.clone())) - + (op0_limb_2_col43.clone() * op1_limb_8_col78.clone())) - + (op0_limb_3_col44.clone() * op1_limb_7_col77.clone())) - + (op0_limb_4_col45.clone() * op1_limb_6_col76.clone())) - + (op0_limb_5_col46.clone() * op1_limb_5_col75.clone())) - + (op0_limb_6_col47.clone() * op1_limb_4_col74.clone())) - + (op0_limb_7_col48.clone() * op1_limb_3_col73.clone())) - + (op0_limb_8_col49.clone() * op1_limb_2_col72.clone())) - + (op0_limb_9_col50.clone() * op1_limb_1_col71.clone())) - + (op0_limb_10_col51.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_28 = (((((((((((((M31_0.clone() - dst_limb_11_col23.clone()) - + (op0_limb_0_col41.clone() * op1_limb_11_col81.clone())) - + (op0_limb_1_col42.clone() * op1_limb_10_col80.clone())) - + (op0_limb_2_col43.clone() * op1_limb_9_col79.clone())) - + (op0_limb_3_col44.clone() * op1_limb_8_col78.clone())) - + (op0_limb_4_col45.clone() * op1_limb_7_col77.clone())) - + (op0_limb_5_col46.clone() * op1_limb_6_col76.clone())) - + (op0_limb_6_col47.clone() * op1_limb_5_col75.clone())) - + (op0_limb_7_col48.clone() * op1_limb_4_col74.clone())) - + (op0_limb_8_col49.clone() * op1_limb_3_col73.clone())) - + (op0_limb_9_col50.clone() * op1_limb_2_col72.clone())) - + (op0_limb_10_col51.clone() * op1_limb_1_col71.clone())) - + (op0_limb_11_col52.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_29 = ((((((((((((((M31_0.clone() - - dst_limb_12_col24.clone()) - + (op0_limb_0_col41.clone() * op1_limb_12_col82.clone())) - + (op0_limb_1_col42.clone() * op1_limb_11_col81.clone())) - + (op0_limb_2_col43.clone() * op1_limb_10_col80.clone())) - + (op0_limb_3_col44.clone() * op1_limb_9_col79.clone())) - + (op0_limb_4_col45.clone() * op1_limb_8_col78.clone())) - + (op0_limb_5_col46.clone() * op1_limb_7_col77.clone())) - + (op0_limb_6_col47.clone() * op1_limb_6_col76.clone())) - + (op0_limb_7_col48.clone() * op1_limb_5_col75.clone())) - + (op0_limb_8_col49.clone() * op1_limb_4_col74.clone())) - + (op0_limb_9_col50.clone() * op1_limb_3_col73.clone())) - + (op0_limb_10_col51.clone() * op1_limb_2_col72.clone())) - + (op0_limb_11_col52.clone() * op1_limb_1_col71.clone())) - + (op0_limb_12_col53.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_30 = (((((((((((((((M31_0.clone() - - dst_limb_13_col25.clone()) - + (op0_limb_0_col41.clone() * op1_limb_13_col83.clone())) - + (op0_limb_1_col42.clone() * op1_limb_12_col82.clone())) - + (op0_limb_2_col43.clone() * op1_limb_11_col81.clone())) - + (op0_limb_3_col44.clone() * op1_limb_10_col80.clone())) - + (op0_limb_4_col45.clone() * op1_limb_9_col79.clone())) - + (op0_limb_5_col46.clone() * op1_limb_8_col78.clone())) - + (op0_limb_6_col47.clone() * op1_limb_7_col77.clone())) - + (op0_limb_7_col48.clone() * op1_limb_6_col76.clone())) - + (op0_limb_8_col49.clone() * op1_limb_5_col75.clone())) - + (op0_limb_9_col50.clone() * op1_limb_4_col74.clone())) - + (op0_limb_10_col51.clone() * op1_limb_3_col73.clone())) - + (op0_limb_11_col52.clone() * op1_limb_2_col72.clone())) - + (op0_limb_12_col53.clone() * op1_limb_1_col71.clone())) - + (op0_limb_13_col54.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_31 = ((((((((((((((((M31_0.clone() - - dst_limb_14_col26.clone()) - + (op0_limb_0_col41.clone() * op1_limb_14_col84.clone())) - + (op0_limb_1_col42.clone() * op1_limb_13_col83.clone())) - + (op0_limb_2_col43.clone() * op1_limb_12_col82.clone())) - + (op0_limb_3_col44.clone() * op1_limb_11_col81.clone())) - + (op0_limb_4_col45.clone() * op1_limb_10_col80.clone())) - + (op0_limb_5_col46.clone() * op1_limb_9_col79.clone())) - + (op0_limb_6_col47.clone() * op1_limb_8_col78.clone())) - + (op0_limb_7_col48.clone() * op1_limb_7_col77.clone())) - + (op0_limb_8_col49.clone() * op1_limb_6_col76.clone())) - + (op0_limb_9_col50.clone() * op1_limb_5_col75.clone())) - + (op0_limb_10_col51.clone() * op1_limb_4_col74.clone())) - + (op0_limb_11_col52.clone() * op1_limb_3_col73.clone())) - + (op0_limb_12_col53.clone() * op1_limb_2_col72.clone())) - + (op0_limb_13_col54.clone() * op1_limb_1_col71.clone())) - + (op0_limb_14_col55.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_32 = (((((((((((((((((M31_0.clone() - - dst_limb_15_col27.clone()) - + (op0_limb_0_col41.clone() * op1_limb_15_col85.clone())) - + (op0_limb_1_col42.clone() * op1_limb_14_col84.clone())) - + (op0_limb_2_col43.clone() * op1_limb_13_col83.clone())) - + (op0_limb_3_col44.clone() * op1_limb_12_col82.clone())) - + (op0_limb_4_col45.clone() * op1_limb_11_col81.clone())) - + (op0_limb_5_col46.clone() * op1_limb_10_col80.clone())) - + (op0_limb_6_col47.clone() * op1_limb_9_col79.clone())) - + (op0_limb_7_col48.clone() * op1_limb_8_col78.clone())) - + (op0_limb_8_col49.clone() * op1_limb_7_col77.clone())) - + (op0_limb_9_col50.clone() * op1_limb_6_col76.clone())) - + (op0_limb_10_col51.clone() * op1_limb_5_col75.clone())) - + (op0_limb_11_col52.clone() * op1_limb_4_col74.clone())) - + (op0_limb_12_col53.clone() * op1_limb_3_col73.clone())) - + (op0_limb_13_col54.clone() * op1_limb_2_col72.clone())) - + (op0_limb_14_col55.clone() * op1_limb_1_col71.clone())) - + (op0_limb_15_col56.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_33 = ((((((((((((((((((M31_0.clone() - - dst_limb_16_col28.clone()) - + (op0_limb_0_col41.clone() * op1_limb_16_col86.clone())) - + (op0_limb_1_col42.clone() * op1_limb_15_col85.clone())) - + (op0_limb_2_col43.clone() * op1_limb_14_col84.clone())) - + (op0_limb_3_col44.clone() * op1_limb_13_col83.clone())) - + (op0_limb_4_col45.clone() * op1_limb_12_col82.clone())) - + (op0_limb_5_col46.clone() * op1_limb_11_col81.clone())) - + (op0_limb_6_col47.clone() * op1_limb_10_col80.clone())) - + (op0_limb_7_col48.clone() * op1_limb_9_col79.clone())) - + (op0_limb_8_col49.clone() * op1_limb_8_col78.clone())) - + (op0_limb_9_col50.clone() * op1_limb_7_col77.clone())) - + (op0_limb_10_col51.clone() * op1_limb_6_col76.clone())) - + (op0_limb_11_col52.clone() * op1_limb_5_col75.clone())) - + (op0_limb_12_col53.clone() * op1_limb_4_col74.clone())) - + (op0_limb_13_col54.clone() * op1_limb_3_col73.clone())) - + (op0_limb_14_col55.clone() * op1_limb_2_col72.clone())) - + (op0_limb_15_col56.clone() * op1_limb_1_col71.clone())) - + (op0_limb_16_col57.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_34 = (((((((((((((((((((M31_0.clone() - - dst_limb_17_col29.clone()) - + (op0_limb_0_col41.clone() * op1_limb_17_col87.clone())) - + (op0_limb_1_col42.clone() * op1_limb_16_col86.clone())) - + (op0_limb_2_col43.clone() * op1_limb_15_col85.clone())) - + (op0_limb_3_col44.clone() * op1_limb_14_col84.clone())) - + (op0_limb_4_col45.clone() * op1_limb_13_col83.clone())) - + (op0_limb_5_col46.clone() * op1_limb_12_col82.clone())) - + (op0_limb_6_col47.clone() * op1_limb_11_col81.clone())) - + (op0_limb_7_col48.clone() * op1_limb_10_col80.clone())) - + (op0_limb_8_col49.clone() * op1_limb_9_col79.clone())) - + (op0_limb_9_col50.clone() * op1_limb_8_col78.clone())) - + (op0_limb_10_col51.clone() * op1_limb_7_col77.clone())) - + (op0_limb_11_col52.clone() * op1_limb_6_col76.clone())) - + (op0_limb_12_col53.clone() * op1_limb_5_col75.clone())) - + (op0_limb_13_col54.clone() * op1_limb_4_col74.clone())) - + (op0_limb_14_col55.clone() * op1_limb_3_col73.clone())) - + (op0_limb_15_col56.clone() * op1_limb_2_col72.clone())) - + (op0_limb_16_col57.clone() * op1_limb_1_col71.clone())) - + (op0_limb_17_col58.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_35 = ((((((((((((((((((((M31_0.clone() - - dst_limb_18_col30.clone()) - + (op0_limb_0_col41.clone() * op1_limb_18_col88.clone())) - + (op0_limb_1_col42.clone() * op1_limb_17_col87.clone())) - + (op0_limb_2_col43.clone() * op1_limb_16_col86.clone())) - + (op0_limb_3_col44.clone() * op1_limb_15_col85.clone())) - + (op0_limb_4_col45.clone() * op1_limb_14_col84.clone())) - + (op0_limb_5_col46.clone() * op1_limb_13_col83.clone())) - + (op0_limb_6_col47.clone() * op1_limb_12_col82.clone())) - + (op0_limb_7_col48.clone() * op1_limb_11_col81.clone())) - + (op0_limb_8_col49.clone() * op1_limb_10_col80.clone())) - + (op0_limb_9_col50.clone() * op1_limb_9_col79.clone())) - + (op0_limb_10_col51.clone() * op1_limb_8_col78.clone())) - + (op0_limb_11_col52.clone() * op1_limb_7_col77.clone())) - + (op0_limb_12_col53.clone() * op1_limb_6_col76.clone())) - + (op0_limb_13_col54.clone() * op1_limb_5_col75.clone())) - + (op0_limb_14_col55.clone() * op1_limb_4_col74.clone())) - + (op0_limb_15_col56.clone() * op1_limb_3_col73.clone())) - + (op0_limb_16_col57.clone() * op1_limb_2_col72.clone())) - + (op0_limb_17_col58.clone() * op1_limb_1_col71.clone())) - + (op0_limb_18_col59.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_36 = (((((((((((((((((((((M31_0.clone() - - dst_limb_19_col31.clone()) - + (op0_limb_0_col41.clone() * op1_limb_19_col89.clone())) - + (op0_limb_1_col42.clone() * op1_limb_18_col88.clone())) - + (op0_limb_2_col43.clone() * op1_limb_17_col87.clone())) - + (op0_limb_3_col44.clone() * op1_limb_16_col86.clone())) - + (op0_limb_4_col45.clone() * op1_limb_15_col85.clone())) - + (op0_limb_5_col46.clone() * op1_limb_14_col84.clone())) - + (op0_limb_6_col47.clone() * op1_limb_13_col83.clone())) - + (op0_limb_7_col48.clone() * op1_limb_12_col82.clone())) - + (op0_limb_8_col49.clone() * op1_limb_11_col81.clone())) - + (op0_limb_9_col50.clone() * op1_limb_10_col80.clone())) - + (op0_limb_10_col51.clone() * op1_limb_9_col79.clone())) - + (op0_limb_11_col52.clone() * op1_limb_8_col78.clone())) - + (op0_limb_12_col53.clone() * op1_limb_7_col77.clone())) - + (op0_limb_13_col54.clone() * op1_limb_6_col76.clone())) - + (op0_limb_14_col55.clone() * op1_limb_5_col75.clone())) - + (op0_limb_15_col56.clone() * op1_limb_4_col74.clone())) - + (op0_limb_16_col57.clone() * op1_limb_3_col73.clone())) - + (op0_limb_17_col58.clone() * op1_limb_2_col72.clone())) - + (op0_limb_18_col59.clone() * op1_limb_1_col71.clone())) - + (op0_limb_19_col60.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_37 = ((((((((((((((((((((((M31_0.clone() - - dst_limb_20_col32.clone()) - + (op0_limb_0_col41.clone() * op1_limb_20_col90.clone())) - + (op0_limb_1_col42.clone() * op1_limb_19_col89.clone())) - + (op0_limb_2_col43.clone() * op1_limb_18_col88.clone())) - + (op0_limb_3_col44.clone() * op1_limb_17_col87.clone())) - + (op0_limb_4_col45.clone() * op1_limb_16_col86.clone())) - + (op0_limb_5_col46.clone() * op1_limb_15_col85.clone())) - + (op0_limb_6_col47.clone() * op1_limb_14_col84.clone())) - + (op0_limb_7_col48.clone() * op1_limb_13_col83.clone())) - + (op0_limb_8_col49.clone() * op1_limb_12_col82.clone())) - + (op0_limb_9_col50.clone() * op1_limb_11_col81.clone())) - + (op0_limb_10_col51.clone() * op1_limb_10_col80.clone())) - + (op0_limb_11_col52.clone() * op1_limb_9_col79.clone())) - + (op0_limb_12_col53.clone() * op1_limb_8_col78.clone())) - + (op0_limb_13_col54.clone() * op1_limb_7_col77.clone())) - + (op0_limb_14_col55.clone() * op1_limb_6_col76.clone())) - + (op0_limb_15_col56.clone() * op1_limb_5_col75.clone())) - + (op0_limb_16_col57.clone() * op1_limb_4_col74.clone())) - + (op0_limb_17_col58.clone() * op1_limb_3_col73.clone())) - + (op0_limb_18_col59.clone() * op1_limb_2_col72.clone())) - + (op0_limb_19_col60.clone() * op1_limb_1_col71.clone())) - + (op0_limb_20_col61.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_38 = (((((((((((((((((((((((M31_0.clone() - - dst_limb_21_col33.clone()) - + (op0_limb_0_col41.clone() * op1_limb_21_col91.clone())) - + (op0_limb_1_col42.clone() * op1_limb_20_col90.clone())) - + (op0_limb_2_col43.clone() * op1_limb_19_col89.clone())) - + (op0_limb_3_col44.clone() * op1_limb_18_col88.clone())) - + (op0_limb_4_col45.clone() * op1_limb_17_col87.clone())) - + (op0_limb_5_col46.clone() * op1_limb_16_col86.clone())) - + (op0_limb_6_col47.clone() * op1_limb_15_col85.clone())) - + (op0_limb_7_col48.clone() * op1_limb_14_col84.clone())) - + (op0_limb_8_col49.clone() * op1_limb_13_col83.clone())) - + (op0_limb_9_col50.clone() * op1_limb_12_col82.clone())) - + (op0_limb_10_col51.clone() * op1_limb_11_col81.clone())) - + (op0_limb_11_col52.clone() * op1_limb_10_col80.clone())) - + (op0_limb_12_col53.clone() * op1_limb_9_col79.clone())) - + (op0_limb_13_col54.clone() * op1_limb_8_col78.clone())) - + (op0_limb_14_col55.clone() * op1_limb_7_col77.clone())) - + (op0_limb_15_col56.clone() * op1_limb_6_col76.clone())) - + (op0_limb_16_col57.clone() * op1_limb_5_col75.clone())) - + (op0_limb_17_col58.clone() * op1_limb_4_col74.clone())) - + (op0_limb_18_col59.clone() * op1_limb_3_col73.clone())) - + (op0_limb_19_col60.clone() * op1_limb_2_col72.clone())) - + (op0_limb_20_col61.clone() * op1_limb_1_col71.clone())) - + (op0_limb_21_col62.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_39 = ((((((((((((((((((((((((M31_0.clone() - - dst_limb_22_col34.clone()) - + (op0_limb_0_col41.clone() * op1_limb_22_col92.clone())) - + (op0_limb_1_col42.clone() * op1_limb_21_col91.clone())) - + (op0_limb_2_col43.clone() * op1_limb_20_col90.clone())) - + (op0_limb_3_col44.clone() * op1_limb_19_col89.clone())) - + (op0_limb_4_col45.clone() * op1_limb_18_col88.clone())) - + (op0_limb_5_col46.clone() * op1_limb_17_col87.clone())) - + (op0_limb_6_col47.clone() * op1_limb_16_col86.clone())) - + (op0_limb_7_col48.clone() * op1_limb_15_col85.clone())) - + (op0_limb_8_col49.clone() * op1_limb_14_col84.clone())) - + (op0_limb_9_col50.clone() * op1_limb_13_col83.clone())) - + (op0_limb_10_col51.clone() * op1_limb_12_col82.clone())) - + (op0_limb_11_col52.clone() * op1_limb_11_col81.clone())) - + (op0_limb_12_col53.clone() * op1_limb_10_col80.clone())) - + (op0_limb_13_col54.clone() * op1_limb_9_col79.clone())) - + (op0_limb_14_col55.clone() * op1_limb_8_col78.clone())) - + (op0_limb_15_col56.clone() * op1_limb_7_col77.clone())) - + (op0_limb_16_col57.clone() * op1_limb_6_col76.clone())) - + (op0_limb_17_col58.clone() * op1_limb_5_col75.clone())) - + (op0_limb_18_col59.clone() * op1_limb_4_col74.clone())) - + (op0_limb_19_col60.clone() * op1_limb_3_col73.clone())) - + (op0_limb_20_col61.clone() * op1_limb_2_col72.clone())) - + (op0_limb_21_col62.clone() * op1_limb_1_col71.clone())) - + (op0_limb_22_col63.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_40 = (((((((((((((((((((((((((M31_0.clone() - - dst_limb_23_col35.clone()) - + (op0_limb_0_col41.clone() * op1_limb_23_col93.clone())) - + (op0_limb_1_col42.clone() * op1_limb_22_col92.clone())) - + (op0_limb_2_col43.clone() * op1_limb_21_col91.clone())) - + (op0_limb_3_col44.clone() * op1_limb_20_col90.clone())) - + (op0_limb_4_col45.clone() * op1_limb_19_col89.clone())) - + (op0_limb_5_col46.clone() * op1_limb_18_col88.clone())) - + (op0_limb_6_col47.clone() * op1_limb_17_col87.clone())) - + (op0_limb_7_col48.clone() * op1_limb_16_col86.clone())) - + (op0_limb_8_col49.clone() * op1_limb_15_col85.clone())) - + (op0_limb_9_col50.clone() * op1_limb_14_col84.clone())) - + (op0_limb_10_col51.clone() * op1_limb_13_col83.clone())) - + (op0_limb_11_col52.clone() * op1_limb_12_col82.clone())) - + (op0_limb_12_col53.clone() * op1_limb_11_col81.clone())) - + (op0_limb_13_col54.clone() * op1_limb_10_col80.clone())) - + (op0_limb_14_col55.clone() * op1_limb_9_col79.clone())) - + (op0_limb_15_col56.clone() * op1_limb_8_col78.clone())) - + (op0_limb_16_col57.clone() * op1_limb_7_col77.clone())) - + (op0_limb_17_col58.clone() * op1_limb_6_col76.clone())) - + (op0_limb_18_col59.clone() * op1_limb_5_col75.clone())) - + (op0_limb_19_col60.clone() * op1_limb_4_col74.clone())) - + (op0_limb_20_col61.clone() * op1_limb_3_col73.clone())) - + (op0_limb_21_col62.clone() * op1_limb_2_col72.clone())) - + (op0_limb_22_col63.clone() * op1_limb_1_col71.clone())) - + (op0_limb_23_col64.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_41 = ((((((((((((((((((((((((((M31_0.clone() - - dst_limb_24_col36.clone()) - + (op0_limb_0_col41.clone() * op1_limb_24_col94.clone())) - + (op0_limb_1_col42.clone() * op1_limb_23_col93.clone())) - + (op0_limb_2_col43.clone() * op1_limb_22_col92.clone())) - + (op0_limb_3_col44.clone() * op1_limb_21_col91.clone())) - + (op0_limb_4_col45.clone() * op1_limb_20_col90.clone())) - + (op0_limb_5_col46.clone() * op1_limb_19_col89.clone())) - + (op0_limb_6_col47.clone() * op1_limb_18_col88.clone())) - + (op0_limb_7_col48.clone() * op1_limb_17_col87.clone())) - + (op0_limb_8_col49.clone() * op1_limb_16_col86.clone())) - + (op0_limb_9_col50.clone() * op1_limb_15_col85.clone())) - + (op0_limb_10_col51.clone() * op1_limb_14_col84.clone())) - + (op0_limb_11_col52.clone() * op1_limb_13_col83.clone())) - + (op0_limb_12_col53.clone() * op1_limb_12_col82.clone())) - + (op0_limb_13_col54.clone() * op1_limb_11_col81.clone())) - + (op0_limb_14_col55.clone() * op1_limb_10_col80.clone())) - + (op0_limb_15_col56.clone() * op1_limb_9_col79.clone())) - + (op0_limb_16_col57.clone() * op1_limb_8_col78.clone())) - + (op0_limb_17_col58.clone() * op1_limb_7_col77.clone())) - + (op0_limb_18_col59.clone() * op1_limb_6_col76.clone())) - + (op0_limb_19_col60.clone() * op1_limb_5_col75.clone())) - + (op0_limb_20_col61.clone() * op1_limb_4_col74.clone())) - + (op0_limb_21_col62.clone() * op1_limb_3_col73.clone())) - + (op0_limb_22_col63.clone() * op1_limb_2_col72.clone())) - + (op0_limb_23_col64.clone() * op1_limb_1_col71.clone())) - + (op0_limb_24_col65.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_42 = (((((((((((((((((((((((((((M31_0.clone() - - dst_limb_25_col37.clone()) - + (op0_limb_0_col41.clone() * op1_limb_25_col95.clone())) - + (op0_limb_1_col42.clone() * op1_limb_24_col94.clone())) - + (op0_limb_2_col43.clone() * op1_limb_23_col93.clone())) - + (op0_limb_3_col44.clone() * op1_limb_22_col92.clone())) - + (op0_limb_4_col45.clone() * op1_limb_21_col91.clone())) - + (op0_limb_5_col46.clone() * op1_limb_20_col90.clone())) - + (op0_limb_6_col47.clone() * op1_limb_19_col89.clone())) - + (op0_limb_7_col48.clone() * op1_limb_18_col88.clone())) - + (op0_limb_8_col49.clone() * op1_limb_17_col87.clone())) - + (op0_limb_9_col50.clone() * op1_limb_16_col86.clone())) - + (op0_limb_10_col51.clone() * op1_limb_15_col85.clone())) - + (op0_limb_11_col52.clone() * op1_limb_14_col84.clone())) - + (op0_limb_12_col53.clone() * op1_limb_13_col83.clone())) - + (op0_limb_13_col54.clone() * op1_limb_12_col82.clone())) - + (op0_limb_14_col55.clone() * op1_limb_11_col81.clone())) - + (op0_limb_15_col56.clone() * op1_limb_10_col80.clone())) - + (op0_limb_16_col57.clone() * op1_limb_9_col79.clone())) - + (op0_limb_17_col58.clone() * op1_limb_8_col78.clone())) - + (op0_limb_18_col59.clone() * op1_limb_7_col77.clone())) - + (op0_limb_19_col60.clone() * op1_limb_6_col76.clone())) - + (op0_limb_20_col61.clone() * op1_limb_5_col75.clone())) - + (op0_limb_21_col62.clone() * op1_limb_4_col74.clone())) - + (op0_limb_22_col63.clone() * op1_limb_3_col73.clone())) - + (op0_limb_23_col64.clone() * op1_limb_2_col72.clone())) - + (op0_limb_24_col65.clone() * op1_limb_1_col71.clone())) - + (op0_limb_25_col66.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_43 = ((((((((((((((((((((((((((((M31_0 - .clone() - - dst_limb_26_col38.clone()) - + (op0_limb_0_col41.clone() * op1_limb_26_col96.clone())) - + (op0_limb_1_col42.clone() * op1_limb_25_col95.clone())) - + (op0_limb_2_col43.clone() * op1_limb_24_col94.clone())) - + (op0_limb_3_col44.clone() * op1_limb_23_col93.clone())) - + (op0_limb_4_col45.clone() * op1_limb_22_col92.clone())) - + (op0_limb_5_col46.clone() * op1_limb_21_col91.clone())) - + (op0_limb_6_col47.clone() * op1_limb_20_col90.clone())) - + (op0_limb_7_col48.clone() * op1_limb_19_col89.clone())) - + (op0_limb_8_col49.clone() * op1_limb_18_col88.clone())) - + (op0_limb_9_col50.clone() * op1_limb_17_col87.clone())) - + (op0_limb_10_col51.clone() * op1_limb_16_col86.clone())) - + (op0_limb_11_col52.clone() * op1_limb_15_col85.clone())) - + (op0_limb_12_col53.clone() * op1_limb_14_col84.clone())) - + (op0_limb_13_col54.clone() * op1_limb_13_col83.clone())) - + (op0_limb_14_col55.clone() * op1_limb_12_col82.clone())) - + (op0_limb_15_col56.clone() * op1_limb_11_col81.clone())) - + (op0_limb_16_col57.clone() * op1_limb_10_col80.clone())) - + (op0_limb_17_col58.clone() * op1_limb_9_col79.clone())) - + (op0_limb_18_col59.clone() * op1_limb_8_col78.clone())) - + (op0_limb_19_col60.clone() * op1_limb_7_col77.clone())) - + (op0_limb_20_col61.clone() * op1_limb_6_col76.clone())) - + (op0_limb_21_col62.clone() * op1_limb_5_col75.clone())) - + (op0_limb_22_col63.clone() * op1_limb_4_col74.clone())) - + (op0_limb_23_col64.clone() * op1_limb_3_col73.clone())) - + (op0_limb_24_col65.clone() * op1_limb_2_col72.clone())) - + (op0_limb_25_col66.clone() * op1_limb_1_col71.clone())) - + (op0_limb_26_col67.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_44 = (((((((((((((((((((((((((((((M31_0 - .clone() - - dst_limb_27_col39.clone()) - + (op0_limb_0_col41.clone() * op1_limb_27_col97.clone())) - + (op0_limb_1_col42.clone() * op1_limb_26_col96.clone())) - + (op0_limb_2_col43.clone() * op1_limb_25_col95.clone())) - + (op0_limb_3_col44.clone() * op1_limb_24_col94.clone())) - + (op0_limb_4_col45.clone() * op1_limb_23_col93.clone())) - + (op0_limb_5_col46.clone() * op1_limb_22_col92.clone())) - + (op0_limb_6_col47.clone() * op1_limb_21_col91.clone())) - + (op0_limb_7_col48.clone() * op1_limb_20_col90.clone())) - + (op0_limb_8_col49.clone() * op1_limb_19_col89.clone())) - + (op0_limb_9_col50.clone() * op1_limb_18_col88.clone())) - + (op0_limb_10_col51.clone() * op1_limb_17_col87.clone())) - + (op0_limb_11_col52.clone() * op1_limb_16_col86.clone())) - + (op0_limb_12_col53.clone() * op1_limb_15_col85.clone())) - + (op0_limb_13_col54.clone() * op1_limb_14_col84.clone())) - + (op0_limb_14_col55.clone() * op1_limb_13_col83.clone())) - + (op0_limb_15_col56.clone() * op1_limb_12_col82.clone())) - + (op0_limb_16_col57.clone() * op1_limb_11_col81.clone())) - + (op0_limb_17_col58.clone() * op1_limb_10_col80.clone())) - + (op0_limb_18_col59.clone() * op1_limb_9_col79.clone())) - + (op0_limb_19_col60.clone() * op1_limb_8_col78.clone())) - + (op0_limb_20_col61.clone() * op1_limb_7_col77.clone())) - + (op0_limb_21_col62.clone() * op1_limb_6_col76.clone())) - + (op0_limb_22_col63.clone() * op1_limb_5_col75.clone())) - + (op0_limb_23_col64.clone() * op1_limb_4_col74.clone())) - + (op0_limb_24_col65.clone() * op1_limb_3_col73.clone())) - + (op0_limb_25_col66.clone() * op1_limb_2_col72.clone())) - + (op0_limb_26_col67.clone() * op1_limb_1_col71.clone())) - + (op0_limb_27_col68.clone() * op1_limb_0_col70.clone())); - let conv_tmp_5a14_45 = (((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_1_col42.clone() * op1_limb_27_col97.clone())) - + (op0_limb_2_col43.clone() * op1_limb_26_col96.clone())) - + (op0_limb_3_col44.clone() * op1_limb_25_col95.clone())) - + (op0_limb_4_col45.clone() * op1_limb_24_col94.clone())) - + (op0_limb_5_col46.clone() * op1_limb_23_col93.clone())) - + (op0_limb_6_col47.clone() * op1_limb_22_col92.clone())) - + (op0_limb_7_col48.clone() * op1_limb_21_col91.clone())) - + (op0_limb_8_col49.clone() * op1_limb_20_col90.clone())) - + (op0_limb_9_col50.clone() * op1_limb_19_col89.clone())) - + (op0_limb_10_col51.clone() * op1_limb_18_col88.clone())) - + (op0_limb_11_col52.clone() * op1_limb_17_col87.clone())) - + (op0_limb_12_col53.clone() * op1_limb_16_col86.clone())) - + (op0_limb_13_col54.clone() * op1_limb_15_col85.clone())) - + (op0_limb_14_col55.clone() * op1_limb_14_col84.clone())) - + (op0_limb_15_col56.clone() * op1_limb_13_col83.clone())) - + (op0_limb_16_col57.clone() * op1_limb_12_col82.clone())) - + (op0_limb_17_col58.clone() * op1_limb_11_col81.clone())) - + (op0_limb_18_col59.clone() * op1_limb_10_col80.clone())) - + (op0_limb_19_col60.clone() * op1_limb_9_col79.clone())) - + (op0_limb_20_col61.clone() * op1_limb_8_col78.clone())) - + (op0_limb_21_col62.clone() * op1_limb_7_col77.clone())) - + (op0_limb_22_col63.clone() * op1_limb_6_col76.clone())) - + (op0_limb_23_col64.clone() * op1_limb_5_col75.clone())) - + (op0_limb_24_col65.clone() * op1_limb_4_col74.clone())) - + (op0_limb_25_col66.clone() * op1_limb_3_col73.clone())) - + (op0_limb_26_col67.clone() * op1_limb_2_col72.clone())) - + (op0_limb_27_col68.clone() * op1_limb_1_col71.clone())); - let conv_tmp_5a14_46 = ((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_2_col43.clone() * op1_limb_27_col97.clone())) - + (op0_limb_3_col44.clone() * op1_limb_26_col96.clone())) - + (op0_limb_4_col45.clone() * op1_limb_25_col95.clone())) - + (op0_limb_5_col46.clone() * op1_limb_24_col94.clone())) - + (op0_limb_6_col47.clone() * op1_limb_23_col93.clone())) - + (op0_limb_7_col48.clone() * op1_limb_22_col92.clone())) - + (op0_limb_8_col49.clone() * op1_limb_21_col91.clone())) - + (op0_limb_9_col50.clone() * op1_limb_20_col90.clone())) - + (op0_limb_10_col51.clone() * op1_limb_19_col89.clone())) - + (op0_limb_11_col52.clone() * op1_limb_18_col88.clone())) - + (op0_limb_12_col53.clone() * op1_limb_17_col87.clone())) - + (op0_limb_13_col54.clone() * op1_limb_16_col86.clone())) - + (op0_limb_14_col55.clone() * op1_limb_15_col85.clone())) - + (op0_limb_15_col56.clone() * op1_limb_14_col84.clone())) - + (op0_limb_16_col57.clone() * op1_limb_13_col83.clone())) - + (op0_limb_17_col58.clone() * op1_limb_12_col82.clone())) - + (op0_limb_18_col59.clone() * op1_limb_11_col81.clone())) - + (op0_limb_19_col60.clone() * op1_limb_10_col80.clone())) - + (op0_limb_20_col61.clone() * op1_limb_9_col79.clone())) - + (op0_limb_21_col62.clone() * op1_limb_8_col78.clone())) - + (op0_limb_22_col63.clone() * op1_limb_7_col77.clone())) - + (op0_limb_23_col64.clone() * op1_limb_6_col76.clone())) - + (op0_limb_24_col65.clone() * op1_limb_5_col75.clone())) - + (op0_limb_25_col66.clone() * op1_limb_4_col74.clone())) - + (op0_limb_26_col67.clone() * op1_limb_3_col73.clone())) - + (op0_limb_27_col68.clone() * op1_limb_2_col72.clone())); - let conv_tmp_5a14_47 = (((((((((((((((((((((((((M31_0.clone() - + (op0_limb_3_col44.clone() * op1_limb_27_col97.clone())) - + (op0_limb_4_col45.clone() * op1_limb_26_col96.clone())) - + (op0_limb_5_col46.clone() * op1_limb_25_col95.clone())) - + (op0_limb_6_col47.clone() * op1_limb_24_col94.clone())) - + (op0_limb_7_col48.clone() * op1_limb_23_col93.clone())) - + (op0_limb_8_col49.clone() * op1_limb_22_col92.clone())) - + (op0_limb_9_col50.clone() * op1_limb_21_col91.clone())) - + (op0_limb_10_col51.clone() * op1_limb_20_col90.clone())) - + (op0_limb_11_col52.clone() * op1_limb_19_col89.clone())) - + (op0_limb_12_col53.clone() * op1_limb_18_col88.clone())) - + (op0_limb_13_col54.clone() * op1_limb_17_col87.clone())) - + (op0_limb_14_col55.clone() * op1_limb_16_col86.clone())) - + (op0_limb_15_col56.clone() * op1_limb_15_col85.clone())) - + (op0_limb_16_col57.clone() * op1_limb_14_col84.clone())) - + (op0_limb_17_col58.clone() * op1_limb_13_col83.clone())) - + (op0_limb_18_col59.clone() * op1_limb_12_col82.clone())) - + (op0_limb_19_col60.clone() * op1_limb_11_col81.clone())) - + (op0_limb_20_col61.clone() * op1_limb_10_col80.clone())) - + (op0_limb_21_col62.clone() * op1_limb_9_col79.clone())) - + (op0_limb_22_col63.clone() * op1_limb_8_col78.clone())) - + (op0_limb_23_col64.clone() * op1_limb_7_col77.clone())) - + (op0_limb_24_col65.clone() * op1_limb_6_col76.clone())) - + (op0_limb_25_col66.clone() * op1_limb_5_col75.clone())) - + (op0_limb_26_col67.clone() * op1_limb_4_col74.clone())) - + (op0_limb_27_col68.clone() * op1_limb_3_col73.clone())); - let conv_tmp_5a14_48 = ((((((((((((((((((((((((M31_0.clone() - + (op0_limb_4_col45.clone() * op1_limb_27_col97.clone())) - + (op0_limb_5_col46.clone() * op1_limb_26_col96.clone())) - + (op0_limb_6_col47.clone() * op1_limb_25_col95.clone())) - + (op0_limb_7_col48.clone() * op1_limb_24_col94.clone())) - + (op0_limb_8_col49.clone() * op1_limb_23_col93.clone())) - + (op0_limb_9_col50.clone() * op1_limb_22_col92.clone())) - + (op0_limb_10_col51.clone() * op1_limb_21_col91.clone())) - + (op0_limb_11_col52.clone() * op1_limb_20_col90.clone())) - + (op0_limb_12_col53.clone() * op1_limb_19_col89.clone())) - + (op0_limb_13_col54.clone() * op1_limb_18_col88.clone())) - + (op0_limb_14_col55.clone() * op1_limb_17_col87.clone())) - + (op0_limb_15_col56.clone() * op1_limb_16_col86.clone())) - + (op0_limb_16_col57.clone() * op1_limb_15_col85.clone())) - + (op0_limb_17_col58.clone() * op1_limb_14_col84.clone())) - + (op0_limb_18_col59.clone() * op1_limb_13_col83.clone())) - + (op0_limb_19_col60.clone() * op1_limb_12_col82.clone())) - + (op0_limb_20_col61.clone() * op1_limb_11_col81.clone())) - + (op0_limb_21_col62.clone() * op1_limb_10_col80.clone())) - + (op0_limb_22_col63.clone() * op1_limb_9_col79.clone())) - + (op0_limb_23_col64.clone() * op1_limb_8_col78.clone())) - + (op0_limb_24_col65.clone() * op1_limb_7_col77.clone())) - + (op0_limb_25_col66.clone() * op1_limb_6_col76.clone())) - + (op0_limb_26_col67.clone() * op1_limb_5_col75.clone())) - + (op0_limb_27_col68.clone() * op1_limb_4_col74.clone())); - let conv_tmp_5a14_49 = (((((((((((((((((((((((M31_0.clone() - + (op0_limb_5_col46.clone() * op1_limb_27_col97.clone())) - + (op0_limb_6_col47.clone() * op1_limb_26_col96.clone())) - + (op0_limb_7_col48.clone() * op1_limb_25_col95.clone())) - + (op0_limb_8_col49.clone() * op1_limb_24_col94.clone())) - + (op0_limb_9_col50.clone() * op1_limb_23_col93.clone())) - + (op0_limb_10_col51.clone() * op1_limb_22_col92.clone())) - + (op0_limb_11_col52.clone() * op1_limb_21_col91.clone())) - + (op0_limb_12_col53.clone() * op1_limb_20_col90.clone())) - + (op0_limb_13_col54.clone() * op1_limb_19_col89.clone())) - + (op0_limb_14_col55.clone() * op1_limb_18_col88.clone())) - + (op0_limb_15_col56.clone() * op1_limb_17_col87.clone())) - + (op0_limb_16_col57.clone() * op1_limb_16_col86.clone())) - + (op0_limb_17_col58.clone() * op1_limb_15_col85.clone())) - + (op0_limb_18_col59.clone() * op1_limb_14_col84.clone())) - + (op0_limb_19_col60.clone() * op1_limb_13_col83.clone())) - + (op0_limb_20_col61.clone() * op1_limb_12_col82.clone())) - + (op0_limb_21_col62.clone() * op1_limb_11_col81.clone())) - + (op0_limb_22_col63.clone() * op1_limb_10_col80.clone())) - + (op0_limb_23_col64.clone() * op1_limb_9_col79.clone())) - + (op0_limb_24_col65.clone() * op1_limb_8_col78.clone())) - + (op0_limb_25_col66.clone() * op1_limb_7_col77.clone())) - + (op0_limb_26_col67.clone() * op1_limb_6_col76.clone())) - + (op0_limb_27_col68.clone() * op1_limb_5_col75.clone())); - let conv_tmp_5a14_50 = ((((((((((((((((((((((M31_0.clone() - + (op0_limb_6_col47.clone() * op1_limb_27_col97.clone())) - + (op0_limb_7_col48.clone() * op1_limb_26_col96.clone())) - + (op0_limb_8_col49.clone() * op1_limb_25_col95.clone())) - + (op0_limb_9_col50.clone() * op1_limb_24_col94.clone())) - + (op0_limb_10_col51.clone() * op1_limb_23_col93.clone())) - + (op0_limb_11_col52.clone() * op1_limb_22_col92.clone())) - + (op0_limb_12_col53.clone() * op1_limb_21_col91.clone())) - + (op0_limb_13_col54.clone() * op1_limb_20_col90.clone())) - + (op0_limb_14_col55.clone() * op1_limb_19_col89.clone())) - + (op0_limb_15_col56.clone() * op1_limb_18_col88.clone())) - + (op0_limb_16_col57.clone() * op1_limb_17_col87.clone())) - + (op0_limb_17_col58.clone() * op1_limb_16_col86.clone())) - + (op0_limb_18_col59.clone() * op1_limb_15_col85.clone())) - + (op0_limb_19_col60.clone() * op1_limb_14_col84.clone())) - + (op0_limb_20_col61.clone() * op1_limb_13_col83.clone())) - + (op0_limb_21_col62.clone() * op1_limb_12_col82.clone())) - + (op0_limb_22_col63.clone() * op1_limb_11_col81.clone())) - + (op0_limb_23_col64.clone() * op1_limb_10_col80.clone())) - + (op0_limb_24_col65.clone() * op1_limb_9_col79.clone())) - + (op0_limb_25_col66.clone() * op1_limb_8_col78.clone())) - + (op0_limb_26_col67.clone() * op1_limb_7_col77.clone())) - + (op0_limb_27_col68.clone() * op1_limb_6_col76.clone())); - let conv_tmp_5a14_51 = (((((((((((((((((((((M31_0.clone() - + (op0_limb_7_col48.clone() * op1_limb_27_col97.clone())) - + (op0_limb_8_col49.clone() * op1_limb_26_col96.clone())) - + (op0_limb_9_col50.clone() * op1_limb_25_col95.clone())) - + (op0_limb_10_col51.clone() * op1_limb_24_col94.clone())) - + (op0_limb_11_col52.clone() * op1_limb_23_col93.clone())) - + (op0_limb_12_col53.clone() * op1_limb_22_col92.clone())) - + (op0_limb_13_col54.clone() * op1_limb_21_col91.clone())) - + (op0_limb_14_col55.clone() * op1_limb_20_col90.clone())) - + (op0_limb_15_col56.clone() * op1_limb_19_col89.clone())) - + (op0_limb_16_col57.clone() * op1_limb_18_col88.clone())) - + (op0_limb_17_col58.clone() * op1_limb_17_col87.clone())) - + (op0_limb_18_col59.clone() * op1_limb_16_col86.clone())) - + (op0_limb_19_col60.clone() * op1_limb_15_col85.clone())) - + (op0_limb_20_col61.clone() * op1_limb_14_col84.clone())) - + (op0_limb_21_col62.clone() * op1_limb_13_col83.clone())) - + (op0_limb_22_col63.clone() * op1_limb_12_col82.clone())) - + (op0_limb_23_col64.clone() * op1_limb_11_col81.clone())) - + (op0_limb_24_col65.clone() * op1_limb_10_col80.clone())) - + (op0_limb_25_col66.clone() * op1_limb_9_col79.clone())) - + (op0_limb_26_col67.clone() * op1_limb_8_col78.clone())) - + (op0_limb_27_col68.clone() * op1_limb_7_col77.clone())); - let conv_tmp_5a14_52 = ((((((((((((((((((((M31_0.clone() - + (op0_limb_8_col49.clone() * op1_limb_27_col97.clone())) - + (op0_limb_9_col50.clone() * op1_limb_26_col96.clone())) - + (op0_limb_10_col51.clone() * op1_limb_25_col95.clone())) - + (op0_limb_11_col52.clone() * op1_limb_24_col94.clone())) - + (op0_limb_12_col53.clone() * op1_limb_23_col93.clone())) - + (op0_limb_13_col54.clone() * op1_limb_22_col92.clone())) - + (op0_limb_14_col55.clone() * op1_limb_21_col91.clone())) - + (op0_limb_15_col56.clone() * op1_limb_20_col90.clone())) - + (op0_limb_16_col57.clone() * op1_limb_19_col89.clone())) - + (op0_limb_17_col58.clone() * op1_limb_18_col88.clone())) - + (op0_limb_18_col59.clone() * op1_limb_17_col87.clone())) - + (op0_limb_19_col60.clone() * op1_limb_16_col86.clone())) - + (op0_limb_20_col61.clone() * op1_limb_15_col85.clone())) - + (op0_limb_21_col62.clone() * op1_limb_14_col84.clone())) - + (op0_limb_22_col63.clone() * op1_limb_13_col83.clone())) - + (op0_limb_23_col64.clone() * op1_limb_12_col82.clone())) - + (op0_limb_24_col65.clone() * op1_limb_11_col81.clone())) - + (op0_limb_25_col66.clone() * op1_limb_10_col80.clone())) - + (op0_limb_26_col67.clone() * op1_limb_9_col79.clone())) - + (op0_limb_27_col68.clone() * op1_limb_8_col78.clone())); - let conv_tmp_5a14_53 = (((((((((((((((((((M31_0.clone() - + (op0_limb_9_col50.clone() * op1_limb_27_col97.clone())) - + (op0_limb_10_col51.clone() * op1_limb_26_col96.clone())) - + (op0_limb_11_col52.clone() * op1_limb_25_col95.clone())) - + (op0_limb_12_col53.clone() * op1_limb_24_col94.clone())) - + (op0_limb_13_col54.clone() * op1_limb_23_col93.clone())) - + (op0_limb_14_col55.clone() * op1_limb_22_col92.clone())) - + (op0_limb_15_col56.clone() * op1_limb_21_col91.clone())) - + (op0_limb_16_col57.clone() * op1_limb_20_col90.clone())) - + (op0_limb_17_col58.clone() * op1_limb_19_col89.clone())) - + (op0_limb_18_col59.clone() * op1_limb_18_col88.clone())) - + (op0_limb_19_col60.clone() * op1_limb_17_col87.clone())) - + (op0_limb_20_col61.clone() * op1_limb_16_col86.clone())) - + (op0_limb_21_col62.clone() * op1_limb_15_col85.clone())) - + (op0_limb_22_col63.clone() * op1_limb_14_col84.clone())) - + (op0_limb_23_col64.clone() * op1_limb_13_col83.clone())) - + (op0_limb_24_col65.clone() * op1_limb_12_col82.clone())) - + (op0_limb_25_col66.clone() * op1_limb_11_col81.clone())) - + (op0_limb_26_col67.clone() * op1_limb_10_col80.clone())) - + (op0_limb_27_col68.clone() * op1_limb_9_col79.clone())); - let conv_tmp_5a14_54 = ((((((((((((((((((M31_0.clone() - + (op0_limb_10_col51.clone() * op1_limb_27_col97.clone())) - + (op0_limb_11_col52.clone() * op1_limb_26_col96.clone())) - + (op0_limb_12_col53.clone() * op1_limb_25_col95.clone())) - + (op0_limb_13_col54.clone() * op1_limb_24_col94.clone())) - + (op0_limb_14_col55.clone() * op1_limb_23_col93.clone())) - + (op0_limb_15_col56.clone() * op1_limb_22_col92.clone())) - + (op0_limb_16_col57.clone() * op1_limb_21_col91.clone())) - + (op0_limb_17_col58.clone() * op1_limb_20_col90.clone())) - + (op0_limb_18_col59.clone() * op1_limb_19_col89.clone())) - + (op0_limb_19_col60.clone() * op1_limb_18_col88.clone())) - + (op0_limb_20_col61.clone() * op1_limb_17_col87.clone())) - + (op0_limb_21_col62.clone() * op1_limb_16_col86.clone())) - + (op0_limb_22_col63.clone() * op1_limb_15_col85.clone())) - + (op0_limb_23_col64.clone() * op1_limb_14_col84.clone())) - + (op0_limb_24_col65.clone() * op1_limb_13_col83.clone())) - + (op0_limb_25_col66.clone() * op1_limb_12_col82.clone())) - + (op0_limb_26_col67.clone() * op1_limb_11_col81.clone())) - + (op0_limb_27_col68.clone() * op1_limb_10_col80.clone())); - let conv_tmp_5a14_55 = (((((((((((((((((M31_0.clone() - + (op0_limb_11_col52.clone() * op1_limb_27_col97.clone())) - + (op0_limb_12_col53.clone() * op1_limb_26_col96.clone())) - + (op0_limb_13_col54.clone() * op1_limb_25_col95.clone())) - + (op0_limb_14_col55.clone() * op1_limb_24_col94.clone())) - + (op0_limb_15_col56.clone() * op1_limb_23_col93.clone())) - + (op0_limb_16_col57.clone() * op1_limb_22_col92.clone())) - + (op0_limb_17_col58.clone() * op1_limb_21_col91.clone())) - + (op0_limb_18_col59.clone() * op1_limb_20_col90.clone())) - + (op0_limb_19_col60.clone() * op1_limb_19_col89.clone())) - + (op0_limb_20_col61.clone() * op1_limb_18_col88.clone())) - + (op0_limb_21_col62.clone() * op1_limb_17_col87.clone())) - + (op0_limb_22_col63.clone() * op1_limb_16_col86.clone())) - + (op0_limb_23_col64.clone() * op1_limb_15_col85.clone())) - + (op0_limb_24_col65.clone() * op1_limb_14_col84.clone())) - + (op0_limb_25_col66.clone() * op1_limb_13_col83.clone())) - + (op0_limb_26_col67.clone() * op1_limb_12_col82.clone())) - + (op0_limb_27_col68.clone() * op1_limb_11_col81.clone())); - let conv_tmp_5a14_56 = ((((((((((((((((M31_0.clone() - + (op0_limb_12_col53.clone() * op1_limb_27_col97.clone())) - + (op0_limb_13_col54.clone() * op1_limb_26_col96.clone())) - + (op0_limb_14_col55.clone() * op1_limb_25_col95.clone())) - + (op0_limb_15_col56.clone() * op1_limb_24_col94.clone())) - + (op0_limb_16_col57.clone() * op1_limb_23_col93.clone())) - + (op0_limb_17_col58.clone() * op1_limb_22_col92.clone())) - + (op0_limb_18_col59.clone() * op1_limb_21_col91.clone())) - + (op0_limb_19_col60.clone() * op1_limb_20_col90.clone())) - + (op0_limb_20_col61.clone() * op1_limb_19_col89.clone())) - + (op0_limb_21_col62.clone() * op1_limb_18_col88.clone())) - + (op0_limb_22_col63.clone() * op1_limb_17_col87.clone())) - + (op0_limb_23_col64.clone() * op1_limb_16_col86.clone())) - + (op0_limb_24_col65.clone() * op1_limb_15_col85.clone())) - + (op0_limb_25_col66.clone() * op1_limb_14_col84.clone())) - + (op0_limb_26_col67.clone() * op1_limb_13_col83.clone())) - + (op0_limb_27_col68.clone() * op1_limb_12_col82.clone())); - let conv_tmp_5a14_57 = (((((((((((((((M31_0.clone() - + (op0_limb_13_col54.clone() * op1_limb_27_col97.clone())) - + (op0_limb_14_col55.clone() * op1_limb_26_col96.clone())) - + (op0_limb_15_col56.clone() * op1_limb_25_col95.clone())) - + (op0_limb_16_col57.clone() * op1_limb_24_col94.clone())) - + (op0_limb_17_col58.clone() * op1_limb_23_col93.clone())) - + (op0_limb_18_col59.clone() * op1_limb_22_col92.clone())) - + (op0_limb_19_col60.clone() * op1_limb_21_col91.clone())) - + (op0_limb_20_col61.clone() * op1_limb_20_col90.clone())) - + (op0_limb_21_col62.clone() * op1_limb_19_col89.clone())) - + (op0_limb_22_col63.clone() * op1_limb_18_col88.clone())) - + (op0_limb_23_col64.clone() * op1_limb_17_col87.clone())) - + (op0_limb_24_col65.clone() * op1_limb_16_col86.clone())) - + (op0_limb_25_col66.clone() * op1_limb_15_col85.clone())) - + (op0_limb_26_col67.clone() * op1_limb_14_col84.clone())) - + (op0_limb_27_col68.clone() * op1_limb_13_col83.clone())); - let conv_tmp_5a14_58 = ((((((((((((((M31_0.clone() - + (op0_limb_14_col55.clone() * op1_limb_27_col97.clone())) - + (op0_limb_15_col56.clone() * op1_limb_26_col96.clone())) - + (op0_limb_16_col57.clone() * op1_limb_25_col95.clone())) - + (op0_limb_17_col58.clone() * op1_limb_24_col94.clone())) - + (op0_limb_18_col59.clone() * op1_limb_23_col93.clone())) - + (op0_limb_19_col60.clone() * op1_limb_22_col92.clone())) - + (op0_limb_20_col61.clone() * op1_limb_21_col91.clone())) - + (op0_limb_21_col62.clone() * op1_limb_20_col90.clone())) - + (op0_limb_22_col63.clone() * op1_limb_19_col89.clone())) - + (op0_limb_23_col64.clone() * op1_limb_18_col88.clone())) - + (op0_limb_24_col65.clone() * op1_limb_17_col87.clone())) - + (op0_limb_25_col66.clone() * op1_limb_16_col86.clone())) - + (op0_limb_26_col67.clone() * op1_limb_15_col85.clone())) - + (op0_limb_27_col68.clone() * op1_limb_14_col84.clone())); - let conv_tmp_5a14_59 = (((((((((((((M31_0.clone() - + (op0_limb_15_col56.clone() * op1_limb_27_col97.clone())) - + (op0_limb_16_col57.clone() * op1_limb_26_col96.clone())) - + (op0_limb_17_col58.clone() * op1_limb_25_col95.clone())) - + (op0_limb_18_col59.clone() * op1_limb_24_col94.clone())) - + (op0_limb_19_col60.clone() * op1_limb_23_col93.clone())) - + (op0_limb_20_col61.clone() * op1_limb_22_col92.clone())) - + (op0_limb_21_col62.clone() * op1_limb_21_col91.clone())) - + (op0_limb_22_col63.clone() * op1_limb_20_col90.clone())) - + (op0_limb_23_col64.clone() * op1_limb_19_col89.clone())) - + (op0_limb_24_col65.clone() * op1_limb_18_col88.clone())) - + (op0_limb_25_col66.clone() * op1_limb_17_col87.clone())) - + (op0_limb_26_col67.clone() * op1_limb_16_col86.clone())) - + (op0_limb_27_col68.clone() * op1_limb_15_col85.clone())); - let conv_tmp_5a14_60 = ((((((((((((M31_0.clone() - + (op0_limb_16_col57.clone() * op1_limb_27_col97.clone())) - + (op0_limb_17_col58.clone() * op1_limb_26_col96.clone())) - + (op0_limb_18_col59.clone() * op1_limb_25_col95.clone())) - + (op0_limb_19_col60.clone() * op1_limb_24_col94.clone())) - + (op0_limb_20_col61.clone() * op1_limb_23_col93.clone())) - + (op0_limb_21_col62.clone() * op1_limb_22_col92.clone())) - + (op0_limb_22_col63.clone() * op1_limb_21_col91.clone())) - + (op0_limb_23_col64.clone() * op1_limb_20_col90.clone())) - + (op0_limb_24_col65.clone() * op1_limb_19_col89.clone())) - + (op0_limb_25_col66.clone() * op1_limb_18_col88.clone())) - + (op0_limb_26_col67.clone() * op1_limb_17_col87.clone())) - + (op0_limb_27_col68.clone() * op1_limb_16_col86.clone())); - let conv_tmp_5a14_61 = (((((((((((M31_0.clone() - + (op0_limb_17_col58.clone() * op1_limb_27_col97.clone())) - + (op0_limb_18_col59.clone() * op1_limb_26_col96.clone())) - + (op0_limb_19_col60.clone() * op1_limb_25_col95.clone())) - + (op0_limb_20_col61.clone() * op1_limb_24_col94.clone())) - + (op0_limb_21_col62.clone() * op1_limb_23_col93.clone())) - + (op0_limb_22_col63.clone() * op1_limb_22_col92.clone())) - + (op0_limb_23_col64.clone() * op1_limb_21_col91.clone())) - + (op0_limb_24_col65.clone() * op1_limb_20_col90.clone())) - + (op0_limb_25_col66.clone() * op1_limb_19_col89.clone())) - + (op0_limb_26_col67.clone() * op1_limb_18_col88.clone())) - + (op0_limb_27_col68.clone() * op1_limb_17_col87.clone())); - let conv_tmp_5a14_62 = ((((((((((M31_0.clone() - + (op0_limb_18_col59.clone() * op1_limb_27_col97.clone())) - + (op0_limb_19_col60.clone() * op1_limb_26_col96.clone())) - + (op0_limb_20_col61.clone() * op1_limb_25_col95.clone())) - + (op0_limb_21_col62.clone() * op1_limb_24_col94.clone())) - + (op0_limb_22_col63.clone() * op1_limb_23_col93.clone())) - + (op0_limb_23_col64.clone() * op1_limb_22_col92.clone())) - + (op0_limb_24_col65.clone() * op1_limb_21_col91.clone())) - + (op0_limb_25_col66.clone() * op1_limb_20_col90.clone())) - + (op0_limb_26_col67.clone() * op1_limb_19_col89.clone())) - + (op0_limb_27_col68.clone() * op1_limb_18_col88.clone())); - let conv_tmp_5a14_63 = (((((((((M31_0.clone() - + (op0_limb_19_col60.clone() * op1_limb_27_col97.clone())) - + (op0_limb_20_col61.clone() * op1_limb_26_col96.clone())) - + (op0_limb_21_col62.clone() * op1_limb_25_col95.clone())) - + (op0_limb_22_col63.clone() * op1_limb_24_col94.clone())) - + (op0_limb_23_col64.clone() * op1_limb_23_col93.clone())) - + (op0_limb_24_col65.clone() * op1_limb_22_col92.clone())) - + (op0_limb_25_col66.clone() * op1_limb_21_col91.clone())) - + (op0_limb_26_col67.clone() * op1_limb_20_col90.clone())) - + (op0_limb_27_col68.clone() * op1_limb_19_col89.clone())); - let conv_tmp_5a14_64 = ((((((((M31_0.clone() - + (op0_limb_20_col61.clone() * op1_limb_27_col97.clone())) - + (op0_limb_21_col62.clone() * op1_limb_26_col96.clone())) - + (op0_limb_22_col63.clone() * op1_limb_25_col95.clone())) - + (op0_limb_23_col64.clone() * op1_limb_24_col94.clone())) - + (op0_limb_24_col65.clone() * op1_limb_23_col93.clone())) - + (op0_limb_25_col66.clone() * op1_limb_22_col92.clone())) - + (op0_limb_26_col67.clone() * op1_limb_21_col91.clone())) - + (op0_limb_27_col68.clone() * op1_limb_20_col90.clone())); - let conv_tmp_5a14_65 = (((((((M31_0.clone() - + (op0_limb_21_col62.clone() * op1_limb_27_col97.clone())) - + (op0_limb_22_col63.clone() * op1_limb_26_col96.clone())) - + (op0_limb_23_col64.clone() * op1_limb_25_col95.clone())) - + (op0_limb_24_col65.clone() * op1_limb_24_col94.clone())) - + (op0_limb_25_col66.clone() * op1_limb_23_col93.clone())) - + (op0_limb_26_col67.clone() * op1_limb_22_col92.clone())) - + (op0_limb_27_col68.clone() * op1_limb_21_col91.clone())); - let conv_tmp_5a14_66 = ((((((M31_0.clone() - + (op0_limb_22_col63.clone() * op1_limb_27_col97.clone())) - + (op0_limb_23_col64.clone() * op1_limb_26_col96.clone())) - + (op0_limb_24_col65.clone() * op1_limb_25_col95.clone())) - + (op0_limb_25_col66.clone() * op1_limb_24_col94.clone())) - + (op0_limb_26_col67.clone() * op1_limb_23_col93.clone())) - + (op0_limb_27_col68.clone() * op1_limb_22_col92.clone())); - let conv_tmp_5a14_67 = (((((M31_0.clone() - + (op0_limb_23_col64.clone() * op1_limb_27_col97.clone())) - + (op0_limb_24_col65.clone() * op1_limb_26_col96.clone())) - + (op0_limb_25_col66.clone() * op1_limb_25_col95.clone())) - + (op0_limb_26_col67.clone() * op1_limb_24_col94.clone())) - + (op0_limb_27_col68.clone() * op1_limb_23_col93.clone())); - let conv_tmp_5a14_68 = ((((M31_0.clone() - + (op0_limb_24_col65.clone() * op1_limb_27_col97.clone())) - + (op0_limb_25_col66.clone() * op1_limb_26_col96.clone())) - + (op0_limb_26_col67.clone() * op1_limb_25_col95.clone())) - + (op0_limb_27_col68.clone() * op1_limb_24_col94.clone())); - let conv_tmp_5a14_69 = (((M31_0.clone() - + (op0_limb_25_col66.clone() * op1_limb_27_col97.clone())) - + (op0_limb_26_col67.clone() * op1_limb_26_col96.clone())) - + (op0_limb_27_col68.clone() * op1_limb_25_col95.clone())); - let conv_tmp_5a14_70 = ((M31_0.clone() - + (op0_limb_26_col67.clone() * op1_limb_27_col97.clone())) - + (op0_limb_27_col68.clone() * op1_limb_26_col96.clone())); - let conv_tmp_5a14_71 = - (M31_0.clone() + (op0_limb_27_col68.clone() * op1_limb_27_col97.clone())); - let conv_mod_tmp_5a14_72 = (((M31_0.clone() - + (M31_32.clone() * conv_tmp_5a14_17.clone())) - - (M31_4.clone() * conv_tmp_5a14_38.clone())) - + (M31_8.clone() * conv_tmp_5a14_66.clone())); - let conv_mod_tmp_5a14_73 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5a14_17.clone())) - + (M31_32.clone() * conv_tmp_5a14_18.clone())) - - (M31_4.clone() * conv_tmp_5a14_39.clone())) - + (M31_8.clone() * conv_tmp_5a14_67.clone())); - let conv_mod_tmp_5a14_74 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5a14_18.clone())) - + (M31_32.clone() * conv_tmp_5a14_19.clone())) - - (M31_4.clone() * conv_tmp_5a14_40.clone())) - + (M31_8.clone() * conv_tmp_5a14_68.clone())); - let conv_mod_tmp_5a14_75 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5a14_19.clone())) - + (M31_32.clone() * conv_tmp_5a14_20.clone())) - - (M31_4.clone() * conv_tmp_5a14_41.clone())) - + (M31_8.clone() * conv_tmp_5a14_69.clone())); - let conv_mod_tmp_5a14_76 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5a14_20.clone())) - + (M31_32.clone() * conv_tmp_5a14_21.clone())) - - (M31_4.clone() * conv_tmp_5a14_42.clone())) - + (M31_8.clone() * conv_tmp_5a14_70.clone())); - let conv_mod_tmp_5a14_77 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_5a14_21.clone())) - + (M31_32.clone() * conv_tmp_5a14_22.clone())) - - (M31_4.clone() * conv_tmp_5a14_43.clone())) - + (M31_8.clone() * conv_tmp_5a14_71.clone())); - let conv_mod_tmp_5a14_78 = (((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_22.clone())) - + (M31_32.clone() * conv_tmp_5a14_23.clone())) - - (M31_4.clone() * conv_tmp_5a14_44.clone())); - let conv_mod_tmp_5a14_79 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_17.clone())) - + (M31_1.clone() * conv_tmp_5a14_23.clone())) - + (M31_32.clone() * conv_tmp_5a14_24.clone())) - - (M31_4.clone() * conv_tmp_5a14_45.clone())); - let conv_mod_tmp_5a14_80 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_18.clone())) - + (M31_1.clone() * conv_tmp_5a14_24.clone())) - + (M31_32.clone() * conv_tmp_5a14_25.clone())) - - (M31_4.clone() * conv_tmp_5a14_46.clone())); - let conv_mod_tmp_5a14_81 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_19.clone())) - + (M31_1.clone() * conv_tmp_5a14_25.clone())) - + (M31_32.clone() * conv_tmp_5a14_26.clone())) - - (M31_4.clone() * conv_tmp_5a14_47.clone())); - let conv_mod_tmp_5a14_82 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_20.clone())) - + (M31_1.clone() * conv_tmp_5a14_26.clone())) - + (M31_32.clone() * conv_tmp_5a14_27.clone())) - - (M31_4.clone() * conv_tmp_5a14_48.clone())); - let conv_mod_tmp_5a14_83 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_21.clone())) - + (M31_1.clone() * conv_tmp_5a14_27.clone())) - + (M31_32.clone() * conv_tmp_5a14_28.clone())) - - (M31_4.clone() * conv_tmp_5a14_49.clone())); - let conv_mod_tmp_5a14_84 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_22.clone())) - + (M31_1.clone() * conv_tmp_5a14_28.clone())) - + (M31_32.clone() * conv_tmp_5a14_29.clone())) - - (M31_4.clone() * conv_tmp_5a14_50.clone())); - let conv_mod_tmp_5a14_85 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_23.clone())) - + (M31_1.clone() * conv_tmp_5a14_29.clone())) - + (M31_32.clone() * conv_tmp_5a14_30.clone())) - - (M31_4.clone() * conv_tmp_5a14_51.clone())); - let conv_mod_tmp_5a14_86 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_24.clone())) - + (M31_1.clone() * conv_tmp_5a14_30.clone())) - + (M31_32.clone() * conv_tmp_5a14_31.clone())) - - (M31_4.clone() * conv_tmp_5a14_52.clone())); - let conv_mod_tmp_5a14_87 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_25.clone())) - + (M31_1.clone() * conv_tmp_5a14_31.clone())) - + (M31_32.clone() * conv_tmp_5a14_32.clone())) - - (M31_4.clone() * conv_tmp_5a14_53.clone())); - let conv_mod_tmp_5a14_88 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_26.clone())) - + (M31_1.clone() * conv_tmp_5a14_32.clone())) - + (M31_32.clone() * conv_tmp_5a14_33.clone())) - - (M31_4.clone() * conv_tmp_5a14_54.clone())); - let conv_mod_tmp_5a14_89 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_27.clone())) - + (M31_1.clone() * conv_tmp_5a14_33.clone())) - + (M31_32.clone() * conv_tmp_5a14_34.clone())) - - (M31_4.clone() * conv_tmp_5a14_55.clone())); - let conv_mod_tmp_5a14_90 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_28.clone())) - + (M31_1.clone() * conv_tmp_5a14_34.clone())) - + (M31_32.clone() * conv_tmp_5a14_35.clone())) - - (M31_4.clone() * conv_tmp_5a14_56.clone())); - let conv_mod_tmp_5a14_91 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_29.clone())) - + (M31_1.clone() * conv_tmp_5a14_35.clone())) - + (M31_32.clone() * conv_tmp_5a14_36.clone())) - - (M31_4.clone() * conv_tmp_5a14_57.clone())); - let conv_mod_tmp_5a14_92 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_30.clone())) - + (M31_1.clone() * conv_tmp_5a14_36.clone())) - + (M31_32.clone() * conv_tmp_5a14_37.clone())) - - (M31_4.clone() * conv_tmp_5a14_58.clone())); - let conv_mod_tmp_5a14_93 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_31.clone())) - + (M31_1.clone() * conv_tmp_5a14_37.clone())) - - (M31_4.clone() * conv_tmp_5a14_59.clone())) - + (M31_64.clone() * conv_tmp_5a14_66.clone())); - let conv_mod_tmp_5a14_94 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_32.clone())) - - (M31_4.clone() * conv_tmp_5a14_60.clone())) - + (M31_2.clone() * conv_tmp_5a14_66.clone())) - + (M31_64.clone() * conv_tmp_5a14_67.clone())); - let conv_mod_tmp_5a14_95 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_33.clone())) - - (M31_4.clone() * conv_tmp_5a14_61.clone())) - + (M31_2.clone() * conv_tmp_5a14_67.clone())) - + (M31_64.clone() * conv_tmp_5a14_68.clone())); - let conv_mod_tmp_5a14_96 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_34.clone())) - - (M31_4.clone() * conv_tmp_5a14_62.clone())) - + (M31_2.clone() * conv_tmp_5a14_68.clone())) - + (M31_64.clone() * conv_tmp_5a14_69.clone())); - let conv_mod_tmp_5a14_97 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_35.clone())) - - (M31_4.clone() * conv_tmp_5a14_63.clone())) - + (M31_2.clone() * conv_tmp_5a14_69.clone())) - + (M31_64.clone() * conv_tmp_5a14_70.clone())); - let conv_mod_tmp_5a14_98 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_5a14_36.clone())) - - (M31_4.clone() * conv_tmp_5a14_64.clone())) - + (M31_2.clone() * conv_tmp_5a14_70.clone())) - + (M31_64.clone() * conv_tmp_5a14_71.clone())); - let conv_mod_tmp_5a14_99 = (((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_37.clone())) - - (M31_4.clone() * conv_tmp_5a14_65.clone())) - + (M31_2.clone() * conv_tmp_5a14_71.clone())); + let conv_tmp_5a14_17 = eval.add_intermediate( + ((M31_0.clone() - dst_limb_0_col12.clone()) + + (op0_limb_0_col41.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_18 = eval.add_intermediate( + (((M31_0.clone() - dst_limb_1_col13.clone()) + + (op0_limb_0_col41.clone() * op1_limb_1_col71.clone())) + + (op0_limb_1_col42.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_19 = eval.add_intermediate( + ((((M31_0.clone() - dst_limb_2_col14.clone()) + + (op0_limb_0_col41.clone() * op1_limb_2_col72.clone())) + + (op0_limb_1_col42.clone() * op1_limb_1_col71.clone())) + + (op0_limb_2_col43.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_20 = eval.add_intermediate( + (((((M31_0.clone() - dst_limb_3_col15.clone()) + + (op0_limb_0_col41.clone() * op1_limb_3_col73.clone())) + + (op0_limb_1_col42.clone() * op1_limb_2_col72.clone())) + + (op0_limb_2_col43.clone() * op1_limb_1_col71.clone())) + + (op0_limb_3_col44.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_21 = eval.add_intermediate( + ((((((M31_0.clone() - dst_limb_4_col16.clone()) + + (op0_limb_0_col41.clone() * op1_limb_4_col74.clone())) + + (op0_limb_1_col42.clone() * op1_limb_3_col73.clone())) + + (op0_limb_2_col43.clone() * op1_limb_2_col72.clone())) + + (op0_limb_3_col44.clone() * op1_limb_1_col71.clone())) + + (op0_limb_4_col45.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_22 = eval.add_intermediate( + (((((((M31_0.clone() - dst_limb_5_col17.clone()) + + (op0_limb_0_col41.clone() * op1_limb_5_col75.clone())) + + (op0_limb_1_col42.clone() * op1_limb_4_col74.clone())) + + (op0_limb_2_col43.clone() * op1_limb_3_col73.clone())) + + (op0_limb_3_col44.clone() * op1_limb_2_col72.clone())) + + (op0_limb_4_col45.clone() * op1_limb_1_col71.clone())) + + (op0_limb_5_col46.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_23 = eval.add_intermediate( + ((((((((M31_0.clone() - dst_limb_6_col18.clone()) + + (op0_limb_0_col41.clone() * op1_limb_6_col76.clone())) + + (op0_limb_1_col42.clone() * op1_limb_5_col75.clone())) + + (op0_limb_2_col43.clone() * op1_limb_4_col74.clone())) + + (op0_limb_3_col44.clone() * op1_limb_3_col73.clone())) + + (op0_limb_4_col45.clone() * op1_limb_2_col72.clone())) + + (op0_limb_5_col46.clone() * op1_limb_1_col71.clone())) + + (op0_limb_6_col47.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_24 = eval.add_intermediate( + (((((((((M31_0.clone() - dst_limb_7_col19.clone()) + + (op0_limb_0_col41.clone() * op1_limb_7_col77.clone())) + + (op0_limb_1_col42.clone() * op1_limb_6_col76.clone())) + + (op0_limb_2_col43.clone() * op1_limb_5_col75.clone())) + + (op0_limb_3_col44.clone() * op1_limb_4_col74.clone())) + + (op0_limb_4_col45.clone() * op1_limb_3_col73.clone())) + + (op0_limb_5_col46.clone() * op1_limb_2_col72.clone())) + + (op0_limb_6_col47.clone() * op1_limb_1_col71.clone())) + + (op0_limb_7_col48.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_25 = eval.add_intermediate( + ((((((((((M31_0.clone() - dst_limb_8_col20.clone()) + + (op0_limb_0_col41.clone() * op1_limb_8_col78.clone())) + + (op0_limb_1_col42.clone() * op1_limb_7_col77.clone())) + + (op0_limb_2_col43.clone() * op1_limb_6_col76.clone())) + + (op0_limb_3_col44.clone() * op1_limb_5_col75.clone())) + + (op0_limb_4_col45.clone() * op1_limb_4_col74.clone())) + + (op0_limb_5_col46.clone() * op1_limb_3_col73.clone())) + + (op0_limb_6_col47.clone() * op1_limb_2_col72.clone())) + + (op0_limb_7_col48.clone() * op1_limb_1_col71.clone())) + + (op0_limb_8_col49.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_26 = eval.add_intermediate( + (((((((((((M31_0.clone() - dst_limb_9_col21.clone()) + + (op0_limb_0_col41.clone() * op1_limb_9_col79.clone())) + + (op0_limb_1_col42.clone() * op1_limb_8_col78.clone())) + + (op0_limb_2_col43.clone() * op1_limb_7_col77.clone())) + + (op0_limb_3_col44.clone() * op1_limb_6_col76.clone())) + + (op0_limb_4_col45.clone() * op1_limb_5_col75.clone())) + + (op0_limb_5_col46.clone() * op1_limb_4_col74.clone())) + + (op0_limb_6_col47.clone() * op1_limb_3_col73.clone())) + + (op0_limb_7_col48.clone() * op1_limb_2_col72.clone())) + + (op0_limb_8_col49.clone() * op1_limb_1_col71.clone())) + + (op0_limb_9_col50.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_27 = eval.add_intermediate( + ((((((((((((M31_0.clone() - dst_limb_10_col22.clone()) + + (op0_limb_0_col41.clone() * op1_limb_10_col80.clone())) + + (op0_limb_1_col42.clone() * op1_limb_9_col79.clone())) + + (op0_limb_2_col43.clone() * op1_limb_8_col78.clone())) + + (op0_limb_3_col44.clone() * op1_limb_7_col77.clone())) + + (op0_limb_4_col45.clone() * op1_limb_6_col76.clone())) + + (op0_limb_5_col46.clone() * op1_limb_5_col75.clone())) + + (op0_limb_6_col47.clone() * op1_limb_4_col74.clone())) + + (op0_limb_7_col48.clone() * op1_limb_3_col73.clone())) + + (op0_limb_8_col49.clone() * op1_limb_2_col72.clone())) + + (op0_limb_9_col50.clone() * op1_limb_1_col71.clone())) + + (op0_limb_10_col51.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_28 = eval.add_intermediate( + (((((((((((((M31_0.clone() - dst_limb_11_col23.clone()) + + (op0_limb_0_col41.clone() * op1_limb_11_col81.clone())) + + (op0_limb_1_col42.clone() * op1_limb_10_col80.clone())) + + (op0_limb_2_col43.clone() * op1_limb_9_col79.clone())) + + (op0_limb_3_col44.clone() * op1_limb_8_col78.clone())) + + (op0_limb_4_col45.clone() * op1_limb_7_col77.clone())) + + (op0_limb_5_col46.clone() * op1_limb_6_col76.clone())) + + (op0_limb_6_col47.clone() * op1_limb_5_col75.clone())) + + (op0_limb_7_col48.clone() * op1_limb_4_col74.clone())) + + (op0_limb_8_col49.clone() * op1_limb_3_col73.clone())) + + (op0_limb_9_col50.clone() * op1_limb_2_col72.clone())) + + (op0_limb_10_col51.clone() * op1_limb_1_col71.clone())) + + (op0_limb_11_col52.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_29 = eval.add_intermediate( + ((((((((((((((M31_0.clone() - dst_limb_12_col24.clone()) + + (op0_limb_0_col41.clone() * op1_limb_12_col82.clone())) + + (op0_limb_1_col42.clone() * op1_limb_11_col81.clone())) + + (op0_limb_2_col43.clone() * op1_limb_10_col80.clone())) + + (op0_limb_3_col44.clone() * op1_limb_9_col79.clone())) + + (op0_limb_4_col45.clone() * op1_limb_8_col78.clone())) + + (op0_limb_5_col46.clone() * op1_limb_7_col77.clone())) + + (op0_limb_6_col47.clone() * op1_limb_6_col76.clone())) + + (op0_limb_7_col48.clone() * op1_limb_5_col75.clone())) + + (op0_limb_8_col49.clone() * op1_limb_4_col74.clone())) + + (op0_limb_9_col50.clone() * op1_limb_3_col73.clone())) + + (op0_limb_10_col51.clone() * op1_limb_2_col72.clone())) + + (op0_limb_11_col52.clone() * op1_limb_1_col71.clone())) + + (op0_limb_12_col53.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_30 = eval.add_intermediate( + (((((((((((((((M31_0.clone() - dst_limb_13_col25.clone()) + + (op0_limb_0_col41.clone() * op1_limb_13_col83.clone())) + + (op0_limb_1_col42.clone() * op1_limb_12_col82.clone())) + + (op0_limb_2_col43.clone() * op1_limb_11_col81.clone())) + + (op0_limb_3_col44.clone() * op1_limb_10_col80.clone())) + + (op0_limb_4_col45.clone() * op1_limb_9_col79.clone())) + + (op0_limb_5_col46.clone() * op1_limb_8_col78.clone())) + + (op0_limb_6_col47.clone() * op1_limb_7_col77.clone())) + + (op0_limb_7_col48.clone() * op1_limb_6_col76.clone())) + + (op0_limb_8_col49.clone() * op1_limb_5_col75.clone())) + + (op0_limb_9_col50.clone() * op1_limb_4_col74.clone())) + + (op0_limb_10_col51.clone() * op1_limb_3_col73.clone())) + + (op0_limb_11_col52.clone() * op1_limb_2_col72.clone())) + + (op0_limb_12_col53.clone() * op1_limb_1_col71.clone())) + + (op0_limb_13_col54.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_31 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() - dst_limb_14_col26.clone()) + + (op0_limb_0_col41.clone() * op1_limb_14_col84.clone())) + + (op0_limb_1_col42.clone() * op1_limb_13_col83.clone())) + + (op0_limb_2_col43.clone() * op1_limb_12_col82.clone())) + + (op0_limb_3_col44.clone() * op1_limb_11_col81.clone())) + + (op0_limb_4_col45.clone() * op1_limb_10_col80.clone())) + + (op0_limb_5_col46.clone() * op1_limb_9_col79.clone())) + + (op0_limb_6_col47.clone() * op1_limb_8_col78.clone())) + + (op0_limb_7_col48.clone() * op1_limb_7_col77.clone())) + + (op0_limb_8_col49.clone() * op1_limb_6_col76.clone())) + + (op0_limb_9_col50.clone() * op1_limb_5_col75.clone())) + + (op0_limb_10_col51.clone() * op1_limb_4_col74.clone())) + + (op0_limb_11_col52.clone() * op1_limb_3_col73.clone())) + + (op0_limb_12_col53.clone() * op1_limb_2_col72.clone())) + + (op0_limb_13_col54.clone() * op1_limb_1_col71.clone())) + + (op0_limb_14_col55.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_32 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() - dst_limb_15_col27.clone()) + + (op0_limb_0_col41.clone() * op1_limb_15_col85.clone())) + + (op0_limb_1_col42.clone() * op1_limb_14_col84.clone())) + + (op0_limb_2_col43.clone() * op1_limb_13_col83.clone())) + + (op0_limb_3_col44.clone() * op1_limb_12_col82.clone())) + + (op0_limb_4_col45.clone() * op1_limb_11_col81.clone())) + + (op0_limb_5_col46.clone() * op1_limb_10_col80.clone())) + + (op0_limb_6_col47.clone() * op1_limb_9_col79.clone())) + + (op0_limb_7_col48.clone() * op1_limb_8_col78.clone())) + + (op0_limb_8_col49.clone() * op1_limb_7_col77.clone())) + + (op0_limb_9_col50.clone() * op1_limb_6_col76.clone())) + + (op0_limb_10_col51.clone() * op1_limb_5_col75.clone())) + + (op0_limb_11_col52.clone() * op1_limb_4_col74.clone())) + + (op0_limb_12_col53.clone() * op1_limb_3_col73.clone())) + + (op0_limb_13_col54.clone() * op1_limb_2_col72.clone())) + + (op0_limb_14_col55.clone() * op1_limb_1_col71.clone())) + + (op0_limb_15_col56.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_33 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() - dst_limb_16_col28.clone()) + + (op0_limb_0_col41.clone() * op1_limb_16_col86.clone())) + + (op0_limb_1_col42.clone() * op1_limb_15_col85.clone())) + + (op0_limb_2_col43.clone() * op1_limb_14_col84.clone())) + + (op0_limb_3_col44.clone() * op1_limb_13_col83.clone())) + + (op0_limb_4_col45.clone() * op1_limb_12_col82.clone())) + + (op0_limb_5_col46.clone() * op1_limb_11_col81.clone())) + + (op0_limb_6_col47.clone() * op1_limb_10_col80.clone())) + + (op0_limb_7_col48.clone() * op1_limb_9_col79.clone())) + + (op0_limb_8_col49.clone() * op1_limb_8_col78.clone())) + + (op0_limb_9_col50.clone() * op1_limb_7_col77.clone())) + + (op0_limb_10_col51.clone() * op1_limb_6_col76.clone())) + + (op0_limb_11_col52.clone() * op1_limb_5_col75.clone())) + + (op0_limb_12_col53.clone() * op1_limb_4_col74.clone())) + + (op0_limb_13_col54.clone() * op1_limb_3_col73.clone())) + + (op0_limb_14_col55.clone() * op1_limb_2_col72.clone())) + + (op0_limb_15_col56.clone() * op1_limb_1_col71.clone())) + + (op0_limb_16_col57.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_34 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() - dst_limb_17_col29.clone()) + + (op0_limb_0_col41.clone() * op1_limb_17_col87.clone())) + + (op0_limb_1_col42.clone() * op1_limb_16_col86.clone())) + + (op0_limb_2_col43.clone() * op1_limb_15_col85.clone())) + + (op0_limb_3_col44.clone() * op1_limb_14_col84.clone())) + + (op0_limb_4_col45.clone() * op1_limb_13_col83.clone())) + + (op0_limb_5_col46.clone() * op1_limb_12_col82.clone())) + + (op0_limb_6_col47.clone() * op1_limb_11_col81.clone())) + + (op0_limb_7_col48.clone() * op1_limb_10_col80.clone())) + + (op0_limb_8_col49.clone() * op1_limb_9_col79.clone())) + + (op0_limb_9_col50.clone() * op1_limb_8_col78.clone())) + + (op0_limb_10_col51.clone() * op1_limb_7_col77.clone())) + + (op0_limb_11_col52.clone() * op1_limb_6_col76.clone())) + + (op0_limb_12_col53.clone() * op1_limb_5_col75.clone())) + + (op0_limb_13_col54.clone() * op1_limb_4_col74.clone())) + + (op0_limb_14_col55.clone() * op1_limb_3_col73.clone())) + + (op0_limb_15_col56.clone() * op1_limb_2_col72.clone())) + + (op0_limb_16_col57.clone() * op1_limb_1_col71.clone())) + + (op0_limb_17_col58.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_35 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() - dst_limb_18_col30.clone()) + + (op0_limb_0_col41.clone() * op1_limb_18_col88.clone())) + + (op0_limb_1_col42.clone() * op1_limb_17_col87.clone())) + + (op0_limb_2_col43.clone() * op1_limb_16_col86.clone())) + + (op0_limb_3_col44.clone() * op1_limb_15_col85.clone())) + + (op0_limb_4_col45.clone() * op1_limb_14_col84.clone())) + + (op0_limb_5_col46.clone() * op1_limb_13_col83.clone())) + + (op0_limb_6_col47.clone() * op1_limb_12_col82.clone())) + + (op0_limb_7_col48.clone() * op1_limb_11_col81.clone())) + + (op0_limb_8_col49.clone() * op1_limb_10_col80.clone())) + + (op0_limb_9_col50.clone() * op1_limb_9_col79.clone())) + + (op0_limb_10_col51.clone() * op1_limb_8_col78.clone())) + + (op0_limb_11_col52.clone() * op1_limb_7_col77.clone())) + + (op0_limb_12_col53.clone() * op1_limb_6_col76.clone())) + + (op0_limb_13_col54.clone() * op1_limb_5_col75.clone())) + + (op0_limb_14_col55.clone() * op1_limb_4_col74.clone())) + + (op0_limb_15_col56.clone() * op1_limb_3_col73.clone())) + + (op0_limb_16_col57.clone() * op1_limb_2_col72.clone())) + + (op0_limb_17_col58.clone() * op1_limb_1_col71.clone())) + + (op0_limb_18_col59.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_36 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() - dst_limb_19_col31.clone()) + + (op0_limb_0_col41.clone() * op1_limb_19_col89.clone())) + + (op0_limb_1_col42.clone() * op1_limb_18_col88.clone())) + + (op0_limb_2_col43.clone() * op1_limb_17_col87.clone())) + + (op0_limb_3_col44.clone() * op1_limb_16_col86.clone())) + + (op0_limb_4_col45.clone() * op1_limb_15_col85.clone())) + + (op0_limb_5_col46.clone() * op1_limb_14_col84.clone())) + + (op0_limb_6_col47.clone() * op1_limb_13_col83.clone())) + + (op0_limb_7_col48.clone() * op1_limb_12_col82.clone())) + + (op0_limb_8_col49.clone() * op1_limb_11_col81.clone())) + + (op0_limb_9_col50.clone() * op1_limb_10_col80.clone())) + + (op0_limb_10_col51.clone() * op1_limb_9_col79.clone())) + + (op0_limb_11_col52.clone() * op1_limb_8_col78.clone())) + + (op0_limb_12_col53.clone() * op1_limb_7_col77.clone())) + + (op0_limb_13_col54.clone() * op1_limb_6_col76.clone())) + + (op0_limb_14_col55.clone() * op1_limb_5_col75.clone())) + + (op0_limb_15_col56.clone() * op1_limb_4_col74.clone())) + + (op0_limb_16_col57.clone() * op1_limb_3_col73.clone())) + + (op0_limb_17_col58.clone() * op1_limb_2_col72.clone())) + + (op0_limb_18_col59.clone() * op1_limb_1_col71.clone())) + + (op0_limb_19_col60.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_37 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() - dst_limb_20_col32.clone()) + + (op0_limb_0_col41.clone() * op1_limb_20_col90.clone())) + + (op0_limb_1_col42.clone() * op1_limb_19_col89.clone())) + + (op0_limb_2_col43.clone() * op1_limb_18_col88.clone())) + + (op0_limb_3_col44.clone() * op1_limb_17_col87.clone())) + + (op0_limb_4_col45.clone() * op1_limb_16_col86.clone())) + + (op0_limb_5_col46.clone() * op1_limb_15_col85.clone())) + + (op0_limb_6_col47.clone() * op1_limb_14_col84.clone())) + + (op0_limb_7_col48.clone() * op1_limb_13_col83.clone())) + + (op0_limb_8_col49.clone() * op1_limb_12_col82.clone())) + + (op0_limb_9_col50.clone() * op1_limb_11_col81.clone())) + + (op0_limb_10_col51.clone() * op1_limb_10_col80.clone())) + + (op0_limb_11_col52.clone() * op1_limb_9_col79.clone())) + + (op0_limb_12_col53.clone() * op1_limb_8_col78.clone())) + + (op0_limb_13_col54.clone() * op1_limb_7_col77.clone())) + + (op0_limb_14_col55.clone() * op1_limb_6_col76.clone())) + + (op0_limb_15_col56.clone() * op1_limb_5_col75.clone())) + + (op0_limb_16_col57.clone() * op1_limb_4_col74.clone())) + + (op0_limb_17_col58.clone() * op1_limb_3_col73.clone())) + + (op0_limb_18_col59.clone() * op1_limb_2_col72.clone())) + + (op0_limb_19_col60.clone() * op1_limb_1_col71.clone())) + + (op0_limb_20_col61.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_38 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() - dst_limb_21_col33.clone()) + + (op0_limb_0_col41.clone() * op1_limb_21_col91.clone())) + + (op0_limb_1_col42.clone() * op1_limb_20_col90.clone())) + + (op0_limb_2_col43.clone() * op1_limb_19_col89.clone())) + + (op0_limb_3_col44.clone() * op1_limb_18_col88.clone())) + + (op0_limb_4_col45.clone() * op1_limb_17_col87.clone())) + + (op0_limb_5_col46.clone() * op1_limb_16_col86.clone())) + + (op0_limb_6_col47.clone() * op1_limb_15_col85.clone())) + + (op0_limb_7_col48.clone() * op1_limb_14_col84.clone())) + + (op0_limb_8_col49.clone() * op1_limb_13_col83.clone())) + + (op0_limb_9_col50.clone() * op1_limb_12_col82.clone())) + + (op0_limb_10_col51.clone() * op1_limb_11_col81.clone())) + + (op0_limb_11_col52.clone() * op1_limb_10_col80.clone())) + + (op0_limb_12_col53.clone() * op1_limb_9_col79.clone())) + + (op0_limb_13_col54.clone() * op1_limb_8_col78.clone())) + + (op0_limb_14_col55.clone() * op1_limb_7_col77.clone())) + + (op0_limb_15_col56.clone() * op1_limb_6_col76.clone())) + + (op0_limb_16_col57.clone() * op1_limb_5_col75.clone())) + + (op0_limb_17_col58.clone() * op1_limb_4_col74.clone())) + + (op0_limb_18_col59.clone() * op1_limb_3_col73.clone())) + + (op0_limb_19_col60.clone() * op1_limb_2_col72.clone())) + + (op0_limb_20_col61.clone() * op1_limb_1_col71.clone())) + + (op0_limb_21_col62.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_39 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + - dst_limb_22_col34.clone()) + + (op0_limb_0_col41.clone() * op1_limb_22_col92.clone())) + + (op0_limb_1_col42.clone() * op1_limb_21_col91.clone())) + + (op0_limb_2_col43.clone() * op1_limb_20_col90.clone())) + + (op0_limb_3_col44.clone() * op1_limb_19_col89.clone())) + + (op0_limb_4_col45.clone() * op1_limb_18_col88.clone())) + + (op0_limb_5_col46.clone() * op1_limb_17_col87.clone())) + + (op0_limb_6_col47.clone() * op1_limb_16_col86.clone())) + + (op0_limb_7_col48.clone() * op1_limb_15_col85.clone())) + + (op0_limb_8_col49.clone() * op1_limb_14_col84.clone())) + + (op0_limb_9_col50.clone() * op1_limb_13_col83.clone())) + + (op0_limb_10_col51.clone() * op1_limb_12_col82.clone())) + + (op0_limb_11_col52.clone() * op1_limb_11_col81.clone())) + + (op0_limb_12_col53.clone() * op1_limb_10_col80.clone())) + + (op0_limb_13_col54.clone() * op1_limb_9_col79.clone())) + + (op0_limb_14_col55.clone() * op1_limb_8_col78.clone())) + + (op0_limb_15_col56.clone() * op1_limb_7_col77.clone())) + + (op0_limb_16_col57.clone() * op1_limb_6_col76.clone())) + + (op0_limb_17_col58.clone() * op1_limb_5_col75.clone())) + + (op0_limb_18_col59.clone() * op1_limb_4_col74.clone())) + + (op0_limb_19_col60.clone() * op1_limb_3_col73.clone())) + + (op0_limb_20_col61.clone() * op1_limb_2_col72.clone())) + + (op0_limb_21_col62.clone() * op1_limb_1_col71.clone())) + + (op0_limb_22_col63.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_40 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + - dst_limb_23_col35.clone()) + + (op0_limb_0_col41.clone() * op1_limb_23_col93.clone())) + + (op0_limb_1_col42.clone() * op1_limb_22_col92.clone())) + + (op0_limb_2_col43.clone() * op1_limb_21_col91.clone())) + + (op0_limb_3_col44.clone() * op1_limb_20_col90.clone())) + + (op0_limb_4_col45.clone() * op1_limb_19_col89.clone())) + + (op0_limb_5_col46.clone() * op1_limb_18_col88.clone())) + + (op0_limb_6_col47.clone() * op1_limb_17_col87.clone())) + + (op0_limb_7_col48.clone() * op1_limb_16_col86.clone())) + + (op0_limb_8_col49.clone() * op1_limb_15_col85.clone())) + + (op0_limb_9_col50.clone() * op1_limb_14_col84.clone())) + + (op0_limb_10_col51.clone() * op1_limb_13_col83.clone())) + + (op0_limb_11_col52.clone() * op1_limb_12_col82.clone())) + + (op0_limb_12_col53.clone() * op1_limb_11_col81.clone())) + + (op0_limb_13_col54.clone() * op1_limb_10_col80.clone())) + + (op0_limb_14_col55.clone() * op1_limb_9_col79.clone())) + + (op0_limb_15_col56.clone() * op1_limb_8_col78.clone())) + + (op0_limb_16_col57.clone() * op1_limb_7_col77.clone())) + + (op0_limb_17_col58.clone() * op1_limb_6_col76.clone())) + + (op0_limb_18_col59.clone() * op1_limb_5_col75.clone())) + + (op0_limb_19_col60.clone() * op1_limb_4_col74.clone())) + + (op0_limb_20_col61.clone() * op1_limb_3_col73.clone())) + + (op0_limb_21_col62.clone() * op1_limb_2_col72.clone())) + + (op0_limb_22_col63.clone() * op1_limb_1_col71.clone())) + + (op0_limb_23_col64.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_41 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + - dst_limb_24_col36.clone()) + + (op0_limb_0_col41.clone() * op1_limb_24_col94.clone())) + + (op0_limb_1_col42.clone() * op1_limb_23_col93.clone())) + + (op0_limb_2_col43.clone() * op1_limb_22_col92.clone())) + + (op0_limb_3_col44.clone() * op1_limb_21_col91.clone())) + + (op0_limb_4_col45.clone() * op1_limb_20_col90.clone())) + + (op0_limb_5_col46.clone() * op1_limb_19_col89.clone())) + + (op0_limb_6_col47.clone() * op1_limb_18_col88.clone())) + + (op0_limb_7_col48.clone() * op1_limb_17_col87.clone())) + + (op0_limb_8_col49.clone() * op1_limb_16_col86.clone())) + + (op0_limb_9_col50.clone() * op1_limb_15_col85.clone())) + + (op0_limb_10_col51.clone() * op1_limb_14_col84.clone())) + + (op0_limb_11_col52.clone() * op1_limb_13_col83.clone())) + + (op0_limb_12_col53.clone() * op1_limb_12_col82.clone())) + + (op0_limb_13_col54.clone() * op1_limb_11_col81.clone())) + + (op0_limb_14_col55.clone() * op1_limb_10_col80.clone())) + + (op0_limb_15_col56.clone() * op1_limb_9_col79.clone())) + + (op0_limb_16_col57.clone() * op1_limb_8_col78.clone())) + + (op0_limb_17_col58.clone() * op1_limb_7_col77.clone())) + + (op0_limb_18_col59.clone() * op1_limb_6_col76.clone())) + + (op0_limb_19_col60.clone() * op1_limb_5_col75.clone())) + + (op0_limb_20_col61.clone() * op1_limb_4_col74.clone())) + + (op0_limb_21_col62.clone() * op1_limb_3_col73.clone())) + + (op0_limb_22_col63.clone() * op1_limb_2_col72.clone())) + + (op0_limb_23_col64.clone() * op1_limb_1_col71.clone())) + + (op0_limb_24_col65.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_42 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + - dst_limb_25_col37.clone()) + + (op0_limb_0_col41.clone() * op1_limb_25_col95.clone())) + + (op0_limb_1_col42.clone() * op1_limb_24_col94.clone())) + + (op0_limb_2_col43.clone() * op1_limb_23_col93.clone())) + + (op0_limb_3_col44.clone() * op1_limb_22_col92.clone())) + + (op0_limb_4_col45.clone() * op1_limb_21_col91.clone())) + + (op0_limb_5_col46.clone() * op1_limb_20_col90.clone())) + + (op0_limb_6_col47.clone() * op1_limb_19_col89.clone())) + + (op0_limb_7_col48.clone() * op1_limb_18_col88.clone())) + + (op0_limb_8_col49.clone() * op1_limb_17_col87.clone())) + + (op0_limb_9_col50.clone() * op1_limb_16_col86.clone())) + + (op0_limb_10_col51.clone() * op1_limb_15_col85.clone())) + + (op0_limb_11_col52.clone() * op1_limb_14_col84.clone())) + + (op0_limb_12_col53.clone() * op1_limb_13_col83.clone())) + + (op0_limb_13_col54.clone() * op1_limb_12_col82.clone())) + + (op0_limb_14_col55.clone() * op1_limb_11_col81.clone())) + + (op0_limb_15_col56.clone() * op1_limb_10_col80.clone())) + + (op0_limb_16_col57.clone() * op1_limb_9_col79.clone())) + + (op0_limb_17_col58.clone() * op1_limb_8_col78.clone())) + + (op0_limb_18_col59.clone() * op1_limb_7_col77.clone())) + + (op0_limb_19_col60.clone() * op1_limb_6_col76.clone())) + + (op0_limb_20_col61.clone() * op1_limb_5_col75.clone())) + + (op0_limb_21_col62.clone() * op1_limb_4_col74.clone())) + + (op0_limb_22_col63.clone() * op1_limb_3_col73.clone())) + + (op0_limb_23_col64.clone() * op1_limb_2_col72.clone())) + + (op0_limb_24_col65.clone() * op1_limb_1_col71.clone())) + + (op0_limb_25_col66.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_43 = eval.add_intermediate( + ((((((((((((((((((((((((((((M31_0.clone() + - dst_limb_26_col38.clone()) + + (op0_limb_0_col41.clone() * op1_limb_26_col96.clone())) + + (op0_limb_1_col42.clone() * op1_limb_25_col95.clone())) + + (op0_limb_2_col43.clone() * op1_limb_24_col94.clone())) + + (op0_limb_3_col44.clone() * op1_limb_23_col93.clone())) + + (op0_limb_4_col45.clone() * op1_limb_22_col92.clone())) + + (op0_limb_5_col46.clone() * op1_limb_21_col91.clone())) + + (op0_limb_6_col47.clone() * op1_limb_20_col90.clone())) + + (op0_limb_7_col48.clone() * op1_limb_19_col89.clone())) + + (op0_limb_8_col49.clone() * op1_limb_18_col88.clone())) + + (op0_limb_9_col50.clone() * op1_limb_17_col87.clone())) + + (op0_limb_10_col51.clone() * op1_limb_16_col86.clone())) + + (op0_limb_11_col52.clone() * op1_limb_15_col85.clone())) + + (op0_limb_12_col53.clone() * op1_limb_14_col84.clone())) + + (op0_limb_13_col54.clone() * op1_limb_13_col83.clone())) + + (op0_limb_14_col55.clone() * op1_limb_12_col82.clone())) + + (op0_limb_15_col56.clone() * op1_limb_11_col81.clone())) + + (op0_limb_16_col57.clone() * op1_limb_10_col80.clone())) + + (op0_limb_17_col58.clone() * op1_limb_9_col79.clone())) + + (op0_limb_18_col59.clone() * op1_limb_8_col78.clone())) + + (op0_limb_19_col60.clone() * op1_limb_7_col77.clone())) + + (op0_limb_20_col61.clone() * op1_limb_6_col76.clone())) + + (op0_limb_21_col62.clone() * op1_limb_5_col75.clone())) + + (op0_limb_22_col63.clone() * op1_limb_4_col74.clone())) + + (op0_limb_23_col64.clone() * op1_limb_3_col73.clone())) + + (op0_limb_24_col65.clone() * op1_limb_2_col72.clone())) + + (op0_limb_25_col66.clone() * op1_limb_1_col71.clone())) + + (op0_limb_26_col67.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_44 = eval.add_intermediate( + (((((((((((((((((((((((((((((M31_0.clone() + - dst_limb_27_col39.clone()) + + (op0_limb_0_col41.clone() + * op1_limb_27_col97.clone())) + + (op0_limb_1_col42.clone() * op1_limb_26_col96.clone())) + + (op0_limb_2_col43.clone() * op1_limb_25_col95.clone())) + + (op0_limb_3_col44.clone() * op1_limb_24_col94.clone())) + + (op0_limb_4_col45.clone() * op1_limb_23_col93.clone())) + + (op0_limb_5_col46.clone() * op1_limb_22_col92.clone())) + + (op0_limb_6_col47.clone() * op1_limb_21_col91.clone())) + + (op0_limb_7_col48.clone() * op1_limb_20_col90.clone())) + + (op0_limb_8_col49.clone() * op1_limb_19_col89.clone())) + + (op0_limb_9_col50.clone() * op1_limb_18_col88.clone())) + + (op0_limb_10_col51.clone() * op1_limb_17_col87.clone())) + + (op0_limb_11_col52.clone() * op1_limb_16_col86.clone())) + + (op0_limb_12_col53.clone() * op1_limb_15_col85.clone())) + + (op0_limb_13_col54.clone() * op1_limb_14_col84.clone())) + + (op0_limb_14_col55.clone() * op1_limb_13_col83.clone())) + + (op0_limb_15_col56.clone() * op1_limb_12_col82.clone())) + + (op0_limb_16_col57.clone() * op1_limb_11_col81.clone())) + + (op0_limb_17_col58.clone() * op1_limb_10_col80.clone())) + + (op0_limb_18_col59.clone() * op1_limb_9_col79.clone())) + + (op0_limb_19_col60.clone() * op1_limb_8_col78.clone())) + + (op0_limb_20_col61.clone() * op1_limb_7_col77.clone())) + + (op0_limb_21_col62.clone() * op1_limb_6_col76.clone())) + + (op0_limb_22_col63.clone() * op1_limb_5_col75.clone())) + + (op0_limb_23_col64.clone() * op1_limb_4_col74.clone())) + + (op0_limb_24_col65.clone() * op1_limb_3_col73.clone())) + + (op0_limb_25_col66.clone() * op1_limb_2_col72.clone())) + + (op0_limb_26_col67.clone() * op1_limb_1_col71.clone())) + + (op0_limb_27_col68.clone() * op1_limb_0_col70.clone())), + ); + let conv_tmp_5a14_45 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_1_col42.clone() * op1_limb_27_col97.clone())) + + (op0_limb_2_col43.clone() * op1_limb_26_col96.clone())) + + (op0_limb_3_col44.clone() * op1_limb_25_col95.clone())) + + (op0_limb_4_col45.clone() * op1_limb_24_col94.clone())) + + (op0_limb_5_col46.clone() * op1_limb_23_col93.clone())) + + (op0_limb_6_col47.clone() * op1_limb_22_col92.clone())) + + (op0_limb_7_col48.clone() * op1_limb_21_col91.clone())) + + (op0_limb_8_col49.clone() * op1_limb_20_col90.clone())) + + (op0_limb_9_col50.clone() * op1_limb_19_col89.clone())) + + (op0_limb_10_col51.clone() * op1_limb_18_col88.clone())) + + (op0_limb_11_col52.clone() * op1_limb_17_col87.clone())) + + (op0_limb_12_col53.clone() * op1_limb_16_col86.clone())) + + (op0_limb_13_col54.clone() * op1_limb_15_col85.clone())) + + (op0_limb_14_col55.clone() * op1_limb_14_col84.clone())) + + (op0_limb_15_col56.clone() * op1_limb_13_col83.clone())) + + (op0_limb_16_col57.clone() * op1_limb_12_col82.clone())) + + (op0_limb_17_col58.clone() * op1_limb_11_col81.clone())) + + (op0_limb_18_col59.clone() * op1_limb_10_col80.clone())) + + (op0_limb_19_col60.clone() * op1_limb_9_col79.clone())) + + (op0_limb_20_col61.clone() * op1_limb_8_col78.clone())) + + (op0_limb_21_col62.clone() * op1_limb_7_col77.clone())) + + (op0_limb_22_col63.clone() * op1_limb_6_col76.clone())) + + (op0_limb_23_col64.clone() * op1_limb_5_col75.clone())) + + (op0_limb_24_col65.clone() * op1_limb_4_col74.clone())) + + (op0_limb_25_col66.clone() * op1_limb_3_col73.clone())) + + (op0_limb_26_col67.clone() * op1_limb_2_col72.clone())) + + (op0_limb_27_col68.clone() * op1_limb_1_col71.clone())), + ); + let conv_tmp_5a14_46 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_2_col43.clone() * op1_limb_27_col97.clone())) + + (op0_limb_3_col44.clone() * op1_limb_26_col96.clone())) + + (op0_limb_4_col45.clone() * op1_limb_25_col95.clone())) + + (op0_limb_5_col46.clone() * op1_limb_24_col94.clone())) + + (op0_limb_6_col47.clone() * op1_limb_23_col93.clone())) + + (op0_limb_7_col48.clone() * op1_limb_22_col92.clone())) + + (op0_limb_8_col49.clone() * op1_limb_21_col91.clone())) + + (op0_limb_9_col50.clone() * op1_limb_20_col90.clone())) + + (op0_limb_10_col51.clone() * op1_limb_19_col89.clone())) + + (op0_limb_11_col52.clone() * op1_limb_18_col88.clone())) + + (op0_limb_12_col53.clone() * op1_limb_17_col87.clone())) + + (op0_limb_13_col54.clone() * op1_limb_16_col86.clone())) + + (op0_limb_14_col55.clone() * op1_limb_15_col85.clone())) + + (op0_limb_15_col56.clone() * op1_limb_14_col84.clone())) + + (op0_limb_16_col57.clone() * op1_limb_13_col83.clone())) + + (op0_limb_17_col58.clone() * op1_limb_12_col82.clone())) + + (op0_limb_18_col59.clone() * op1_limb_11_col81.clone())) + + (op0_limb_19_col60.clone() * op1_limb_10_col80.clone())) + + (op0_limb_20_col61.clone() * op1_limb_9_col79.clone())) + + (op0_limb_21_col62.clone() * op1_limb_8_col78.clone())) + + (op0_limb_22_col63.clone() * op1_limb_7_col77.clone())) + + (op0_limb_23_col64.clone() * op1_limb_6_col76.clone())) + + (op0_limb_24_col65.clone() * op1_limb_5_col75.clone())) + + (op0_limb_25_col66.clone() * op1_limb_4_col74.clone())) + + (op0_limb_26_col67.clone() * op1_limb_3_col73.clone())) + + (op0_limb_27_col68.clone() * op1_limb_2_col72.clone())), + ); + let conv_tmp_5a14_47 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + + (op0_limb_3_col44.clone() * op1_limb_27_col97.clone())) + + (op0_limb_4_col45.clone() * op1_limb_26_col96.clone())) + + (op0_limb_5_col46.clone() * op1_limb_25_col95.clone())) + + (op0_limb_6_col47.clone() * op1_limb_24_col94.clone())) + + (op0_limb_7_col48.clone() * op1_limb_23_col93.clone())) + + (op0_limb_8_col49.clone() * op1_limb_22_col92.clone())) + + (op0_limb_9_col50.clone() * op1_limb_21_col91.clone())) + + (op0_limb_10_col51.clone() * op1_limb_20_col90.clone())) + + (op0_limb_11_col52.clone() * op1_limb_19_col89.clone())) + + (op0_limb_12_col53.clone() * op1_limb_18_col88.clone())) + + (op0_limb_13_col54.clone() * op1_limb_17_col87.clone())) + + (op0_limb_14_col55.clone() * op1_limb_16_col86.clone())) + + (op0_limb_15_col56.clone() * op1_limb_15_col85.clone())) + + (op0_limb_16_col57.clone() * op1_limb_14_col84.clone())) + + (op0_limb_17_col58.clone() * op1_limb_13_col83.clone())) + + (op0_limb_18_col59.clone() * op1_limb_12_col82.clone())) + + (op0_limb_19_col60.clone() * op1_limb_11_col81.clone())) + + (op0_limb_20_col61.clone() * op1_limb_10_col80.clone())) + + (op0_limb_21_col62.clone() * op1_limb_9_col79.clone())) + + (op0_limb_22_col63.clone() * op1_limb_8_col78.clone())) + + (op0_limb_23_col64.clone() * op1_limb_7_col77.clone())) + + (op0_limb_24_col65.clone() * op1_limb_6_col76.clone())) + + (op0_limb_25_col66.clone() * op1_limb_5_col75.clone())) + + (op0_limb_26_col67.clone() * op1_limb_4_col74.clone())) + + (op0_limb_27_col68.clone() * op1_limb_3_col73.clone())), + ); + let conv_tmp_5a14_48 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + + (op0_limb_4_col45.clone() * op1_limb_27_col97.clone())) + + (op0_limb_5_col46.clone() * op1_limb_26_col96.clone())) + + (op0_limb_6_col47.clone() * op1_limb_25_col95.clone())) + + (op0_limb_7_col48.clone() * op1_limb_24_col94.clone())) + + (op0_limb_8_col49.clone() * op1_limb_23_col93.clone())) + + (op0_limb_9_col50.clone() * op1_limb_22_col92.clone())) + + (op0_limb_10_col51.clone() * op1_limb_21_col91.clone())) + + (op0_limb_11_col52.clone() * op1_limb_20_col90.clone())) + + (op0_limb_12_col53.clone() * op1_limb_19_col89.clone())) + + (op0_limb_13_col54.clone() * op1_limb_18_col88.clone())) + + (op0_limb_14_col55.clone() * op1_limb_17_col87.clone())) + + (op0_limb_15_col56.clone() * op1_limb_16_col86.clone())) + + (op0_limb_16_col57.clone() * op1_limb_15_col85.clone())) + + (op0_limb_17_col58.clone() * op1_limb_14_col84.clone())) + + (op0_limb_18_col59.clone() * op1_limb_13_col83.clone())) + + (op0_limb_19_col60.clone() * op1_limb_12_col82.clone())) + + (op0_limb_20_col61.clone() * op1_limb_11_col81.clone())) + + (op0_limb_21_col62.clone() * op1_limb_10_col80.clone())) + + (op0_limb_22_col63.clone() * op1_limb_9_col79.clone())) + + (op0_limb_23_col64.clone() * op1_limb_8_col78.clone())) + + (op0_limb_24_col65.clone() * op1_limb_7_col77.clone())) + + (op0_limb_25_col66.clone() * op1_limb_6_col76.clone())) + + (op0_limb_26_col67.clone() * op1_limb_5_col75.clone())) + + (op0_limb_27_col68.clone() * op1_limb_4_col74.clone())), + ); + let conv_tmp_5a14_49 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() + + (op0_limb_5_col46.clone() * op1_limb_27_col97.clone())) + + (op0_limb_6_col47.clone() * op1_limb_26_col96.clone())) + + (op0_limb_7_col48.clone() * op1_limb_25_col95.clone())) + + (op0_limb_8_col49.clone() * op1_limb_24_col94.clone())) + + (op0_limb_9_col50.clone() * op1_limb_23_col93.clone())) + + (op0_limb_10_col51.clone() * op1_limb_22_col92.clone())) + + (op0_limb_11_col52.clone() * op1_limb_21_col91.clone())) + + (op0_limb_12_col53.clone() * op1_limb_20_col90.clone())) + + (op0_limb_13_col54.clone() * op1_limb_19_col89.clone())) + + (op0_limb_14_col55.clone() * op1_limb_18_col88.clone())) + + (op0_limb_15_col56.clone() * op1_limb_17_col87.clone())) + + (op0_limb_16_col57.clone() * op1_limb_16_col86.clone())) + + (op0_limb_17_col58.clone() * op1_limb_15_col85.clone())) + + (op0_limb_18_col59.clone() * op1_limb_14_col84.clone())) + + (op0_limb_19_col60.clone() * op1_limb_13_col83.clone())) + + (op0_limb_20_col61.clone() * op1_limb_12_col82.clone())) + + (op0_limb_21_col62.clone() * op1_limb_11_col81.clone())) + + (op0_limb_22_col63.clone() * op1_limb_10_col80.clone())) + + (op0_limb_23_col64.clone() * op1_limb_9_col79.clone())) + + (op0_limb_24_col65.clone() * op1_limb_8_col78.clone())) + + (op0_limb_25_col66.clone() * op1_limb_7_col77.clone())) + + (op0_limb_26_col67.clone() * op1_limb_6_col76.clone())) + + (op0_limb_27_col68.clone() * op1_limb_5_col75.clone())), + ); + let conv_tmp_5a14_50 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() + + (op0_limb_6_col47.clone() * op1_limb_27_col97.clone())) + + (op0_limb_7_col48.clone() * op1_limb_26_col96.clone())) + + (op0_limb_8_col49.clone() * op1_limb_25_col95.clone())) + + (op0_limb_9_col50.clone() * op1_limb_24_col94.clone())) + + (op0_limb_10_col51.clone() * op1_limb_23_col93.clone())) + + (op0_limb_11_col52.clone() * op1_limb_22_col92.clone())) + + (op0_limb_12_col53.clone() * op1_limb_21_col91.clone())) + + (op0_limb_13_col54.clone() * op1_limb_20_col90.clone())) + + (op0_limb_14_col55.clone() * op1_limb_19_col89.clone())) + + (op0_limb_15_col56.clone() * op1_limb_18_col88.clone())) + + (op0_limb_16_col57.clone() * op1_limb_17_col87.clone())) + + (op0_limb_17_col58.clone() * op1_limb_16_col86.clone())) + + (op0_limb_18_col59.clone() * op1_limb_15_col85.clone())) + + (op0_limb_19_col60.clone() * op1_limb_14_col84.clone())) + + (op0_limb_20_col61.clone() * op1_limb_13_col83.clone())) + + (op0_limb_21_col62.clone() * op1_limb_12_col82.clone())) + + (op0_limb_22_col63.clone() * op1_limb_11_col81.clone())) + + (op0_limb_23_col64.clone() * op1_limb_10_col80.clone())) + + (op0_limb_24_col65.clone() * op1_limb_9_col79.clone())) + + (op0_limb_25_col66.clone() * op1_limb_8_col78.clone())) + + (op0_limb_26_col67.clone() * op1_limb_7_col77.clone())) + + (op0_limb_27_col68.clone() * op1_limb_6_col76.clone())), + ); + let conv_tmp_5a14_51 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() + + (op0_limb_7_col48.clone() * op1_limb_27_col97.clone())) + + (op0_limb_8_col49.clone() * op1_limb_26_col96.clone())) + + (op0_limb_9_col50.clone() * op1_limb_25_col95.clone())) + + (op0_limb_10_col51.clone() * op1_limb_24_col94.clone())) + + (op0_limb_11_col52.clone() * op1_limb_23_col93.clone())) + + (op0_limb_12_col53.clone() * op1_limb_22_col92.clone())) + + (op0_limb_13_col54.clone() * op1_limb_21_col91.clone())) + + (op0_limb_14_col55.clone() * op1_limb_20_col90.clone())) + + (op0_limb_15_col56.clone() * op1_limb_19_col89.clone())) + + (op0_limb_16_col57.clone() * op1_limb_18_col88.clone())) + + (op0_limb_17_col58.clone() * op1_limb_17_col87.clone())) + + (op0_limb_18_col59.clone() * op1_limb_16_col86.clone())) + + (op0_limb_19_col60.clone() * op1_limb_15_col85.clone())) + + (op0_limb_20_col61.clone() * op1_limb_14_col84.clone())) + + (op0_limb_21_col62.clone() * op1_limb_13_col83.clone())) + + (op0_limb_22_col63.clone() * op1_limb_12_col82.clone())) + + (op0_limb_23_col64.clone() * op1_limb_11_col81.clone())) + + (op0_limb_24_col65.clone() * op1_limb_10_col80.clone())) + + (op0_limb_25_col66.clone() * op1_limb_9_col79.clone())) + + (op0_limb_26_col67.clone() * op1_limb_8_col78.clone())) + + (op0_limb_27_col68.clone() * op1_limb_7_col77.clone())), + ); + let conv_tmp_5a14_52 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() + + (op0_limb_8_col49.clone() * op1_limb_27_col97.clone())) + + (op0_limb_9_col50.clone() * op1_limb_26_col96.clone())) + + (op0_limb_10_col51.clone() * op1_limb_25_col95.clone())) + + (op0_limb_11_col52.clone() * op1_limb_24_col94.clone())) + + (op0_limb_12_col53.clone() * op1_limb_23_col93.clone())) + + (op0_limb_13_col54.clone() * op1_limb_22_col92.clone())) + + (op0_limb_14_col55.clone() * op1_limb_21_col91.clone())) + + (op0_limb_15_col56.clone() * op1_limb_20_col90.clone())) + + (op0_limb_16_col57.clone() * op1_limb_19_col89.clone())) + + (op0_limb_17_col58.clone() * op1_limb_18_col88.clone())) + + (op0_limb_18_col59.clone() * op1_limb_17_col87.clone())) + + (op0_limb_19_col60.clone() * op1_limb_16_col86.clone())) + + (op0_limb_20_col61.clone() * op1_limb_15_col85.clone())) + + (op0_limb_21_col62.clone() * op1_limb_14_col84.clone())) + + (op0_limb_22_col63.clone() * op1_limb_13_col83.clone())) + + (op0_limb_23_col64.clone() * op1_limb_12_col82.clone())) + + (op0_limb_24_col65.clone() * op1_limb_11_col81.clone())) + + (op0_limb_25_col66.clone() * op1_limb_10_col80.clone())) + + (op0_limb_26_col67.clone() * op1_limb_9_col79.clone())) + + (op0_limb_27_col68.clone() * op1_limb_8_col78.clone())), + ); + let conv_tmp_5a14_53 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() + + (op0_limb_9_col50.clone() * op1_limb_27_col97.clone())) + + (op0_limb_10_col51.clone() * op1_limb_26_col96.clone())) + + (op0_limb_11_col52.clone() * op1_limb_25_col95.clone())) + + (op0_limb_12_col53.clone() * op1_limb_24_col94.clone())) + + (op0_limb_13_col54.clone() * op1_limb_23_col93.clone())) + + (op0_limb_14_col55.clone() * op1_limb_22_col92.clone())) + + (op0_limb_15_col56.clone() * op1_limb_21_col91.clone())) + + (op0_limb_16_col57.clone() * op1_limb_20_col90.clone())) + + (op0_limb_17_col58.clone() * op1_limb_19_col89.clone())) + + (op0_limb_18_col59.clone() * op1_limb_18_col88.clone())) + + (op0_limb_19_col60.clone() * op1_limb_17_col87.clone())) + + (op0_limb_20_col61.clone() * op1_limb_16_col86.clone())) + + (op0_limb_21_col62.clone() * op1_limb_15_col85.clone())) + + (op0_limb_22_col63.clone() * op1_limb_14_col84.clone())) + + (op0_limb_23_col64.clone() * op1_limb_13_col83.clone())) + + (op0_limb_24_col65.clone() * op1_limb_12_col82.clone())) + + (op0_limb_25_col66.clone() * op1_limb_11_col81.clone())) + + (op0_limb_26_col67.clone() * op1_limb_10_col80.clone())) + + (op0_limb_27_col68.clone() * op1_limb_9_col79.clone())), + ); + let conv_tmp_5a14_54 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() + + (op0_limb_10_col51.clone() * op1_limb_27_col97.clone())) + + (op0_limb_11_col52.clone() * op1_limb_26_col96.clone())) + + (op0_limb_12_col53.clone() * op1_limb_25_col95.clone())) + + (op0_limb_13_col54.clone() * op1_limb_24_col94.clone())) + + (op0_limb_14_col55.clone() * op1_limb_23_col93.clone())) + + (op0_limb_15_col56.clone() * op1_limb_22_col92.clone())) + + (op0_limb_16_col57.clone() * op1_limb_21_col91.clone())) + + (op0_limb_17_col58.clone() * op1_limb_20_col90.clone())) + + (op0_limb_18_col59.clone() * op1_limb_19_col89.clone())) + + (op0_limb_19_col60.clone() * op1_limb_18_col88.clone())) + + (op0_limb_20_col61.clone() * op1_limb_17_col87.clone())) + + (op0_limb_21_col62.clone() * op1_limb_16_col86.clone())) + + (op0_limb_22_col63.clone() * op1_limb_15_col85.clone())) + + (op0_limb_23_col64.clone() * op1_limb_14_col84.clone())) + + (op0_limb_24_col65.clone() * op1_limb_13_col83.clone())) + + (op0_limb_25_col66.clone() * op1_limb_12_col82.clone())) + + (op0_limb_26_col67.clone() * op1_limb_11_col81.clone())) + + (op0_limb_27_col68.clone() * op1_limb_10_col80.clone())), + ); + let conv_tmp_5a14_55 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() + + (op0_limb_11_col52.clone() * op1_limb_27_col97.clone())) + + (op0_limb_12_col53.clone() * op1_limb_26_col96.clone())) + + (op0_limb_13_col54.clone() * op1_limb_25_col95.clone())) + + (op0_limb_14_col55.clone() * op1_limb_24_col94.clone())) + + (op0_limb_15_col56.clone() * op1_limb_23_col93.clone())) + + (op0_limb_16_col57.clone() * op1_limb_22_col92.clone())) + + (op0_limb_17_col58.clone() * op1_limb_21_col91.clone())) + + (op0_limb_18_col59.clone() * op1_limb_20_col90.clone())) + + (op0_limb_19_col60.clone() * op1_limb_19_col89.clone())) + + (op0_limb_20_col61.clone() * op1_limb_18_col88.clone())) + + (op0_limb_21_col62.clone() * op1_limb_17_col87.clone())) + + (op0_limb_22_col63.clone() * op1_limb_16_col86.clone())) + + (op0_limb_23_col64.clone() * op1_limb_15_col85.clone())) + + (op0_limb_24_col65.clone() * op1_limb_14_col84.clone())) + + (op0_limb_25_col66.clone() * op1_limb_13_col83.clone())) + + (op0_limb_26_col67.clone() * op1_limb_12_col82.clone())) + + (op0_limb_27_col68.clone() * op1_limb_11_col81.clone())), + ); + let conv_tmp_5a14_56 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() + + (op0_limb_12_col53.clone() * op1_limb_27_col97.clone())) + + (op0_limb_13_col54.clone() * op1_limb_26_col96.clone())) + + (op0_limb_14_col55.clone() * op1_limb_25_col95.clone())) + + (op0_limb_15_col56.clone() * op1_limb_24_col94.clone())) + + (op0_limb_16_col57.clone() * op1_limb_23_col93.clone())) + + (op0_limb_17_col58.clone() * op1_limb_22_col92.clone())) + + (op0_limb_18_col59.clone() * op1_limb_21_col91.clone())) + + (op0_limb_19_col60.clone() * op1_limb_20_col90.clone())) + + (op0_limb_20_col61.clone() * op1_limb_19_col89.clone())) + + (op0_limb_21_col62.clone() * op1_limb_18_col88.clone())) + + (op0_limb_22_col63.clone() * op1_limb_17_col87.clone())) + + (op0_limb_23_col64.clone() * op1_limb_16_col86.clone())) + + (op0_limb_24_col65.clone() * op1_limb_15_col85.clone())) + + (op0_limb_25_col66.clone() * op1_limb_14_col84.clone())) + + (op0_limb_26_col67.clone() * op1_limb_13_col83.clone())) + + (op0_limb_27_col68.clone() * op1_limb_12_col82.clone())), + ); + let conv_tmp_5a14_57 = eval.add_intermediate( + (((((((((((((((M31_0.clone() + + (op0_limb_13_col54.clone() * op1_limb_27_col97.clone())) + + (op0_limb_14_col55.clone() * op1_limb_26_col96.clone())) + + (op0_limb_15_col56.clone() * op1_limb_25_col95.clone())) + + (op0_limb_16_col57.clone() * op1_limb_24_col94.clone())) + + (op0_limb_17_col58.clone() * op1_limb_23_col93.clone())) + + (op0_limb_18_col59.clone() * op1_limb_22_col92.clone())) + + (op0_limb_19_col60.clone() * op1_limb_21_col91.clone())) + + (op0_limb_20_col61.clone() * op1_limb_20_col90.clone())) + + (op0_limb_21_col62.clone() * op1_limb_19_col89.clone())) + + (op0_limb_22_col63.clone() * op1_limb_18_col88.clone())) + + (op0_limb_23_col64.clone() * op1_limb_17_col87.clone())) + + (op0_limb_24_col65.clone() * op1_limb_16_col86.clone())) + + (op0_limb_25_col66.clone() * op1_limb_15_col85.clone())) + + (op0_limb_26_col67.clone() * op1_limb_14_col84.clone())) + + (op0_limb_27_col68.clone() * op1_limb_13_col83.clone())), + ); + let conv_tmp_5a14_58 = eval.add_intermediate( + ((((((((((((((M31_0.clone() + + (op0_limb_14_col55.clone() * op1_limb_27_col97.clone())) + + (op0_limb_15_col56.clone() * op1_limb_26_col96.clone())) + + (op0_limb_16_col57.clone() * op1_limb_25_col95.clone())) + + (op0_limb_17_col58.clone() * op1_limb_24_col94.clone())) + + (op0_limb_18_col59.clone() * op1_limb_23_col93.clone())) + + (op0_limb_19_col60.clone() * op1_limb_22_col92.clone())) + + (op0_limb_20_col61.clone() * op1_limb_21_col91.clone())) + + (op0_limb_21_col62.clone() * op1_limb_20_col90.clone())) + + (op0_limb_22_col63.clone() * op1_limb_19_col89.clone())) + + (op0_limb_23_col64.clone() * op1_limb_18_col88.clone())) + + (op0_limb_24_col65.clone() * op1_limb_17_col87.clone())) + + (op0_limb_25_col66.clone() * op1_limb_16_col86.clone())) + + (op0_limb_26_col67.clone() * op1_limb_15_col85.clone())) + + (op0_limb_27_col68.clone() * op1_limb_14_col84.clone())), + ); + let conv_tmp_5a14_59 = eval.add_intermediate( + (((((((((((((M31_0.clone() + + (op0_limb_15_col56.clone() * op1_limb_27_col97.clone())) + + (op0_limb_16_col57.clone() * op1_limb_26_col96.clone())) + + (op0_limb_17_col58.clone() * op1_limb_25_col95.clone())) + + (op0_limb_18_col59.clone() * op1_limb_24_col94.clone())) + + (op0_limb_19_col60.clone() * op1_limb_23_col93.clone())) + + (op0_limb_20_col61.clone() * op1_limb_22_col92.clone())) + + (op0_limb_21_col62.clone() * op1_limb_21_col91.clone())) + + (op0_limb_22_col63.clone() * op1_limb_20_col90.clone())) + + (op0_limb_23_col64.clone() * op1_limb_19_col89.clone())) + + (op0_limb_24_col65.clone() * op1_limb_18_col88.clone())) + + (op0_limb_25_col66.clone() * op1_limb_17_col87.clone())) + + (op0_limb_26_col67.clone() * op1_limb_16_col86.clone())) + + (op0_limb_27_col68.clone() * op1_limb_15_col85.clone())), + ); + let conv_tmp_5a14_60 = eval.add_intermediate( + ((((((((((((M31_0.clone() + + (op0_limb_16_col57.clone() * op1_limb_27_col97.clone())) + + (op0_limb_17_col58.clone() * op1_limb_26_col96.clone())) + + (op0_limb_18_col59.clone() * op1_limb_25_col95.clone())) + + (op0_limb_19_col60.clone() * op1_limb_24_col94.clone())) + + (op0_limb_20_col61.clone() * op1_limb_23_col93.clone())) + + (op0_limb_21_col62.clone() * op1_limb_22_col92.clone())) + + (op0_limb_22_col63.clone() * op1_limb_21_col91.clone())) + + (op0_limb_23_col64.clone() * op1_limb_20_col90.clone())) + + (op0_limb_24_col65.clone() * op1_limb_19_col89.clone())) + + (op0_limb_25_col66.clone() * op1_limb_18_col88.clone())) + + (op0_limb_26_col67.clone() * op1_limb_17_col87.clone())) + + (op0_limb_27_col68.clone() * op1_limb_16_col86.clone())), + ); + let conv_tmp_5a14_61 = eval.add_intermediate( + (((((((((((M31_0.clone() + + (op0_limb_17_col58.clone() * op1_limb_27_col97.clone())) + + (op0_limb_18_col59.clone() * op1_limb_26_col96.clone())) + + (op0_limb_19_col60.clone() * op1_limb_25_col95.clone())) + + (op0_limb_20_col61.clone() * op1_limb_24_col94.clone())) + + (op0_limb_21_col62.clone() * op1_limb_23_col93.clone())) + + (op0_limb_22_col63.clone() * op1_limb_22_col92.clone())) + + (op0_limb_23_col64.clone() * op1_limb_21_col91.clone())) + + (op0_limb_24_col65.clone() * op1_limb_20_col90.clone())) + + (op0_limb_25_col66.clone() * op1_limb_19_col89.clone())) + + (op0_limb_26_col67.clone() * op1_limb_18_col88.clone())) + + (op0_limb_27_col68.clone() * op1_limb_17_col87.clone())), + ); + let conv_tmp_5a14_62 = eval.add_intermediate( + ((((((((((M31_0.clone() + + (op0_limb_18_col59.clone() * op1_limb_27_col97.clone())) + + (op0_limb_19_col60.clone() * op1_limb_26_col96.clone())) + + (op0_limb_20_col61.clone() * op1_limb_25_col95.clone())) + + (op0_limb_21_col62.clone() * op1_limb_24_col94.clone())) + + (op0_limb_22_col63.clone() * op1_limb_23_col93.clone())) + + (op0_limb_23_col64.clone() * op1_limb_22_col92.clone())) + + (op0_limb_24_col65.clone() * op1_limb_21_col91.clone())) + + (op0_limb_25_col66.clone() * op1_limb_20_col90.clone())) + + (op0_limb_26_col67.clone() * op1_limb_19_col89.clone())) + + (op0_limb_27_col68.clone() * op1_limb_18_col88.clone())), + ); + let conv_tmp_5a14_63 = eval.add_intermediate( + (((((((((M31_0.clone() + + (op0_limb_19_col60.clone() * op1_limb_27_col97.clone())) + + (op0_limb_20_col61.clone() * op1_limb_26_col96.clone())) + + (op0_limb_21_col62.clone() * op1_limb_25_col95.clone())) + + (op0_limb_22_col63.clone() * op1_limb_24_col94.clone())) + + (op0_limb_23_col64.clone() * op1_limb_23_col93.clone())) + + (op0_limb_24_col65.clone() * op1_limb_22_col92.clone())) + + (op0_limb_25_col66.clone() * op1_limb_21_col91.clone())) + + (op0_limb_26_col67.clone() * op1_limb_20_col90.clone())) + + (op0_limb_27_col68.clone() * op1_limb_19_col89.clone())), + ); + let conv_tmp_5a14_64 = eval.add_intermediate( + ((((((((M31_0.clone() + (op0_limb_20_col61.clone() * op1_limb_27_col97.clone())) + + (op0_limb_21_col62.clone() * op1_limb_26_col96.clone())) + + (op0_limb_22_col63.clone() * op1_limb_25_col95.clone())) + + (op0_limb_23_col64.clone() * op1_limb_24_col94.clone())) + + (op0_limb_24_col65.clone() * op1_limb_23_col93.clone())) + + (op0_limb_25_col66.clone() * op1_limb_22_col92.clone())) + + (op0_limb_26_col67.clone() * op1_limb_21_col91.clone())) + + (op0_limb_27_col68.clone() * op1_limb_20_col90.clone())), + ); + let conv_tmp_5a14_65 = eval.add_intermediate( + (((((((M31_0.clone() + (op0_limb_21_col62.clone() * op1_limb_27_col97.clone())) + + (op0_limb_22_col63.clone() * op1_limb_26_col96.clone())) + + (op0_limb_23_col64.clone() * op1_limb_25_col95.clone())) + + (op0_limb_24_col65.clone() * op1_limb_24_col94.clone())) + + (op0_limb_25_col66.clone() * op1_limb_23_col93.clone())) + + (op0_limb_26_col67.clone() * op1_limb_22_col92.clone())) + + (op0_limb_27_col68.clone() * op1_limb_21_col91.clone())), + ); + let conv_tmp_5a14_66 = eval.add_intermediate( + ((((((M31_0.clone() + (op0_limb_22_col63.clone() * op1_limb_27_col97.clone())) + + (op0_limb_23_col64.clone() * op1_limb_26_col96.clone())) + + (op0_limb_24_col65.clone() * op1_limb_25_col95.clone())) + + (op0_limb_25_col66.clone() * op1_limb_24_col94.clone())) + + (op0_limb_26_col67.clone() * op1_limb_23_col93.clone())) + + (op0_limb_27_col68.clone() * op1_limb_22_col92.clone())), + ); + let conv_tmp_5a14_67 = eval.add_intermediate( + (((((M31_0.clone() + (op0_limb_23_col64.clone() * op1_limb_27_col97.clone())) + + (op0_limb_24_col65.clone() * op1_limb_26_col96.clone())) + + (op0_limb_25_col66.clone() * op1_limb_25_col95.clone())) + + (op0_limb_26_col67.clone() * op1_limb_24_col94.clone())) + + (op0_limb_27_col68.clone() * op1_limb_23_col93.clone())), + ); + let conv_tmp_5a14_68 = eval.add_intermediate( + ((((M31_0.clone() + (op0_limb_24_col65.clone() * op1_limb_27_col97.clone())) + + (op0_limb_25_col66.clone() * op1_limb_26_col96.clone())) + + (op0_limb_26_col67.clone() * op1_limb_25_col95.clone())) + + (op0_limb_27_col68.clone() * op1_limb_24_col94.clone())), + ); + let conv_tmp_5a14_69 = eval.add_intermediate( + (((M31_0.clone() + (op0_limb_25_col66.clone() * op1_limb_27_col97.clone())) + + (op0_limb_26_col67.clone() * op1_limb_26_col96.clone())) + + (op0_limb_27_col68.clone() * op1_limb_25_col95.clone())), + ); + let conv_tmp_5a14_70 = eval.add_intermediate( + ((M31_0.clone() + (op0_limb_26_col67.clone() * op1_limb_27_col97.clone())) + + (op0_limb_27_col68.clone() * op1_limb_26_col96.clone())), + ); + let conv_tmp_5a14_71 = eval.add_intermediate( + (M31_0.clone() + (op0_limb_27_col68.clone() * op1_limb_27_col97.clone())), + ); + let conv_mod_tmp_5a14_72 = eval.add_intermediate( + (((M31_0.clone() + (M31_32.clone() * conv_tmp_5a14_17.clone())) + - (M31_4.clone() * conv_tmp_5a14_38.clone())) + + (M31_8.clone() * conv_tmp_5a14_66.clone())), + ); + let conv_mod_tmp_5a14_73 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_17.clone())) + + (M31_32.clone() * conv_tmp_5a14_18.clone())) + - (M31_4.clone() * conv_tmp_5a14_39.clone())) + + (M31_8.clone() * conv_tmp_5a14_67.clone())), + ); + let conv_mod_tmp_5a14_74 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_18.clone())) + + (M31_32.clone() * conv_tmp_5a14_19.clone())) + - (M31_4.clone() * conv_tmp_5a14_40.clone())) + + (M31_8.clone() * conv_tmp_5a14_68.clone())), + ); + let conv_mod_tmp_5a14_75 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_19.clone())) + + (M31_32.clone() * conv_tmp_5a14_20.clone())) + - (M31_4.clone() * conv_tmp_5a14_41.clone())) + + (M31_8.clone() * conv_tmp_5a14_69.clone())), + ); + let conv_mod_tmp_5a14_76 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_20.clone())) + + (M31_32.clone() * conv_tmp_5a14_21.clone())) + - (M31_4.clone() * conv_tmp_5a14_42.clone())) + + (M31_8.clone() * conv_tmp_5a14_70.clone())), + ); + let conv_mod_tmp_5a14_77 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_21.clone())) + + (M31_32.clone() * conv_tmp_5a14_22.clone())) + - (M31_4.clone() * conv_tmp_5a14_43.clone())) + + (M31_8.clone() * conv_tmp_5a14_71.clone())), + ); + let conv_mod_tmp_5a14_78 = eval.add_intermediate( + (((M31_0.clone() + (M31_1.clone() * conv_tmp_5a14_22.clone())) + + (M31_32.clone() * conv_tmp_5a14_23.clone())) + - (M31_4.clone() * conv_tmp_5a14_44.clone())), + ); + let conv_mod_tmp_5a14_79 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_17.clone())) + + (M31_1.clone() * conv_tmp_5a14_23.clone())) + + (M31_32.clone() * conv_tmp_5a14_24.clone())) + - (M31_4.clone() * conv_tmp_5a14_45.clone())), + ); + let conv_mod_tmp_5a14_80 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_18.clone())) + + (M31_1.clone() * conv_tmp_5a14_24.clone())) + + (M31_32.clone() * conv_tmp_5a14_25.clone())) + - (M31_4.clone() * conv_tmp_5a14_46.clone())), + ); + let conv_mod_tmp_5a14_81 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_19.clone())) + + (M31_1.clone() * conv_tmp_5a14_25.clone())) + + (M31_32.clone() * conv_tmp_5a14_26.clone())) + - (M31_4.clone() * conv_tmp_5a14_47.clone())), + ); + let conv_mod_tmp_5a14_82 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_20.clone())) + + (M31_1.clone() * conv_tmp_5a14_26.clone())) + + (M31_32.clone() * conv_tmp_5a14_27.clone())) + - (M31_4.clone() * conv_tmp_5a14_48.clone())), + ); + let conv_mod_tmp_5a14_83 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_21.clone())) + + (M31_1.clone() * conv_tmp_5a14_27.clone())) + + (M31_32.clone() * conv_tmp_5a14_28.clone())) + - (M31_4.clone() * conv_tmp_5a14_49.clone())), + ); + let conv_mod_tmp_5a14_84 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_22.clone())) + + (M31_1.clone() * conv_tmp_5a14_28.clone())) + + (M31_32.clone() * conv_tmp_5a14_29.clone())) + - (M31_4.clone() * conv_tmp_5a14_50.clone())), + ); + let conv_mod_tmp_5a14_85 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_23.clone())) + + (M31_1.clone() * conv_tmp_5a14_29.clone())) + + (M31_32.clone() * conv_tmp_5a14_30.clone())) + - (M31_4.clone() * conv_tmp_5a14_51.clone())), + ); + let conv_mod_tmp_5a14_86 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_24.clone())) + + (M31_1.clone() * conv_tmp_5a14_30.clone())) + + (M31_32.clone() * conv_tmp_5a14_31.clone())) + - (M31_4.clone() * conv_tmp_5a14_52.clone())), + ); + let conv_mod_tmp_5a14_87 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_25.clone())) + + (M31_1.clone() * conv_tmp_5a14_31.clone())) + + (M31_32.clone() * conv_tmp_5a14_32.clone())) + - (M31_4.clone() * conv_tmp_5a14_53.clone())), + ); + let conv_mod_tmp_5a14_88 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_26.clone())) + + (M31_1.clone() * conv_tmp_5a14_32.clone())) + + (M31_32.clone() * conv_tmp_5a14_33.clone())) + - (M31_4.clone() * conv_tmp_5a14_54.clone())), + ); + let conv_mod_tmp_5a14_89 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_27.clone())) + + (M31_1.clone() * conv_tmp_5a14_33.clone())) + + (M31_32.clone() * conv_tmp_5a14_34.clone())) + - (M31_4.clone() * conv_tmp_5a14_55.clone())), + ); + let conv_mod_tmp_5a14_90 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_28.clone())) + + (M31_1.clone() * conv_tmp_5a14_34.clone())) + + (M31_32.clone() * conv_tmp_5a14_35.clone())) + - (M31_4.clone() * conv_tmp_5a14_56.clone())), + ); + let conv_mod_tmp_5a14_91 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_29.clone())) + + (M31_1.clone() * conv_tmp_5a14_35.clone())) + + (M31_32.clone() * conv_tmp_5a14_36.clone())) + - (M31_4.clone() * conv_tmp_5a14_57.clone())), + ); + let conv_mod_tmp_5a14_92 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_30.clone())) + + (M31_1.clone() * conv_tmp_5a14_36.clone())) + + (M31_32.clone() * conv_tmp_5a14_37.clone())) + - (M31_4.clone() * conv_tmp_5a14_58.clone())), + ); + let conv_mod_tmp_5a14_93 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_31.clone())) + + (M31_1.clone() * conv_tmp_5a14_37.clone())) + - (M31_4.clone() * conv_tmp_5a14_59.clone())) + + (M31_64.clone() * conv_tmp_5a14_66.clone())), + ); + let conv_mod_tmp_5a14_94 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_32.clone())) + - (M31_4.clone() * conv_tmp_5a14_60.clone())) + + (M31_2.clone() * conv_tmp_5a14_66.clone())) + + (M31_64.clone() * conv_tmp_5a14_67.clone())), + ); + let conv_mod_tmp_5a14_95 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_33.clone())) + - (M31_4.clone() * conv_tmp_5a14_61.clone())) + + (M31_2.clone() * conv_tmp_5a14_67.clone())) + + (M31_64.clone() * conv_tmp_5a14_68.clone())), + ); + let conv_mod_tmp_5a14_96 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_34.clone())) + - (M31_4.clone() * conv_tmp_5a14_62.clone())) + + (M31_2.clone() * conv_tmp_5a14_68.clone())) + + (M31_64.clone() * conv_tmp_5a14_69.clone())), + ); + let conv_mod_tmp_5a14_97 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_35.clone())) + - (M31_4.clone() * conv_tmp_5a14_63.clone())) + + (M31_2.clone() * conv_tmp_5a14_69.clone())) + + (M31_64.clone() * conv_tmp_5a14_70.clone())), + ); + let conv_mod_tmp_5a14_98 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_36.clone())) + - (M31_4.clone() * conv_tmp_5a14_64.clone())) + + (M31_2.clone() * conv_tmp_5a14_70.clone())) + + (M31_64.clone() * conv_tmp_5a14_71.clone())), + ); + let conv_mod_tmp_5a14_99 = eval.add_intermediate( + (((M31_0.clone() + (M31_2.clone() * conv_tmp_5a14_37.clone())) + - (M31_4.clone() * conv_tmp_5a14_65.clone())) + + (M31_2.clone() * conv_tmp_5a14_71.clone())), + ); eval.add_to_relation(RelationEntry::new( &self.rangecheck_19_lookup_elements, E::EF::one(), diff --git a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/prover.rs b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/prover.rs index 85e209e6..73f735c4 100644 --- a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_f/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -124,75 +125,13 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub range_check_19_inputs: [Vec; 28], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - range_check_19_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.range_check_19_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/component.rs b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/component.rs index dcd85301..88ba42e6 100644 --- a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/component.rs +++ b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/component.rs @@ -390,998 +390,1119 @@ impl FrameworkEval for Eval { // VerifyMul252. - let conv_tmp_31b3_14 = ((M31_0.clone() - dst_limb_0_col9.clone()) - + (op0_limb_0_col38.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_15 = (((M31_0.clone() - dst_limb_1_col10.clone()) - + (op0_limb_0_col38.clone() * op1_limb_1_col68.clone())) - + (op0_limb_1_col39.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_16 = ((((M31_0.clone() - dst_limb_2_col11.clone()) - + (op0_limb_0_col38.clone() * op1_limb_2_col69.clone())) - + (op0_limb_1_col39.clone() * op1_limb_1_col68.clone())) - + (op0_limb_2_col40.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_17 = (((((M31_0.clone() - dst_limb_3_col12.clone()) - + (op0_limb_0_col38.clone() * op1_limb_3_col70.clone())) - + (op0_limb_1_col39.clone() * op1_limb_2_col69.clone())) - + (op0_limb_2_col40.clone() * op1_limb_1_col68.clone())) - + (op0_limb_3_col41.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_18 = ((((((M31_0.clone() - dst_limb_4_col13.clone()) - + (op0_limb_0_col38.clone() * op1_limb_4_col71.clone())) - + (op0_limb_1_col39.clone() * op1_limb_3_col70.clone())) - + (op0_limb_2_col40.clone() * op1_limb_2_col69.clone())) - + (op0_limb_3_col41.clone() * op1_limb_1_col68.clone())) - + (op0_limb_4_col42.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_19 = (((((((M31_0.clone() - dst_limb_5_col14.clone()) - + (op0_limb_0_col38.clone() * op1_limb_5_col72.clone())) - + (op0_limb_1_col39.clone() * op1_limb_4_col71.clone())) - + (op0_limb_2_col40.clone() * op1_limb_3_col70.clone())) - + (op0_limb_3_col41.clone() * op1_limb_2_col69.clone())) - + (op0_limb_4_col42.clone() * op1_limb_1_col68.clone())) - + (op0_limb_5_col43.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_20 = ((((((((M31_0.clone() - dst_limb_6_col15.clone()) - + (op0_limb_0_col38.clone() * op1_limb_6_col73.clone())) - + (op0_limb_1_col39.clone() * op1_limb_5_col72.clone())) - + (op0_limb_2_col40.clone() * op1_limb_4_col71.clone())) - + (op0_limb_3_col41.clone() * op1_limb_3_col70.clone())) - + (op0_limb_4_col42.clone() * op1_limb_2_col69.clone())) - + (op0_limb_5_col43.clone() * op1_limb_1_col68.clone())) - + (op0_limb_6_col44.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_21 = (((((((((M31_0.clone() - dst_limb_7_col16.clone()) - + (op0_limb_0_col38.clone() * op1_limb_7_col74.clone())) - + (op0_limb_1_col39.clone() * op1_limb_6_col73.clone())) - + (op0_limb_2_col40.clone() * op1_limb_5_col72.clone())) - + (op0_limb_3_col41.clone() * op1_limb_4_col71.clone())) - + (op0_limb_4_col42.clone() * op1_limb_3_col70.clone())) - + (op0_limb_5_col43.clone() * op1_limb_2_col69.clone())) - + (op0_limb_6_col44.clone() * op1_limb_1_col68.clone())) - + (op0_limb_7_col45.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_22 = ((((((((((M31_0.clone() - dst_limb_8_col17.clone()) - + (op0_limb_0_col38.clone() * op1_limb_8_col75.clone())) - + (op0_limb_1_col39.clone() * op1_limb_7_col74.clone())) - + (op0_limb_2_col40.clone() * op1_limb_6_col73.clone())) - + (op0_limb_3_col41.clone() * op1_limb_5_col72.clone())) - + (op0_limb_4_col42.clone() * op1_limb_4_col71.clone())) - + (op0_limb_5_col43.clone() * op1_limb_3_col70.clone())) - + (op0_limb_6_col44.clone() * op1_limb_2_col69.clone())) - + (op0_limb_7_col45.clone() * op1_limb_1_col68.clone())) - + (op0_limb_8_col46.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_23 = (((((((((((M31_0.clone() - dst_limb_9_col18.clone()) - + (op0_limb_0_col38.clone() * op1_limb_9_col76.clone())) - + (op0_limb_1_col39.clone() * op1_limb_8_col75.clone())) - + (op0_limb_2_col40.clone() * op1_limb_7_col74.clone())) - + (op0_limb_3_col41.clone() * op1_limb_6_col73.clone())) - + (op0_limb_4_col42.clone() * op1_limb_5_col72.clone())) - + (op0_limb_5_col43.clone() * op1_limb_4_col71.clone())) - + (op0_limb_6_col44.clone() * op1_limb_3_col70.clone())) - + (op0_limb_7_col45.clone() * op1_limb_2_col69.clone())) - + (op0_limb_8_col46.clone() * op1_limb_1_col68.clone())) - + (op0_limb_9_col47.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_24 = ((((((((((((M31_0.clone() - dst_limb_10_col19.clone()) - + (op0_limb_0_col38.clone() * op1_limb_10_col77.clone())) - + (op0_limb_1_col39.clone() * op1_limb_9_col76.clone())) - + (op0_limb_2_col40.clone() * op1_limb_8_col75.clone())) - + (op0_limb_3_col41.clone() * op1_limb_7_col74.clone())) - + (op0_limb_4_col42.clone() * op1_limb_6_col73.clone())) - + (op0_limb_5_col43.clone() * op1_limb_5_col72.clone())) - + (op0_limb_6_col44.clone() * op1_limb_4_col71.clone())) - + (op0_limb_7_col45.clone() * op1_limb_3_col70.clone())) - + (op0_limb_8_col46.clone() * op1_limb_2_col69.clone())) - + (op0_limb_9_col47.clone() * op1_limb_1_col68.clone())) - + (op0_limb_10_col48.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_25 = (((((((((((((M31_0.clone() - dst_limb_11_col20.clone()) - + (op0_limb_0_col38.clone() * op1_limb_11_col78.clone())) - + (op0_limb_1_col39.clone() * op1_limb_10_col77.clone())) - + (op0_limb_2_col40.clone() * op1_limb_9_col76.clone())) - + (op0_limb_3_col41.clone() * op1_limb_8_col75.clone())) - + (op0_limb_4_col42.clone() * op1_limb_7_col74.clone())) - + (op0_limb_5_col43.clone() * op1_limb_6_col73.clone())) - + (op0_limb_6_col44.clone() * op1_limb_5_col72.clone())) - + (op0_limb_7_col45.clone() * op1_limb_4_col71.clone())) - + (op0_limb_8_col46.clone() * op1_limb_3_col70.clone())) - + (op0_limb_9_col47.clone() * op1_limb_2_col69.clone())) - + (op0_limb_10_col48.clone() * op1_limb_1_col68.clone())) - + (op0_limb_11_col49.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_26 = ((((((((((((((M31_0.clone() - - dst_limb_12_col21.clone()) - + (op0_limb_0_col38.clone() * op1_limb_12_col79.clone())) - + (op0_limb_1_col39.clone() * op1_limb_11_col78.clone())) - + (op0_limb_2_col40.clone() * op1_limb_10_col77.clone())) - + (op0_limb_3_col41.clone() * op1_limb_9_col76.clone())) - + (op0_limb_4_col42.clone() * op1_limb_8_col75.clone())) - + (op0_limb_5_col43.clone() * op1_limb_7_col74.clone())) - + (op0_limb_6_col44.clone() * op1_limb_6_col73.clone())) - + (op0_limb_7_col45.clone() * op1_limb_5_col72.clone())) - + (op0_limb_8_col46.clone() * op1_limb_4_col71.clone())) - + (op0_limb_9_col47.clone() * op1_limb_3_col70.clone())) - + (op0_limb_10_col48.clone() * op1_limb_2_col69.clone())) - + (op0_limb_11_col49.clone() * op1_limb_1_col68.clone())) - + (op0_limb_12_col50.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_27 = (((((((((((((((M31_0.clone() - - dst_limb_13_col22.clone()) - + (op0_limb_0_col38.clone() * op1_limb_13_col80.clone())) - + (op0_limb_1_col39.clone() * op1_limb_12_col79.clone())) - + (op0_limb_2_col40.clone() * op1_limb_11_col78.clone())) - + (op0_limb_3_col41.clone() * op1_limb_10_col77.clone())) - + (op0_limb_4_col42.clone() * op1_limb_9_col76.clone())) - + (op0_limb_5_col43.clone() * op1_limb_8_col75.clone())) - + (op0_limb_6_col44.clone() * op1_limb_7_col74.clone())) - + (op0_limb_7_col45.clone() * op1_limb_6_col73.clone())) - + (op0_limb_8_col46.clone() * op1_limb_5_col72.clone())) - + (op0_limb_9_col47.clone() * op1_limb_4_col71.clone())) - + (op0_limb_10_col48.clone() * op1_limb_3_col70.clone())) - + (op0_limb_11_col49.clone() * op1_limb_2_col69.clone())) - + (op0_limb_12_col50.clone() * op1_limb_1_col68.clone())) - + (op0_limb_13_col51.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_28 = ((((((((((((((((M31_0.clone() - - dst_limb_14_col23.clone()) - + (op0_limb_0_col38.clone() * op1_limb_14_col81.clone())) - + (op0_limb_1_col39.clone() * op1_limb_13_col80.clone())) - + (op0_limb_2_col40.clone() * op1_limb_12_col79.clone())) - + (op0_limb_3_col41.clone() * op1_limb_11_col78.clone())) - + (op0_limb_4_col42.clone() * op1_limb_10_col77.clone())) - + (op0_limb_5_col43.clone() * op1_limb_9_col76.clone())) - + (op0_limb_6_col44.clone() * op1_limb_8_col75.clone())) - + (op0_limb_7_col45.clone() * op1_limb_7_col74.clone())) - + (op0_limb_8_col46.clone() * op1_limb_6_col73.clone())) - + (op0_limb_9_col47.clone() * op1_limb_5_col72.clone())) - + (op0_limb_10_col48.clone() * op1_limb_4_col71.clone())) - + (op0_limb_11_col49.clone() * op1_limb_3_col70.clone())) - + (op0_limb_12_col50.clone() * op1_limb_2_col69.clone())) - + (op0_limb_13_col51.clone() * op1_limb_1_col68.clone())) - + (op0_limb_14_col52.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_29 = (((((((((((((((((M31_0.clone() - - dst_limb_15_col24.clone()) - + (op0_limb_0_col38.clone() * op1_limb_15_col82.clone())) - + (op0_limb_1_col39.clone() * op1_limb_14_col81.clone())) - + (op0_limb_2_col40.clone() * op1_limb_13_col80.clone())) - + (op0_limb_3_col41.clone() * op1_limb_12_col79.clone())) - + (op0_limb_4_col42.clone() * op1_limb_11_col78.clone())) - + (op0_limb_5_col43.clone() * op1_limb_10_col77.clone())) - + (op0_limb_6_col44.clone() * op1_limb_9_col76.clone())) - + (op0_limb_7_col45.clone() * op1_limb_8_col75.clone())) - + (op0_limb_8_col46.clone() * op1_limb_7_col74.clone())) - + (op0_limb_9_col47.clone() * op1_limb_6_col73.clone())) - + (op0_limb_10_col48.clone() * op1_limb_5_col72.clone())) - + (op0_limb_11_col49.clone() * op1_limb_4_col71.clone())) - + (op0_limb_12_col50.clone() * op1_limb_3_col70.clone())) - + (op0_limb_13_col51.clone() * op1_limb_2_col69.clone())) - + (op0_limb_14_col52.clone() * op1_limb_1_col68.clone())) - + (op0_limb_15_col53.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_30 = ((((((((((((((((((M31_0.clone() - - dst_limb_16_col25.clone()) - + (op0_limb_0_col38.clone() * op1_limb_16_col83.clone())) - + (op0_limb_1_col39.clone() * op1_limb_15_col82.clone())) - + (op0_limb_2_col40.clone() * op1_limb_14_col81.clone())) - + (op0_limb_3_col41.clone() * op1_limb_13_col80.clone())) - + (op0_limb_4_col42.clone() * op1_limb_12_col79.clone())) - + (op0_limb_5_col43.clone() * op1_limb_11_col78.clone())) - + (op0_limb_6_col44.clone() * op1_limb_10_col77.clone())) - + (op0_limb_7_col45.clone() * op1_limb_9_col76.clone())) - + (op0_limb_8_col46.clone() * op1_limb_8_col75.clone())) - + (op0_limb_9_col47.clone() * op1_limb_7_col74.clone())) - + (op0_limb_10_col48.clone() * op1_limb_6_col73.clone())) - + (op0_limb_11_col49.clone() * op1_limb_5_col72.clone())) - + (op0_limb_12_col50.clone() * op1_limb_4_col71.clone())) - + (op0_limb_13_col51.clone() * op1_limb_3_col70.clone())) - + (op0_limb_14_col52.clone() * op1_limb_2_col69.clone())) - + (op0_limb_15_col53.clone() * op1_limb_1_col68.clone())) - + (op0_limb_16_col54.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_31 = (((((((((((((((((((M31_0.clone() - - dst_limb_17_col26.clone()) - + (op0_limb_0_col38.clone() * op1_limb_17_col84.clone())) - + (op0_limb_1_col39.clone() * op1_limb_16_col83.clone())) - + (op0_limb_2_col40.clone() * op1_limb_15_col82.clone())) - + (op0_limb_3_col41.clone() * op1_limb_14_col81.clone())) - + (op0_limb_4_col42.clone() * op1_limb_13_col80.clone())) - + (op0_limb_5_col43.clone() * op1_limb_12_col79.clone())) - + (op0_limb_6_col44.clone() * op1_limb_11_col78.clone())) - + (op0_limb_7_col45.clone() * op1_limb_10_col77.clone())) - + (op0_limb_8_col46.clone() * op1_limb_9_col76.clone())) - + (op0_limb_9_col47.clone() * op1_limb_8_col75.clone())) - + (op0_limb_10_col48.clone() * op1_limb_7_col74.clone())) - + (op0_limb_11_col49.clone() * op1_limb_6_col73.clone())) - + (op0_limb_12_col50.clone() * op1_limb_5_col72.clone())) - + (op0_limb_13_col51.clone() * op1_limb_4_col71.clone())) - + (op0_limb_14_col52.clone() * op1_limb_3_col70.clone())) - + (op0_limb_15_col53.clone() * op1_limb_2_col69.clone())) - + (op0_limb_16_col54.clone() * op1_limb_1_col68.clone())) - + (op0_limb_17_col55.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_32 = ((((((((((((((((((((M31_0.clone() - - dst_limb_18_col27.clone()) - + (op0_limb_0_col38.clone() * op1_limb_18_col85.clone())) - + (op0_limb_1_col39.clone() * op1_limb_17_col84.clone())) - + (op0_limb_2_col40.clone() * op1_limb_16_col83.clone())) - + (op0_limb_3_col41.clone() * op1_limb_15_col82.clone())) - + (op0_limb_4_col42.clone() * op1_limb_14_col81.clone())) - + (op0_limb_5_col43.clone() * op1_limb_13_col80.clone())) - + (op0_limb_6_col44.clone() * op1_limb_12_col79.clone())) - + (op0_limb_7_col45.clone() * op1_limb_11_col78.clone())) - + (op0_limb_8_col46.clone() * op1_limb_10_col77.clone())) - + (op0_limb_9_col47.clone() * op1_limb_9_col76.clone())) - + (op0_limb_10_col48.clone() * op1_limb_8_col75.clone())) - + (op0_limb_11_col49.clone() * op1_limb_7_col74.clone())) - + (op0_limb_12_col50.clone() * op1_limb_6_col73.clone())) - + (op0_limb_13_col51.clone() * op1_limb_5_col72.clone())) - + (op0_limb_14_col52.clone() * op1_limb_4_col71.clone())) - + (op0_limb_15_col53.clone() * op1_limb_3_col70.clone())) - + (op0_limb_16_col54.clone() * op1_limb_2_col69.clone())) - + (op0_limb_17_col55.clone() * op1_limb_1_col68.clone())) - + (op0_limb_18_col56.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_33 = (((((((((((((((((((((M31_0.clone() - - dst_limb_19_col28.clone()) - + (op0_limb_0_col38.clone() * op1_limb_19_col86.clone())) - + (op0_limb_1_col39.clone() * op1_limb_18_col85.clone())) - + (op0_limb_2_col40.clone() * op1_limb_17_col84.clone())) - + (op0_limb_3_col41.clone() * op1_limb_16_col83.clone())) - + (op0_limb_4_col42.clone() * op1_limb_15_col82.clone())) - + (op0_limb_5_col43.clone() * op1_limb_14_col81.clone())) - + (op0_limb_6_col44.clone() * op1_limb_13_col80.clone())) - + (op0_limb_7_col45.clone() * op1_limb_12_col79.clone())) - + (op0_limb_8_col46.clone() * op1_limb_11_col78.clone())) - + (op0_limb_9_col47.clone() * op1_limb_10_col77.clone())) - + (op0_limb_10_col48.clone() * op1_limb_9_col76.clone())) - + (op0_limb_11_col49.clone() * op1_limb_8_col75.clone())) - + (op0_limb_12_col50.clone() * op1_limb_7_col74.clone())) - + (op0_limb_13_col51.clone() * op1_limb_6_col73.clone())) - + (op0_limb_14_col52.clone() * op1_limb_5_col72.clone())) - + (op0_limb_15_col53.clone() * op1_limb_4_col71.clone())) - + (op0_limb_16_col54.clone() * op1_limb_3_col70.clone())) - + (op0_limb_17_col55.clone() * op1_limb_2_col69.clone())) - + (op0_limb_18_col56.clone() * op1_limb_1_col68.clone())) - + (op0_limb_19_col57.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_34 = ((((((((((((((((((((((M31_0.clone() - - dst_limb_20_col29.clone()) - + (op0_limb_0_col38.clone() * op1_limb_20_col87.clone())) - + (op0_limb_1_col39.clone() * op1_limb_19_col86.clone())) - + (op0_limb_2_col40.clone() * op1_limb_18_col85.clone())) - + (op0_limb_3_col41.clone() * op1_limb_17_col84.clone())) - + (op0_limb_4_col42.clone() * op1_limb_16_col83.clone())) - + (op0_limb_5_col43.clone() * op1_limb_15_col82.clone())) - + (op0_limb_6_col44.clone() * op1_limb_14_col81.clone())) - + (op0_limb_7_col45.clone() * op1_limb_13_col80.clone())) - + (op0_limb_8_col46.clone() * op1_limb_12_col79.clone())) - + (op0_limb_9_col47.clone() * op1_limb_11_col78.clone())) - + (op0_limb_10_col48.clone() * op1_limb_10_col77.clone())) - + (op0_limb_11_col49.clone() * op1_limb_9_col76.clone())) - + (op0_limb_12_col50.clone() * op1_limb_8_col75.clone())) - + (op0_limb_13_col51.clone() * op1_limb_7_col74.clone())) - + (op0_limb_14_col52.clone() * op1_limb_6_col73.clone())) - + (op0_limb_15_col53.clone() * op1_limb_5_col72.clone())) - + (op0_limb_16_col54.clone() * op1_limb_4_col71.clone())) - + (op0_limb_17_col55.clone() * op1_limb_3_col70.clone())) - + (op0_limb_18_col56.clone() * op1_limb_2_col69.clone())) - + (op0_limb_19_col57.clone() * op1_limb_1_col68.clone())) - + (op0_limb_20_col58.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_35 = (((((((((((((((((((((((M31_0.clone() - - dst_limb_21_col30.clone()) - + (op0_limb_0_col38.clone() * op1_limb_21_col88.clone())) - + (op0_limb_1_col39.clone() * op1_limb_20_col87.clone())) - + (op0_limb_2_col40.clone() * op1_limb_19_col86.clone())) - + (op0_limb_3_col41.clone() * op1_limb_18_col85.clone())) - + (op0_limb_4_col42.clone() * op1_limb_17_col84.clone())) - + (op0_limb_5_col43.clone() * op1_limb_16_col83.clone())) - + (op0_limb_6_col44.clone() * op1_limb_15_col82.clone())) - + (op0_limb_7_col45.clone() * op1_limb_14_col81.clone())) - + (op0_limb_8_col46.clone() * op1_limb_13_col80.clone())) - + (op0_limb_9_col47.clone() * op1_limb_12_col79.clone())) - + (op0_limb_10_col48.clone() * op1_limb_11_col78.clone())) - + (op0_limb_11_col49.clone() * op1_limb_10_col77.clone())) - + (op0_limb_12_col50.clone() * op1_limb_9_col76.clone())) - + (op0_limb_13_col51.clone() * op1_limb_8_col75.clone())) - + (op0_limb_14_col52.clone() * op1_limb_7_col74.clone())) - + (op0_limb_15_col53.clone() * op1_limb_6_col73.clone())) - + (op0_limb_16_col54.clone() * op1_limb_5_col72.clone())) - + (op0_limb_17_col55.clone() * op1_limb_4_col71.clone())) - + (op0_limb_18_col56.clone() * op1_limb_3_col70.clone())) - + (op0_limb_19_col57.clone() * op1_limb_2_col69.clone())) - + (op0_limb_20_col58.clone() * op1_limb_1_col68.clone())) - + (op0_limb_21_col59.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_36 = ((((((((((((((((((((((((M31_0.clone() - - dst_limb_22_col31.clone()) - + (op0_limb_0_col38.clone() * op1_limb_22_col89.clone())) - + (op0_limb_1_col39.clone() * op1_limb_21_col88.clone())) - + (op0_limb_2_col40.clone() * op1_limb_20_col87.clone())) - + (op0_limb_3_col41.clone() * op1_limb_19_col86.clone())) - + (op0_limb_4_col42.clone() * op1_limb_18_col85.clone())) - + (op0_limb_5_col43.clone() * op1_limb_17_col84.clone())) - + (op0_limb_6_col44.clone() * op1_limb_16_col83.clone())) - + (op0_limb_7_col45.clone() * op1_limb_15_col82.clone())) - + (op0_limb_8_col46.clone() * op1_limb_14_col81.clone())) - + (op0_limb_9_col47.clone() * op1_limb_13_col80.clone())) - + (op0_limb_10_col48.clone() * op1_limb_12_col79.clone())) - + (op0_limb_11_col49.clone() * op1_limb_11_col78.clone())) - + (op0_limb_12_col50.clone() * op1_limb_10_col77.clone())) - + (op0_limb_13_col51.clone() * op1_limb_9_col76.clone())) - + (op0_limb_14_col52.clone() * op1_limb_8_col75.clone())) - + (op0_limb_15_col53.clone() * op1_limb_7_col74.clone())) - + (op0_limb_16_col54.clone() * op1_limb_6_col73.clone())) - + (op0_limb_17_col55.clone() * op1_limb_5_col72.clone())) - + (op0_limb_18_col56.clone() * op1_limb_4_col71.clone())) - + (op0_limb_19_col57.clone() * op1_limb_3_col70.clone())) - + (op0_limb_20_col58.clone() * op1_limb_2_col69.clone())) - + (op0_limb_21_col59.clone() * op1_limb_1_col68.clone())) - + (op0_limb_22_col60.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_37 = (((((((((((((((((((((((((M31_0.clone() - - dst_limb_23_col32.clone()) - + (op0_limb_0_col38.clone() * op1_limb_23_col90.clone())) - + (op0_limb_1_col39.clone() * op1_limb_22_col89.clone())) - + (op0_limb_2_col40.clone() * op1_limb_21_col88.clone())) - + (op0_limb_3_col41.clone() * op1_limb_20_col87.clone())) - + (op0_limb_4_col42.clone() * op1_limb_19_col86.clone())) - + (op0_limb_5_col43.clone() * op1_limb_18_col85.clone())) - + (op0_limb_6_col44.clone() * op1_limb_17_col84.clone())) - + (op0_limb_7_col45.clone() * op1_limb_16_col83.clone())) - + (op0_limb_8_col46.clone() * op1_limb_15_col82.clone())) - + (op0_limb_9_col47.clone() * op1_limb_14_col81.clone())) - + (op0_limb_10_col48.clone() * op1_limb_13_col80.clone())) - + (op0_limb_11_col49.clone() * op1_limb_12_col79.clone())) - + (op0_limb_12_col50.clone() * op1_limb_11_col78.clone())) - + (op0_limb_13_col51.clone() * op1_limb_10_col77.clone())) - + (op0_limb_14_col52.clone() * op1_limb_9_col76.clone())) - + (op0_limb_15_col53.clone() * op1_limb_8_col75.clone())) - + (op0_limb_16_col54.clone() * op1_limb_7_col74.clone())) - + (op0_limb_17_col55.clone() * op1_limb_6_col73.clone())) - + (op0_limb_18_col56.clone() * op1_limb_5_col72.clone())) - + (op0_limb_19_col57.clone() * op1_limb_4_col71.clone())) - + (op0_limb_20_col58.clone() * op1_limb_3_col70.clone())) - + (op0_limb_21_col59.clone() * op1_limb_2_col69.clone())) - + (op0_limb_22_col60.clone() * op1_limb_1_col68.clone())) - + (op0_limb_23_col61.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_38 = ((((((((((((((((((((((((((M31_0.clone() - - dst_limb_24_col33.clone()) - + (op0_limb_0_col38.clone() * op1_limb_24_col91.clone())) - + (op0_limb_1_col39.clone() * op1_limb_23_col90.clone())) - + (op0_limb_2_col40.clone() * op1_limb_22_col89.clone())) - + (op0_limb_3_col41.clone() * op1_limb_21_col88.clone())) - + (op0_limb_4_col42.clone() * op1_limb_20_col87.clone())) - + (op0_limb_5_col43.clone() * op1_limb_19_col86.clone())) - + (op0_limb_6_col44.clone() * op1_limb_18_col85.clone())) - + (op0_limb_7_col45.clone() * op1_limb_17_col84.clone())) - + (op0_limb_8_col46.clone() * op1_limb_16_col83.clone())) - + (op0_limb_9_col47.clone() * op1_limb_15_col82.clone())) - + (op0_limb_10_col48.clone() * op1_limb_14_col81.clone())) - + (op0_limb_11_col49.clone() * op1_limb_13_col80.clone())) - + (op0_limb_12_col50.clone() * op1_limb_12_col79.clone())) - + (op0_limb_13_col51.clone() * op1_limb_11_col78.clone())) - + (op0_limb_14_col52.clone() * op1_limb_10_col77.clone())) - + (op0_limb_15_col53.clone() * op1_limb_9_col76.clone())) - + (op0_limb_16_col54.clone() * op1_limb_8_col75.clone())) - + (op0_limb_17_col55.clone() * op1_limb_7_col74.clone())) - + (op0_limb_18_col56.clone() * op1_limb_6_col73.clone())) - + (op0_limb_19_col57.clone() * op1_limb_5_col72.clone())) - + (op0_limb_20_col58.clone() * op1_limb_4_col71.clone())) - + (op0_limb_21_col59.clone() * op1_limb_3_col70.clone())) - + (op0_limb_22_col60.clone() * op1_limb_2_col69.clone())) - + (op0_limb_23_col61.clone() * op1_limb_1_col68.clone())) - + (op0_limb_24_col62.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_39 = (((((((((((((((((((((((((((M31_0.clone() - - dst_limb_25_col34.clone()) - + (op0_limb_0_col38.clone() * op1_limb_25_col92.clone())) - + (op0_limb_1_col39.clone() * op1_limb_24_col91.clone())) - + (op0_limb_2_col40.clone() * op1_limb_23_col90.clone())) - + (op0_limb_3_col41.clone() * op1_limb_22_col89.clone())) - + (op0_limb_4_col42.clone() * op1_limb_21_col88.clone())) - + (op0_limb_5_col43.clone() * op1_limb_20_col87.clone())) - + (op0_limb_6_col44.clone() * op1_limb_19_col86.clone())) - + (op0_limb_7_col45.clone() * op1_limb_18_col85.clone())) - + (op0_limb_8_col46.clone() * op1_limb_17_col84.clone())) - + (op0_limb_9_col47.clone() * op1_limb_16_col83.clone())) - + (op0_limb_10_col48.clone() * op1_limb_15_col82.clone())) - + (op0_limb_11_col49.clone() * op1_limb_14_col81.clone())) - + (op0_limb_12_col50.clone() * op1_limb_13_col80.clone())) - + (op0_limb_13_col51.clone() * op1_limb_12_col79.clone())) - + (op0_limb_14_col52.clone() * op1_limb_11_col78.clone())) - + (op0_limb_15_col53.clone() * op1_limb_10_col77.clone())) - + (op0_limb_16_col54.clone() * op1_limb_9_col76.clone())) - + (op0_limb_17_col55.clone() * op1_limb_8_col75.clone())) - + (op0_limb_18_col56.clone() * op1_limb_7_col74.clone())) - + (op0_limb_19_col57.clone() * op1_limb_6_col73.clone())) - + (op0_limb_20_col58.clone() * op1_limb_5_col72.clone())) - + (op0_limb_21_col59.clone() * op1_limb_4_col71.clone())) - + (op0_limb_22_col60.clone() * op1_limb_3_col70.clone())) - + (op0_limb_23_col61.clone() * op1_limb_2_col69.clone())) - + (op0_limb_24_col62.clone() * op1_limb_1_col68.clone())) - + (op0_limb_25_col63.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_40 = ((((((((((((((((((((((((((((M31_0 - .clone() - - dst_limb_26_col35.clone()) - + (op0_limb_0_col38.clone() * op1_limb_26_col93.clone())) - + (op0_limb_1_col39.clone() * op1_limb_25_col92.clone())) - + (op0_limb_2_col40.clone() * op1_limb_24_col91.clone())) - + (op0_limb_3_col41.clone() * op1_limb_23_col90.clone())) - + (op0_limb_4_col42.clone() * op1_limb_22_col89.clone())) - + (op0_limb_5_col43.clone() * op1_limb_21_col88.clone())) - + (op0_limb_6_col44.clone() * op1_limb_20_col87.clone())) - + (op0_limb_7_col45.clone() * op1_limb_19_col86.clone())) - + (op0_limb_8_col46.clone() * op1_limb_18_col85.clone())) - + (op0_limb_9_col47.clone() * op1_limb_17_col84.clone())) - + (op0_limb_10_col48.clone() * op1_limb_16_col83.clone())) - + (op0_limb_11_col49.clone() * op1_limb_15_col82.clone())) - + (op0_limb_12_col50.clone() * op1_limb_14_col81.clone())) - + (op0_limb_13_col51.clone() * op1_limb_13_col80.clone())) - + (op0_limb_14_col52.clone() * op1_limb_12_col79.clone())) - + (op0_limb_15_col53.clone() * op1_limb_11_col78.clone())) - + (op0_limb_16_col54.clone() * op1_limb_10_col77.clone())) - + (op0_limb_17_col55.clone() * op1_limb_9_col76.clone())) - + (op0_limb_18_col56.clone() * op1_limb_8_col75.clone())) - + (op0_limb_19_col57.clone() * op1_limb_7_col74.clone())) - + (op0_limb_20_col58.clone() * op1_limb_6_col73.clone())) - + (op0_limb_21_col59.clone() * op1_limb_5_col72.clone())) - + (op0_limb_22_col60.clone() * op1_limb_4_col71.clone())) - + (op0_limb_23_col61.clone() * op1_limb_3_col70.clone())) - + (op0_limb_24_col62.clone() * op1_limb_2_col69.clone())) - + (op0_limb_25_col63.clone() * op1_limb_1_col68.clone())) - + (op0_limb_26_col64.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_41 = (((((((((((((((((((((((((((((M31_0 - .clone() - - dst_limb_27_col36.clone()) - + (op0_limb_0_col38.clone() * op1_limb_27_col94.clone())) - + (op0_limb_1_col39.clone() * op1_limb_26_col93.clone())) - + (op0_limb_2_col40.clone() * op1_limb_25_col92.clone())) - + (op0_limb_3_col41.clone() * op1_limb_24_col91.clone())) - + (op0_limb_4_col42.clone() * op1_limb_23_col90.clone())) - + (op0_limb_5_col43.clone() * op1_limb_22_col89.clone())) - + (op0_limb_6_col44.clone() * op1_limb_21_col88.clone())) - + (op0_limb_7_col45.clone() * op1_limb_20_col87.clone())) - + (op0_limb_8_col46.clone() * op1_limb_19_col86.clone())) - + (op0_limb_9_col47.clone() * op1_limb_18_col85.clone())) - + (op0_limb_10_col48.clone() * op1_limb_17_col84.clone())) - + (op0_limb_11_col49.clone() * op1_limb_16_col83.clone())) - + (op0_limb_12_col50.clone() * op1_limb_15_col82.clone())) - + (op0_limb_13_col51.clone() * op1_limb_14_col81.clone())) - + (op0_limb_14_col52.clone() * op1_limb_13_col80.clone())) - + (op0_limb_15_col53.clone() * op1_limb_12_col79.clone())) - + (op0_limb_16_col54.clone() * op1_limb_11_col78.clone())) - + (op0_limb_17_col55.clone() * op1_limb_10_col77.clone())) - + (op0_limb_18_col56.clone() * op1_limb_9_col76.clone())) - + (op0_limb_19_col57.clone() * op1_limb_8_col75.clone())) - + (op0_limb_20_col58.clone() * op1_limb_7_col74.clone())) - + (op0_limb_21_col59.clone() * op1_limb_6_col73.clone())) - + (op0_limb_22_col60.clone() * op1_limb_5_col72.clone())) - + (op0_limb_23_col61.clone() * op1_limb_4_col71.clone())) - + (op0_limb_24_col62.clone() * op1_limb_3_col70.clone())) - + (op0_limb_25_col63.clone() * op1_limb_2_col69.clone())) - + (op0_limb_26_col64.clone() * op1_limb_1_col68.clone())) - + (op0_limb_27_col65.clone() * op1_limb_0_col67.clone())); - let conv_tmp_31b3_42 = (((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_1_col39.clone() * op1_limb_27_col94.clone())) - + (op0_limb_2_col40.clone() * op1_limb_26_col93.clone())) - + (op0_limb_3_col41.clone() * op1_limb_25_col92.clone())) - + (op0_limb_4_col42.clone() * op1_limb_24_col91.clone())) - + (op0_limb_5_col43.clone() * op1_limb_23_col90.clone())) - + (op0_limb_6_col44.clone() * op1_limb_22_col89.clone())) - + (op0_limb_7_col45.clone() * op1_limb_21_col88.clone())) - + (op0_limb_8_col46.clone() * op1_limb_20_col87.clone())) - + (op0_limb_9_col47.clone() * op1_limb_19_col86.clone())) - + (op0_limb_10_col48.clone() * op1_limb_18_col85.clone())) - + (op0_limb_11_col49.clone() * op1_limb_17_col84.clone())) - + (op0_limb_12_col50.clone() * op1_limb_16_col83.clone())) - + (op0_limb_13_col51.clone() * op1_limb_15_col82.clone())) - + (op0_limb_14_col52.clone() * op1_limb_14_col81.clone())) - + (op0_limb_15_col53.clone() * op1_limb_13_col80.clone())) - + (op0_limb_16_col54.clone() * op1_limb_12_col79.clone())) - + (op0_limb_17_col55.clone() * op1_limb_11_col78.clone())) - + (op0_limb_18_col56.clone() * op1_limb_10_col77.clone())) - + (op0_limb_19_col57.clone() * op1_limb_9_col76.clone())) - + (op0_limb_20_col58.clone() * op1_limb_8_col75.clone())) - + (op0_limb_21_col59.clone() * op1_limb_7_col74.clone())) - + (op0_limb_22_col60.clone() * op1_limb_6_col73.clone())) - + (op0_limb_23_col61.clone() * op1_limb_5_col72.clone())) - + (op0_limb_24_col62.clone() * op1_limb_4_col71.clone())) - + (op0_limb_25_col63.clone() * op1_limb_3_col70.clone())) - + (op0_limb_26_col64.clone() * op1_limb_2_col69.clone())) - + (op0_limb_27_col65.clone() * op1_limb_1_col68.clone())); - let conv_tmp_31b3_43 = ((((((((((((((((((((((((((M31_0.clone() - + (op0_limb_2_col40.clone() * op1_limb_27_col94.clone())) - + (op0_limb_3_col41.clone() * op1_limb_26_col93.clone())) - + (op0_limb_4_col42.clone() * op1_limb_25_col92.clone())) - + (op0_limb_5_col43.clone() * op1_limb_24_col91.clone())) - + (op0_limb_6_col44.clone() * op1_limb_23_col90.clone())) - + (op0_limb_7_col45.clone() * op1_limb_22_col89.clone())) - + (op0_limb_8_col46.clone() * op1_limb_21_col88.clone())) - + (op0_limb_9_col47.clone() * op1_limb_20_col87.clone())) - + (op0_limb_10_col48.clone() * op1_limb_19_col86.clone())) - + (op0_limb_11_col49.clone() * op1_limb_18_col85.clone())) - + (op0_limb_12_col50.clone() * op1_limb_17_col84.clone())) - + (op0_limb_13_col51.clone() * op1_limb_16_col83.clone())) - + (op0_limb_14_col52.clone() * op1_limb_15_col82.clone())) - + (op0_limb_15_col53.clone() * op1_limb_14_col81.clone())) - + (op0_limb_16_col54.clone() * op1_limb_13_col80.clone())) - + (op0_limb_17_col55.clone() * op1_limb_12_col79.clone())) - + (op0_limb_18_col56.clone() * op1_limb_11_col78.clone())) - + (op0_limb_19_col57.clone() * op1_limb_10_col77.clone())) - + (op0_limb_20_col58.clone() * op1_limb_9_col76.clone())) - + (op0_limb_21_col59.clone() * op1_limb_8_col75.clone())) - + (op0_limb_22_col60.clone() * op1_limb_7_col74.clone())) - + (op0_limb_23_col61.clone() * op1_limb_6_col73.clone())) - + (op0_limb_24_col62.clone() * op1_limb_5_col72.clone())) - + (op0_limb_25_col63.clone() * op1_limb_4_col71.clone())) - + (op0_limb_26_col64.clone() * op1_limb_3_col70.clone())) - + (op0_limb_27_col65.clone() * op1_limb_2_col69.clone())); - let conv_tmp_31b3_44 = (((((((((((((((((((((((((M31_0.clone() - + (op0_limb_3_col41.clone() * op1_limb_27_col94.clone())) - + (op0_limb_4_col42.clone() * op1_limb_26_col93.clone())) - + (op0_limb_5_col43.clone() * op1_limb_25_col92.clone())) - + (op0_limb_6_col44.clone() * op1_limb_24_col91.clone())) - + (op0_limb_7_col45.clone() * op1_limb_23_col90.clone())) - + (op0_limb_8_col46.clone() * op1_limb_22_col89.clone())) - + (op0_limb_9_col47.clone() * op1_limb_21_col88.clone())) - + (op0_limb_10_col48.clone() * op1_limb_20_col87.clone())) - + (op0_limb_11_col49.clone() * op1_limb_19_col86.clone())) - + (op0_limb_12_col50.clone() * op1_limb_18_col85.clone())) - + (op0_limb_13_col51.clone() * op1_limb_17_col84.clone())) - + (op0_limb_14_col52.clone() * op1_limb_16_col83.clone())) - + (op0_limb_15_col53.clone() * op1_limb_15_col82.clone())) - + (op0_limb_16_col54.clone() * op1_limb_14_col81.clone())) - + (op0_limb_17_col55.clone() * op1_limb_13_col80.clone())) - + (op0_limb_18_col56.clone() * op1_limb_12_col79.clone())) - + (op0_limb_19_col57.clone() * op1_limb_11_col78.clone())) - + (op0_limb_20_col58.clone() * op1_limb_10_col77.clone())) - + (op0_limb_21_col59.clone() * op1_limb_9_col76.clone())) - + (op0_limb_22_col60.clone() * op1_limb_8_col75.clone())) - + (op0_limb_23_col61.clone() * op1_limb_7_col74.clone())) - + (op0_limb_24_col62.clone() * op1_limb_6_col73.clone())) - + (op0_limb_25_col63.clone() * op1_limb_5_col72.clone())) - + (op0_limb_26_col64.clone() * op1_limb_4_col71.clone())) - + (op0_limb_27_col65.clone() * op1_limb_3_col70.clone())); - let conv_tmp_31b3_45 = ((((((((((((((((((((((((M31_0.clone() - + (op0_limb_4_col42.clone() * op1_limb_27_col94.clone())) - + (op0_limb_5_col43.clone() * op1_limb_26_col93.clone())) - + (op0_limb_6_col44.clone() * op1_limb_25_col92.clone())) - + (op0_limb_7_col45.clone() * op1_limb_24_col91.clone())) - + (op0_limb_8_col46.clone() * op1_limb_23_col90.clone())) - + (op0_limb_9_col47.clone() * op1_limb_22_col89.clone())) - + (op0_limb_10_col48.clone() * op1_limb_21_col88.clone())) - + (op0_limb_11_col49.clone() * op1_limb_20_col87.clone())) - + (op0_limb_12_col50.clone() * op1_limb_19_col86.clone())) - + (op0_limb_13_col51.clone() * op1_limb_18_col85.clone())) - + (op0_limb_14_col52.clone() * op1_limb_17_col84.clone())) - + (op0_limb_15_col53.clone() * op1_limb_16_col83.clone())) - + (op0_limb_16_col54.clone() * op1_limb_15_col82.clone())) - + (op0_limb_17_col55.clone() * op1_limb_14_col81.clone())) - + (op0_limb_18_col56.clone() * op1_limb_13_col80.clone())) - + (op0_limb_19_col57.clone() * op1_limb_12_col79.clone())) - + (op0_limb_20_col58.clone() * op1_limb_11_col78.clone())) - + (op0_limb_21_col59.clone() * op1_limb_10_col77.clone())) - + (op0_limb_22_col60.clone() * op1_limb_9_col76.clone())) - + (op0_limb_23_col61.clone() * op1_limb_8_col75.clone())) - + (op0_limb_24_col62.clone() * op1_limb_7_col74.clone())) - + (op0_limb_25_col63.clone() * op1_limb_6_col73.clone())) - + (op0_limb_26_col64.clone() * op1_limb_5_col72.clone())) - + (op0_limb_27_col65.clone() * op1_limb_4_col71.clone())); - let conv_tmp_31b3_46 = (((((((((((((((((((((((M31_0.clone() - + (op0_limb_5_col43.clone() * op1_limb_27_col94.clone())) - + (op0_limb_6_col44.clone() * op1_limb_26_col93.clone())) - + (op0_limb_7_col45.clone() * op1_limb_25_col92.clone())) - + (op0_limb_8_col46.clone() * op1_limb_24_col91.clone())) - + (op0_limb_9_col47.clone() * op1_limb_23_col90.clone())) - + (op0_limb_10_col48.clone() * op1_limb_22_col89.clone())) - + (op0_limb_11_col49.clone() * op1_limb_21_col88.clone())) - + (op0_limb_12_col50.clone() * op1_limb_20_col87.clone())) - + (op0_limb_13_col51.clone() * op1_limb_19_col86.clone())) - + (op0_limb_14_col52.clone() * op1_limb_18_col85.clone())) - + (op0_limb_15_col53.clone() * op1_limb_17_col84.clone())) - + (op0_limb_16_col54.clone() * op1_limb_16_col83.clone())) - + (op0_limb_17_col55.clone() * op1_limb_15_col82.clone())) - + (op0_limb_18_col56.clone() * op1_limb_14_col81.clone())) - + (op0_limb_19_col57.clone() * op1_limb_13_col80.clone())) - + (op0_limb_20_col58.clone() * op1_limb_12_col79.clone())) - + (op0_limb_21_col59.clone() * op1_limb_11_col78.clone())) - + (op0_limb_22_col60.clone() * op1_limb_10_col77.clone())) - + (op0_limb_23_col61.clone() * op1_limb_9_col76.clone())) - + (op0_limb_24_col62.clone() * op1_limb_8_col75.clone())) - + (op0_limb_25_col63.clone() * op1_limb_7_col74.clone())) - + (op0_limb_26_col64.clone() * op1_limb_6_col73.clone())) - + (op0_limb_27_col65.clone() * op1_limb_5_col72.clone())); - let conv_tmp_31b3_47 = ((((((((((((((((((((((M31_0.clone() - + (op0_limb_6_col44.clone() * op1_limb_27_col94.clone())) - + (op0_limb_7_col45.clone() * op1_limb_26_col93.clone())) - + (op0_limb_8_col46.clone() * op1_limb_25_col92.clone())) - + (op0_limb_9_col47.clone() * op1_limb_24_col91.clone())) - + (op0_limb_10_col48.clone() * op1_limb_23_col90.clone())) - + (op0_limb_11_col49.clone() * op1_limb_22_col89.clone())) - + (op0_limb_12_col50.clone() * op1_limb_21_col88.clone())) - + (op0_limb_13_col51.clone() * op1_limb_20_col87.clone())) - + (op0_limb_14_col52.clone() * op1_limb_19_col86.clone())) - + (op0_limb_15_col53.clone() * op1_limb_18_col85.clone())) - + (op0_limb_16_col54.clone() * op1_limb_17_col84.clone())) - + (op0_limb_17_col55.clone() * op1_limb_16_col83.clone())) - + (op0_limb_18_col56.clone() * op1_limb_15_col82.clone())) - + (op0_limb_19_col57.clone() * op1_limb_14_col81.clone())) - + (op0_limb_20_col58.clone() * op1_limb_13_col80.clone())) - + (op0_limb_21_col59.clone() * op1_limb_12_col79.clone())) - + (op0_limb_22_col60.clone() * op1_limb_11_col78.clone())) - + (op0_limb_23_col61.clone() * op1_limb_10_col77.clone())) - + (op0_limb_24_col62.clone() * op1_limb_9_col76.clone())) - + (op0_limb_25_col63.clone() * op1_limb_8_col75.clone())) - + (op0_limb_26_col64.clone() * op1_limb_7_col74.clone())) - + (op0_limb_27_col65.clone() * op1_limb_6_col73.clone())); - let conv_tmp_31b3_48 = (((((((((((((((((((((M31_0.clone() - + (op0_limb_7_col45.clone() * op1_limb_27_col94.clone())) - + (op0_limb_8_col46.clone() * op1_limb_26_col93.clone())) - + (op0_limb_9_col47.clone() * op1_limb_25_col92.clone())) - + (op0_limb_10_col48.clone() * op1_limb_24_col91.clone())) - + (op0_limb_11_col49.clone() * op1_limb_23_col90.clone())) - + (op0_limb_12_col50.clone() * op1_limb_22_col89.clone())) - + (op0_limb_13_col51.clone() * op1_limb_21_col88.clone())) - + (op0_limb_14_col52.clone() * op1_limb_20_col87.clone())) - + (op0_limb_15_col53.clone() * op1_limb_19_col86.clone())) - + (op0_limb_16_col54.clone() * op1_limb_18_col85.clone())) - + (op0_limb_17_col55.clone() * op1_limb_17_col84.clone())) - + (op0_limb_18_col56.clone() * op1_limb_16_col83.clone())) - + (op0_limb_19_col57.clone() * op1_limb_15_col82.clone())) - + (op0_limb_20_col58.clone() * op1_limb_14_col81.clone())) - + (op0_limb_21_col59.clone() * op1_limb_13_col80.clone())) - + (op0_limb_22_col60.clone() * op1_limb_12_col79.clone())) - + (op0_limb_23_col61.clone() * op1_limb_11_col78.clone())) - + (op0_limb_24_col62.clone() * op1_limb_10_col77.clone())) - + (op0_limb_25_col63.clone() * op1_limb_9_col76.clone())) - + (op0_limb_26_col64.clone() * op1_limb_8_col75.clone())) - + (op0_limb_27_col65.clone() * op1_limb_7_col74.clone())); - let conv_tmp_31b3_49 = ((((((((((((((((((((M31_0.clone() - + (op0_limb_8_col46.clone() * op1_limb_27_col94.clone())) - + (op0_limb_9_col47.clone() * op1_limb_26_col93.clone())) - + (op0_limb_10_col48.clone() * op1_limb_25_col92.clone())) - + (op0_limb_11_col49.clone() * op1_limb_24_col91.clone())) - + (op0_limb_12_col50.clone() * op1_limb_23_col90.clone())) - + (op0_limb_13_col51.clone() * op1_limb_22_col89.clone())) - + (op0_limb_14_col52.clone() * op1_limb_21_col88.clone())) - + (op0_limb_15_col53.clone() * op1_limb_20_col87.clone())) - + (op0_limb_16_col54.clone() * op1_limb_19_col86.clone())) - + (op0_limb_17_col55.clone() * op1_limb_18_col85.clone())) - + (op0_limb_18_col56.clone() * op1_limb_17_col84.clone())) - + (op0_limb_19_col57.clone() * op1_limb_16_col83.clone())) - + (op0_limb_20_col58.clone() * op1_limb_15_col82.clone())) - + (op0_limb_21_col59.clone() * op1_limb_14_col81.clone())) - + (op0_limb_22_col60.clone() * op1_limb_13_col80.clone())) - + (op0_limb_23_col61.clone() * op1_limb_12_col79.clone())) - + (op0_limb_24_col62.clone() * op1_limb_11_col78.clone())) - + (op0_limb_25_col63.clone() * op1_limb_10_col77.clone())) - + (op0_limb_26_col64.clone() * op1_limb_9_col76.clone())) - + (op0_limb_27_col65.clone() * op1_limb_8_col75.clone())); - let conv_tmp_31b3_50 = (((((((((((((((((((M31_0.clone() - + (op0_limb_9_col47.clone() * op1_limb_27_col94.clone())) - + (op0_limb_10_col48.clone() * op1_limb_26_col93.clone())) - + (op0_limb_11_col49.clone() * op1_limb_25_col92.clone())) - + (op0_limb_12_col50.clone() * op1_limb_24_col91.clone())) - + (op0_limb_13_col51.clone() * op1_limb_23_col90.clone())) - + (op0_limb_14_col52.clone() * op1_limb_22_col89.clone())) - + (op0_limb_15_col53.clone() * op1_limb_21_col88.clone())) - + (op0_limb_16_col54.clone() * op1_limb_20_col87.clone())) - + (op0_limb_17_col55.clone() * op1_limb_19_col86.clone())) - + (op0_limb_18_col56.clone() * op1_limb_18_col85.clone())) - + (op0_limb_19_col57.clone() * op1_limb_17_col84.clone())) - + (op0_limb_20_col58.clone() * op1_limb_16_col83.clone())) - + (op0_limb_21_col59.clone() * op1_limb_15_col82.clone())) - + (op0_limb_22_col60.clone() * op1_limb_14_col81.clone())) - + (op0_limb_23_col61.clone() * op1_limb_13_col80.clone())) - + (op0_limb_24_col62.clone() * op1_limb_12_col79.clone())) - + (op0_limb_25_col63.clone() * op1_limb_11_col78.clone())) - + (op0_limb_26_col64.clone() * op1_limb_10_col77.clone())) - + (op0_limb_27_col65.clone() * op1_limb_9_col76.clone())); - let conv_tmp_31b3_51 = ((((((((((((((((((M31_0.clone() - + (op0_limb_10_col48.clone() * op1_limb_27_col94.clone())) - + (op0_limb_11_col49.clone() * op1_limb_26_col93.clone())) - + (op0_limb_12_col50.clone() * op1_limb_25_col92.clone())) - + (op0_limb_13_col51.clone() * op1_limb_24_col91.clone())) - + (op0_limb_14_col52.clone() * op1_limb_23_col90.clone())) - + (op0_limb_15_col53.clone() * op1_limb_22_col89.clone())) - + (op0_limb_16_col54.clone() * op1_limb_21_col88.clone())) - + (op0_limb_17_col55.clone() * op1_limb_20_col87.clone())) - + (op0_limb_18_col56.clone() * op1_limb_19_col86.clone())) - + (op0_limb_19_col57.clone() * op1_limb_18_col85.clone())) - + (op0_limb_20_col58.clone() * op1_limb_17_col84.clone())) - + (op0_limb_21_col59.clone() * op1_limb_16_col83.clone())) - + (op0_limb_22_col60.clone() * op1_limb_15_col82.clone())) - + (op0_limb_23_col61.clone() * op1_limb_14_col81.clone())) - + (op0_limb_24_col62.clone() * op1_limb_13_col80.clone())) - + (op0_limb_25_col63.clone() * op1_limb_12_col79.clone())) - + (op0_limb_26_col64.clone() * op1_limb_11_col78.clone())) - + (op0_limb_27_col65.clone() * op1_limb_10_col77.clone())); - let conv_tmp_31b3_52 = (((((((((((((((((M31_0.clone() - + (op0_limb_11_col49.clone() * op1_limb_27_col94.clone())) - + (op0_limb_12_col50.clone() * op1_limb_26_col93.clone())) - + (op0_limb_13_col51.clone() * op1_limb_25_col92.clone())) - + (op0_limb_14_col52.clone() * op1_limb_24_col91.clone())) - + (op0_limb_15_col53.clone() * op1_limb_23_col90.clone())) - + (op0_limb_16_col54.clone() * op1_limb_22_col89.clone())) - + (op0_limb_17_col55.clone() * op1_limb_21_col88.clone())) - + (op0_limb_18_col56.clone() * op1_limb_20_col87.clone())) - + (op0_limb_19_col57.clone() * op1_limb_19_col86.clone())) - + (op0_limb_20_col58.clone() * op1_limb_18_col85.clone())) - + (op0_limb_21_col59.clone() * op1_limb_17_col84.clone())) - + (op0_limb_22_col60.clone() * op1_limb_16_col83.clone())) - + (op0_limb_23_col61.clone() * op1_limb_15_col82.clone())) - + (op0_limb_24_col62.clone() * op1_limb_14_col81.clone())) - + (op0_limb_25_col63.clone() * op1_limb_13_col80.clone())) - + (op0_limb_26_col64.clone() * op1_limb_12_col79.clone())) - + (op0_limb_27_col65.clone() * op1_limb_11_col78.clone())); - let conv_tmp_31b3_53 = ((((((((((((((((M31_0.clone() - + (op0_limb_12_col50.clone() * op1_limb_27_col94.clone())) - + (op0_limb_13_col51.clone() * op1_limb_26_col93.clone())) - + (op0_limb_14_col52.clone() * op1_limb_25_col92.clone())) - + (op0_limb_15_col53.clone() * op1_limb_24_col91.clone())) - + (op0_limb_16_col54.clone() * op1_limb_23_col90.clone())) - + (op0_limb_17_col55.clone() * op1_limb_22_col89.clone())) - + (op0_limb_18_col56.clone() * op1_limb_21_col88.clone())) - + (op0_limb_19_col57.clone() * op1_limb_20_col87.clone())) - + (op0_limb_20_col58.clone() * op1_limb_19_col86.clone())) - + (op0_limb_21_col59.clone() * op1_limb_18_col85.clone())) - + (op0_limb_22_col60.clone() * op1_limb_17_col84.clone())) - + (op0_limb_23_col61.clone() * op1_limb_16_col83.clone())) - + (op0_limb_24_col62.clone() * op1_limb_15_col82.clone())) - + (op0_limb_25_col63.clone() * op1_limb_14_col81.clone())) - + (op0_limb_26_col64.clone() * op1_limb_13_col80.clone())) - + (op0_limb_27_col65.clone() * op1_limb_12_col79.clone())); - let conv_tmp_31b3_54 = (((((((((((((((M31_0.clone() - + (op0_limb_13_col51.clone() * op1_limb_27_col94.clone())) - + (op0_limb_14_col52.clone() * op1_limb_26_col93.clone())) - + (op0_limb_15_col53.clone() * op1_limb_25_col92.clone())) - + (op0_limb_16_col54.clone() * op1_limb_24_col91.clone())) - + (op0_limb_17_col55.clone() * op1_limb_23_col90.clone())) - + (op0_limb_18_col56.clone() * op1_limb_22_col89.clone())) - + (op0_limb_19_col57.clone() * op1_limb_21_col88.clone())) - + (op0_limb_20_col58.clone() * op1_limb_20_col87.clone())) - + (op0_limb_21_col59.clone() * op1_limb_19_col86.clone())) - + (op0_limb_22_col60.clone() * op1_limb_18_col85.clone())) - + (op0_limb_23_col61.clone() * op1_limb_17_col84.clone())) - + (op0_limb_24_col62.clone() * op1_limb_16_col83.clone())) - + (op0_limb_25_col63.clone() * op1_limb_15_col82.clone())) - + (op0_limb_26_col64.clone() * op1_limb_14_col81.clone())) - + (op0_limb_27_col65.clone() * op1_limb_13_col80.clone())); - let conv_tmp_31b3_55 = ((((((((((((((M31_0.clone() - + (op0_limb_14_col52.clone() * op1_limb_27_col94.clone())) - + (op0_limb_15_col53.clone() * op1_limb_26_col93.clone())) - + (op0_limb_16_col54.clone() * op1_limb_25_col92.clone())) - + (op0_limb_17_col55.clone() * op1_limb_24_col91.clone())) - + (op0_limb_18_col56.clone() * op1_limb_23_col90.clone())) - + (op0_limb_19_col57.clone() * op1_limb_22_col89.clone())) - + (op0_limb_20_col58.clone() * op1_limb_21_col88.clone())) - + (op0_limb_21_col59.clone() * op1_limb_20_col87.clone())) - + (op0_limb_22_col60.clone() * op1_limb_19_col86.clone())) - + (op0_limb_23_col61.clone() * op1_limb_18_col85.clone())) - + (op0_limb_24_col62.clone() * op1_limb_17_col84.clone())) - + (op0_limb_25_col63.clone() * op1_limb_16_col83.clone())) - + (op0_limb_26_col64.clone() * op1_limb_15_col82.clone())) - + (op0_limb_27_col65.clone() * op1_limb_14_col81.clone())); - let conv_tmp_31b3_56 = (((((((((((((M31_0.clone() - + (op0_limb_15_col53.clone() * op1_limb_27_col94.clone())) - + (op0_limb_16_col54.clone() * op1_limb_26_col93.clone())) - + (op0_limb_17_col55.clone() * op1_limb_25_col92.clone())) - + (op0_limb_18_col56.clone() * op1_limb_24_col91.clone())) - + (op0_limb_19_col57.clone() * op1_limb_23_col90.clone())) - + (op0_limb_20_col58.clone() * op1_limb_22_col89.clone())) - + (op0_limb_21_col59.clone() * op1_limb_21_col88.clone())) - + (op0_limb_22_col60.clone() * op1_limb_20_col87.clone())) - + (op0_limb_23_col61.clone() * op1_limb_19_col86.clone())) - + (op0_limb_24_col62.clone() * op1_limb_18_col85.clone())) - + (op0_limb_25_col63.clone() * op1_limb_17_col84.clone())) - + (op0_limb_26_col64.clone() * op1_limb_16_col83.clone())) - + (op0_limb_27_col65.clone() * op1_limb_15_col82.clone())); - let conv_tmp_31b3_57 = ((((((((((((M31_0.clone() - + (op0_limb_16_col54.clone() * op1_limb_27_col94.clone())) - + (op0_limb_17_col55.clone() * op1_limb_26_col93.clone())) - + (op0_limb_18_col56.clone() * op1_limb_25_col92.clone())) - + (op0_limb_19_col57.clone() * op1_limb_24_col91.clone())) - + (op0_limb_20_col58.clone() * op1_limb_23_col90.clone())) - + (op0_limb_21_col59.clone() * op1_limb_22_col89.clone())) - + (op0_limb_22_col60.clone() * op1_limb_21_col88.clone())) - + (op0_limb_23_col61.clone() * op1_limb_20_col87.clone())) - + (op0_limb_24_col62.clone() * op1_limb_19_col86.clone())) - + (op0_limb_25_col63.clone() * op1_limb_18_col85.clone())) - + (op0_limb_26_col64.clone() * op1_limb_17_col84.clone())) - + (op0_limb_27_col65.clone() * op1_limb_16_col83.clone())); - let conv_tmp_31b3_58 = (((((((((((M31_0.clone() - + (op0_limb_17_col55.clone() * op1_limb_27_col94.clone())) - + (op0_limb_18_col56.clone() * op1_limb_26_col93.clone())) - + (op0_limb_19_col57.clone() * op1_limb_25_col92.clone())) - + (op0_limb_20_col58.clone() * op1_limb_24_col91.clone())) - + (op0_limb_21_col59.clone() * op1_limb_23_col90.clone())) - + (op0_limb_22_col60.clone() * op1_limb_22_col89.clone())) - + (op0_limb_23_col61.clone() * op1_limb_21_col88.clone())) - + (op0_limb_24_col62.clone() * op1_limb_20_col87.clone())) - + (op0_limb_25_col63.clone() * op1_limb_19_col86.clone())) - + (op0_limb_26_col64.clone() * op1_limb_18_col85.clone())) - + (op0_limb_27_col65.clone() * op1_limb_17_col84.clone())); - let conv_tmp_31b3_59 = ((((((((((M31_0.clone() - + (op0_limb_18_col56.clone() * op1_limb_27_col94.clone())) - + (op0_limb_19_col57.clone() * op1_limb_26_col93.clone())) - + (op0_limb_20_col58.clone() * op1_limb_25_col92.clone())) - + (op0_limb_21_col59.clone() * op1_limb_24_col91.clone())) - + (op0_limb_22_col60.clone() * op1_limb_23_col90.clone())) - + (op0_limb_23_col61.clone() * op1_limb_22_col89.clone())) - + (op0_limb_24_col62.clone() * op1_limb_21_col88.clone())) - + (op0_limb_25_col63.clone() * op1_limb_20_col87.clone())) - + (op0_limb_26_col64.clone() * op1_limb_19_col86.clone())) - + (op0_limb_27_col65.clone() * op1_limb_18_col85.clone())); - let conv_tmp_31b3_60 = (((((((((M31_0.clone() - + (op0_limb_19_col57.clone() * op1_limb_27_col94.clone())) - + (op0_limb_20_col58.clone() * op1_limb_26_col93.clone())) - + (op0_limb_21_col59.clone() * op1_limb_25_col92.clone())) - + (op0_limb_22_col60.clone() * op1_limb_24_col91.clone())) - + (op0_limb_23_col61.clone() * op1_limb_23_col90.clone())) - + (op0_limb_24_col62.clone() * op1_limb_22_col89.clone())) - + (op0_limb_25_col63.clone() * op1_limb_21_col88.clone())) - + (op0_limb_26_col64.clone() * op1_limb_20_col87.clone())) - + (op0_limb_27_col65.clone() * op1_limb_19_col86.clone())); - let conv_tmp_31b3_61 = ((((((((M31_0.clone() - + (op0_limb_20_col58.clone() * op1_limb_27_col94.clone())) - + (op0_limb_21_col59.clone() * op1_limb_26_col93.clone())) - + (op0_limb_22_col60.clone() * op1_limb_25_col92.clone())) - + (op0_limb_23_col61.clone() * op1_limb_24_col91.clone())) - + (op0_limb_24_col62.clone() * op1_limb_23_col90.clone())) - + (op0_limb_25_col63.clone() * op1_limb_22_col89.clone())) - + (op0_limb_26_col64.clone() * op1_limb_21_col88.clone())) - + (op0_limb_27_col65.clone() * op1_limb_20_col87.clone())); - let conv_tmp_31b3_62 = (((((((M31_0.clone() - + (op0_limb_21_col59.clone() * op1_limb_27_col94.clone())) - + (op0_limb_22_col60.clone() * op1_limb_26_col93.clone())) - + (op0_limb_23_col61.clone() * op1_limb_25_col92.clone())) - + (op0_limb_24_col62.clone() * op1_limb_24_col91.clone())) - + (op0_limb_25_col63.clone() * op1_limb_23_col90.clone())) - + (op0_limb_26_col64.clone() * op1_limb_22_col89.clone())) - + (op0_limb_27_col65.clone() * op1_limb_21_col88.clone())); - let conv_tmp_31b3_63 = ((((((M31_0.clone() - + (op0_limb_22_col60.clone() * op1_limb_27_col94.clone())) - + (op0_limb_23_col61.clone() * op1_limb_26_col93.clone())) - + (op0_limb_24_col62.clone() * op1_limb_25_col92.clone())) - + (op0_limb_25_col63.clone() * op1_limb_24_col91.clone())) - + (op0_limb_26_col64.clone() * op1_limb_23_col90.clone())) - + (op0_limb_27_col65.clone() * op1_limb_22_col89.clone())); - let conv_tmp_31b3_64 = (((((M31_0.clone() - + (op0_limb_23_col61.clone() * op1_limb_27_col94.clone())) - + (op0_limb_24_col62.clone() * op1_limb_26_col93.clone())) - + (op0_limb_25_col63.clone() * op1_limb_25_col92.clone())) - + (op0_limb_26_col64.clone() * op1_limb_24_col91.clone())) - + (op0_limb_27_col65.clone() * op1_limb_23_col90.clone())); - let conv_tmp_31b3_65 = ((((M31_0.clone() - + (op0_limb_24_col62.clone() * op1_limb_27_col94.clone())) - + (op0_limb_25_col63.clone() * op1_limb_26_col93.clone())) - + (op0_limb_26_col64.clone() * op1_limb_25_col92.clone())) - + (op0_limb_27_col65.clone() * op1_limb_24_col91.clone())); - let conv_tmp_31b3_66 = (((M31_0.clone() - + (op0_limb_25_col63.clone() * op1_limb_27_col94.clone())) - + (op0_limb_26_col64.clone() * op1_limb_26_col93.clone())) - + (op0_limb_27_col65.clone() * op1_limb_25_col92.clone())); - let conv_tmp_31b3_67 = ((M31_0.clone() - + (op0_limb_26_col64.clone() * op1_limb_27_col94.clone())) - + (op0_limb_27_col65.clone() * op1_limb_26_col93.clone())); - let conv_tmp_31b3_68 = - (M31_0.clone() + (op0_limb_27_col65.clone() * op1_limb_27_col94.clone())); - let conv_mod_tmp_31b3_69 = (((M31_0.clone() - + (M31_32.clone() * conv_tmp_31b3_14.clone())) - - (M31_4.clone() * conv_tmp_31b3_35.clone())) - + (M31_8.clone() * conv_tmp_31b3_63.clone())); - let conv_mod_tmp_31b3_70 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_31b3_14.clone())) - + (M31_32.clone() * conv_tmp_31b3_15.clone())) - - (M31_4.clone() * conv_tmp_31b3_36.clone())) - + (M31_8.clone() * conv_tmp_31b3_64.clone())); - let conv_mod_tmp_31b3_71 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_31b3_15.clone())) - + (M31_32.clone() * conv_tmp_31b3_16.clone())) - - (M31_4.clone() * conv_tmp_31b3_37.clone())) - + (M31_8.clone() * conv_tmp_31b3_65.clone())); - let conv_mod_tmp_31b3_72 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_31b3_16.clone())) - + (M31_32.clone() * conv_tmp_31b3_17.clone())) - - (M31_4.clone() * conv_tmp_31b3_38.clone())) - + (M31_8.clone() * conv_tmp_31b3_66.clone())); - let conv_mod_tmp_31b3_73 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_31b3_17.clone())) - + (M31_32.clone() * conv_tmp_31b3_18.clone())) - - (M31_4.clone() * conv_tmp_31b3_39.clone())) - + (M31_8.clone() * conv_tmp_31b3_67.clone())); - let conv_mod_tmp_31b3_74 = ((((M31_0.clone() - + (M31_1.clone() * conv_tmp_31b3_18.clone())) - + (M31_32.clone() * conv_tmp_31b3_19.clone())) - - (M31_4.clone() * conv_tmp_31b3_40.clone())) - + (M31_8.clone() * conv_tmp_31b3_68.clone())); - let conv_mod_tmp_31b3_75 = (((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_19.clone())) - + (M31_32.clone() * conv_tmp_31b3_20.clone())) - - (M31_4.clone() * conv_tmp_31b3_41.clone())); - let conv_mod_tmp_31b3_76 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_14.clone())) - + (M31_1.clone() * conv_tmp_31b3_20.clone())) - + (M31_32.clone() * conv_tmp_31b3_21.clone())) - - (M31_4.clone() * conv_tmp_31b3_42.clone())); - let conv_mod_tmp_31b3_77 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_15.clone())) - + (M31_1.clone() * conv_tmp_31b3_21.clone())) - + (M31_32.clone() * conv_tmp_31b3_22.clone())) - - (M31_4.clone() * conv_tmp_31b3_43.clone())); - let conv_mod_tmp_31b3_78 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_16.clone())) - + (M31_1.clone() * conv_tmp_31b3_22.clone())) - + (M31_32.clone() * conv_tmp_31b3_23.clone())) - - (M31_4.clone() * conv_tmp_31b3_44.clone())); - let conv_mod_tmp_31b3_79 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_17.clone())) - + (M31_1.clone() * conv_tmp_31b3_23.clone())) - + (M31_32.clone() * conv_tmp_31b3_24.clone())) - - (M31_4.clone() * conv_tmp_31b3_45.clone())); - let conv_mod_tmp_31b3_80 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_18.clone())) - + (M31_1.clone() * conv_tmp_31b3_24.clone())) - + (M31_32.clone() * conv_tmp_31b3_25.clone())) - - (M31_4.clone() * conv_tmp_31b3_46.clone())); - let conv_mod_tmp_31b3_81 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_19.clone())) - + (M31_1.clone() * conv_tmp_31b3_25.clone())) - + (M31_32.clone() * conv_tmp_31b3_26.clone())) - - (M31_4.clone() * conv_tmp_31b3_47.clone())); - let conv_mod_tmp_31b3_82 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_20.clone())) - + (M31_1.clone() * conv_tmp_31b3_26.clone())) - + (M31_32.clone() * conv_tmp_31b3_27.clone())) - - (M31_4.clone() * conv_tmp_31b3_48.clone())); - let conv_mod_tmp_31b3_83 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_21.clone())) - + (M31_1.clone() * conv_tmp_31b3_27.clone())) - + (M31_32.clone() * conv_tmp_31b3_28.clone())) - - (M31_4.clone() * conv_tmp_31b3_49.clone())); - let conv_mod_tmp_31b3_84 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_22.clone())) - + (M31_1.clone() * conv_tmp_31b3_28.clone())) - + (M31_32.clone() * conv_tmp_31b3_29.clone())) - - (M31_4.clone() * conv_tmp_31b3_50.clone())); - let conv_mod_tmp_31b3_85 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_23.clone())) - + (M31_1.clone() * conv_tmp_31b3_29.clone())) - + (M31_32.clone() * conv_tmp_31b3_30.clone())) - - (M31_4.clone() * conv_tmp_31b3_51.clone())); - let conv_mod_tmp_31b3_86 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_24.clone())) - + (M31_1.clone() * conv_tmp_31b3_30.clone())) - + (M31_32.clone() * conv_tmp_31b3_31.clone())) - - (M31_4.clone() * conv_tmp_31b3_52.clone())); - let conv_mod_tmp_31b3_87 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_25.clone())) - + (M31_1.clone() * conv_tmp_31b3_31.clone())) - + (M31_32.clone() * conv_tmp_31b3_32.clone())) - - (M31_4.clone() * conv_tmp_31b3_53.clone())); - let conv_mod_tmp_31b3_88 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_26.clone())) - + (M31_1.clone() * conv_tmp_31b3_32.clone())) - + (M31_32.clone() * conv_tmp_31b3_33.clone())) - - (M31_4.clone() * conv_tmp_31b3_54.clone())); - let conv_mod_tmp_31b3_89 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_27.clone())) - + (M31_1.clone() * conv_tmp_31b3_33.clone())) - + (M31_32.clone() * conv_tmp_31b3_34.clone())) - - (M31_4.clone() * conv_tmp_31b3_55.clone())); - let conv_mod_tmp_31b3_90 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_28.clone())) - + (M31_1.clone() * conv_tmp_31b3_34.clone())) - - (M31_4.clone() * conv_tmp_31b3_56.clone())) - + (M31_64.clone() * conv_tmp_31b3_63.clone())); - let conv_mod_tmp_31b3_91 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_29.clone())) - - (M31_4.clone() * conv_tmp_31b3_57.clone())) - + (M31_2.clone() * conv_tmp_31b3_63.clone())) - + (M31_64.clone() * conv_tmp_31b3_64.clone())); - let conv_mod_tmp_31b3_92 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_30.clone())) - - (M31_4.clone() * conv_tmp_31b3_58.clone())) - + (M31_2.clone() * conv_tmp_31b3_64.clone())) - + (M31_64.clone() * conv_tmp_31b3_65.clone())); - let conv_mod_tmp_31b3_93 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_31.clone())) - - (M31_4.clone() * conv_tmp_31b3_59.clone())) - + (M31_2.clone() * conv_tmp_31b3_65.clone())) - + (M31_64.clone() * conv_tmp_31b3_66.clone())); - let conv_mod_tmp_31b3_94 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_32.clone())) - - (M31_4.clone() * conv_tmp_31b3_60.clone())) - + (M31_2.clone() * conv_tmp_31b3_66.clone())) - + (M31_64.clone() * conv_tmp_31b3_67.clone())); - let conv_mod_tmp_31b3_95 = ((((M31_0.clone() - + (M31_2.clone() * conv_tmp_31b3_33.clone())) - - (M31_4.clone() * conv_tmp_31b3_61.clone())) - + (M31_2.clone() * conv_tmp_31b3_67.clone())) - + (M31_64.clone() * conv_tmp_31b3_68.clone())); - let conv_mod_tmp_31b3_96 = (((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_34.clone())) - - (M31_4.clone() * conv_tmp_31b3_62.clone())) - + (M31_2.clone() * conv_tmp_31b3_68.clone())); + let conv_tmp_31b3_14 = eval.add_intermediate( + ((M31_0.clone() - dst_limb_0_col9.clone()) + + (op0_limb_0_col38.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_15 = eval.add_intermediate( + (((M31_0.clone() - dst_limb_1_col10.clone()) + + (op0_limb_0_col38.clone() * op1_limb_1_col68.clone())) + + (op0_limb_1_col39.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_16 = eval.add_intermediate( + ((((M31_0.clone() - dst_limb_2_col11.clone()) + + (op0_limb_0_col38.clone() * op1_limb_2_col69.clone())) + + (op0_limb_1_col39.clone() * op1_limb_1_col68.clone())) + + (op0_limb_2_col40.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_17 = eval.add_intermediate( + (((((M31_0.clone() - dst_limb_3_col12.clone()) + + (op0_limb_0_col38.clone() * op1_limb_3_col70.clone())) + + (op0_limb_1_col39.clone() * op1_limb_2_col69.clone())) + + (op0_limb_2_col40.clone() * op1_limb_1_col68.clone())) + + (op0_limb_3_col41.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_18 = eval.add_intermediate( + ((((((M31_0.clone() - dst_limb_4_col13.clone()) + + (op0_limb_0_col38.clone() * op1_limb_4_col71.clone())) + + (op0_limb_1_col39.clone() * op1_limb_3_col70.clone())) + + (op0_limb_2_col40.clone() * op1_limb_2_col69.clone())) + + (op0_limb_3_col41.clone() * op1_limb_1_col68.clone())) + + (op0_limb_4_col42.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_19 = eval.add_intermediate( + (((((((M31_0.clone() - dst_limb_5_col14.clone()) + + (op0_limb_0_col38.clone() * op1_limb_5_col72.clone())) + + (op0_limb_1_col39.clone() * op1_limb_4_col71.clone())) + + (op0_limb_2_col40.clone() * op1_limb_3_col70.clone())) + + (op0_limb_3_col41.clone() * op1_limb_2_col69.clone())) + + (op0_limb_4_col42.clone() * op1_limb_1_col68.clone())) + + (op0_limb_5_col43.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_20 = eval.add_intermediate( + ((((((((M31_0.clone() - dst_limb_6_col15.clone()) + + (op0_limb_0_col38.clone() * op1_limb_6_col73.clone())) + + (op0_limb_1_col39.clone() * op1_limb_5_col72.clone())) + + (op0_limb_2_col40.clone() * op1_limb_4_col71.clone())) + + (op0_limb_3_col41.clone() * op1_limb_3_col70.clone())) + + (op0_limb_4_col42.clone() * op1_limb_2_col69.clone())) + + (op0_limb_5_col43.clone() * op1_limb_1_col68.clone())) + + (op0_limb_6_col44.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_21 = eval.add_intermediate( + (((((((((M31_0.clone() - dst_limb_7_col16.clone()) + + (op0_limb_0_col38.clone() * op1_limb_7_col74.clone())) + + (op0_limb_1_col39.clone() * op1_limb_6_col73.clone())) + + (op0_limb_2_col40.clone() * op1_limb_5_col72.clone())) + + (op0_limb_3_col41.clone() * op1_limb_4_col71.clone())) + + (op0_limb_4_col42.clone() * op1_limb_3_col70.clone())) + + (op0_limb_5_col43.clone() * op1_limb_2_col69.clone())) + + (op0_limb_6_col44.clone() * op1_limb_1_col68.clone())) + + (op0_limb_7_col45.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_22 = eval.add_intermediate( + ((((((((((M31_0.clone() - dst_limb_8_col17.clone()) + + (op0_limb_0_col38.clone() * op1_limb_8_col75.clone())) + + (op0_limb_1_col39.clone() * op1_limb_7_col74.clone())) + + (op0_limb_2_col40.clone() * op1_limb_6_col73.clone())) + + (op0_limb_3_col41.clone() * op1_limb_5_col72.clone())) + + (op0_limb_4_col42.clone() * op1_limb_4_col71.clone())) + + (op0_limb_5_col43.clone() * op1_limb_3_col70.clone())) + + (op0_limb_6_col44.clone() * op1_limb_2_col69.clone())) + + (op0_limb_7_col45.clone() * op1_limb_1_col68.clone())) + + (op0_limb_8_col46.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_23 = eval.add_intermediate( + (((((((((((M31_0.clone() - dst_limb_9_col18.clone()) + + (op0_limb_0_col38.clone() * op1_limb_9_col76.clone())) + + (op0_limb_1_col39.clone() * op1_limb_8_col75.clone())) + + (op0_limb_2_col40.clone() * op1_limb_7_col74.clone())) + + (op0_limb_3_col41.clone() * op1_limb_6_col73.clone())) + + (op0_limb_4_col42.clone() * op1_limb_5_col72.clone())) + + (op0_limb_5_col43.clone() * op1_limb_4_col71.clone())) + + (op0_limb_6_col44.clone() * op1_limb_3_col70.clone())) + + (op0_limb_7_col45.clone() * op1_limb_2_col69.clone())) + + (op0_limb_8_col46.clone() * op1_limb_1_col68.clone())) + + (op0_limb_9_col47.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_24 = eval.add_intermediate( + ((((((((((((M31_0.clone() - dst_limb_10_col19.clone()) + + (op0_limb_0_col38.clone() * op1_limb_10_col77.clone())) + + (op0_limb_1_col39.clone() * op1_limb_9_col76.clone())) + + (op0_limb_2_col40.clone() * op1_limb_8_col75.clone())) + + (op0_limb_3_col41.clone() * op1_limb_7_col74.clone())) + + (op0_limb_4_col42.clone() * op1_limb_6_col73.clone())) + + (op0_limb_5_col43.clone() * op1_limb_5_col72.clone())) + + (op0_limb_6_col44.clone() * op1_limb_4_col71.clone())) + + (op0_limb_7_col45.clone() * op1_limb_3_col70.clone())) + + (op0_limb_8_col46.clone() * op1_limb_2_col69.clone())) + + (op0_limb_9_col47.clone() * op1_limb_1_col68.clone())) + + (op0_limb_10_col48.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_25 = eval.add_intermediate( + (((((((((((((M31_0.clone() - dst_limb_11_col20.clone()) + + (op0_limb_0_col38.clone() * op1_limb_11_col78.clone())) + + (op0_limb_1_col39.clone() * op1_limb_10_col77.clone())) + + (op0_limb_2_col40.clone() * op1_limb_9_col76.clone())) + + (op0_limb_3_col41.clone() * op1_limb_8_col75.clone())) + + (op0_limb_4_col42.clone() * op1_limb_7_col74.clone())) + + (op0_limb_5_col43.clone() * op1_limb_6_col73.clone())) + + (op0_limb_6_col44.clone() * op1_limb_5_col72.clone())) + + (op0_limb_7_col45.clone() * op1_limb_4_col71.clone())) + + (op0_limb_8_col46.clone() * op1_limb_3_col70.clone())) + + (op0_limb_9_col47.clone() * op1_limb_2_col69.clone())) + + (op0_limb_10_col48.clone() * op1_limb_1_col68.clone())) + + (op0_limb_11_col49.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_26 = eval.add_intermediate( + ((((((((((((((M31_0.clone() - dst_limb_12_col21.clone()) + + (op0_limb_0_col38.clone() * op1_limb_12_col79.clone())) + + (op0_limb_1_col39.clone() * op1_limb_11_col78.clone())) + + (op0_limb_2_col40.clone() * op1_limb_10_col77.clone())) + + (op0_limb_3_col41.clone() * op1_limb_9_col76.clone())) + + (op0_limb_4_col42.clone() * op1_limb_8_col75.clone())) + + (op0_limb_5_col43.clone() * op1_limb_7_col74.clone())) + + (op0_limb_6_col44.clone() * op1_limb_6_col73.clone())) + + (op0_limb_7_col45.clone() * op1_limb_5_col72.clone())) + + (op0_limb_8_col46.clone() * op1_limb_4_col71.clone())) + + (op0_limb_9_col47.clone() * op1_limb_3_col70.clone())) + + (op0_limb_10_col48.clone() * op1_limb_2_col69.clone())) + + (op0_limb_11_col49.clone() * op1_limb_1_col68.clone())) + + (op0_limb_12_col50.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_27 = eval.add_intermediate( + (((((((((((((((M31_0.clone() - dst_limb_13_col22.clone()) + + (op0_limb_0_col38.clone() * op1_limb_13_col80.clone())) + + (op0_limb_1_col39.clone() * op1_limb_12_col79.clone())) + + (op0_limb_2_col40.clone() * op1_limb_11_col78.clone())) + + (op0_limb_3_col41.clone() * op1_limb_10_col77.clone())) + + (op0_limb_4_col42.clone() * op1_limb_9_col76.clone())) + + (op0_limb_5_col43.clone() * op1_limb_8_col75.clone())) + + (op0_limb_6_col44.clone() * op1_limb_7_col74.clone())) + + (op0_limb_7_col45.clone() * op1_limb_6_col73.clone())) + + (op0_limb_8_col46.clone() * op1_limb_5_col72.clone())) + + (op0_limb_9_col47.clone() * op1_limb_4_col71.clone())) + + (op0_limb_10_col48.clone() * op1_limb_3_col70.clone())) + + (op0_limb_11_col49.clone() * op1_limb_2_col69.clone())) + + (op0_limb_12_col50.clone() * op1_limb_1_col68.clone())) + + (op0_limb_13_col51.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_28 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() - dst_limb_14_col23.clone()) + + (op0_limb_0_col38.clone() * op1_limb_14_col81.clone())) + + (op0_limb_1_col39.clone() * op1_limb_13_col80.clone())) + + (op0_limb_2_col40.clone() * op1_limb_12_col79.clone())) + + (op0_limb_3_col41.clone() * op1_limb_11_col78.clone())) + + (op0_limb_4_col42.clone() * op1_limb_10_col77.clone())) + + (op0_limb_5_col43.clone() * op1_limb_9_col76.clone())) + + (op0_limb_6_col44.clone() * op1_limb_8_col75.clone())) + + (op0_limb_7_col45.clone() * op1_limb_7_col74.clone())) + + (op0_limb_8_col46.clone() * op1_limb_6_col73.clone())) + + (op0_limb_9_col47.clone() * op1_limb_5_col72.clone())) + + (op0_limb_10_col48.clone() * op1_limb_4_col71.clone())) + + (op0_limb_11_col49.clone() * op1_limb_3_col70.clone())) + + (op0_limb_12_col50.clone() * op1_limb_2_col69.clone())) + + (op0_limb_13_col51.clone() * op1_limb_1_col68.clone())) + + (op0_limb_14_col52.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_29 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() - dst_limb_15_col24.clone()) + + (op0_limb_0_col38.clone() * op1_limb_15_col82.clone())) + + (op0_limb_1_col39.clone() * op1_limb_14_col81.clone())) + + (op0_limb_2_col40.clone() * op1_limb_13_col80.clone())) + + (op0_limb_3_col41.clone() * op1_limb_12_col79.clone())) + + (op0_limb_4_col42.clone() * op1_limb_11_col78.clone())) + + (op0_limb_5_col43.clone() * op1_limb_10_col77.clone())) + + (op0_limb_6_col44.clone() * op1_limb_9_col76.clone())) + + (op0_limb_7_col45.clone() * op1_limb_8_col75.clone())) + + (op0_limb_8_col46.clone() * op1_limb_7_col74.clone())) + + (op0_limb_9_col47.clone() * op1_limb_6_col73.clone())) + + (op0_limb_10_col48.clone() * op1_limb_5_col72.clone())) + + (op0_limb_11_col49.clone() * op1_limb_4_col71.clone())) + + (op0_limb_12_col50.clone() * op1_limb_3_col70.clone())) + + (op0_limb_13_col51.clone() * op1_limb_2_col69.clone())) + + (op0_limb_14_col52.clone() * op1_limb_1_col68.clone())) + + (op0_limb_15_col53.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_30 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() - dst_limb_16_col25.clone()) + + (op0_limb_0_col38.clone() * op1_limb_16_col83.clone())) + + (op0_limb_1_col39.clone() * op1_limb_15_col82.clone())) + + (op0_limb_2_col40.clone() * op1_limb_14_col81.clone())) + + (op0_limb_3_col41.clone() * op1_limb_13_col80.clone())) + + (op0_limb_4_col42.clone() * op1_limb_12_col79.clone())) + + (op0_limb_5_col43.clone() * op1_limb_11_col78.clone())) + + (op0_limb_6_col44.clone() * op1_limb_10_col77.clone())) + + (op0_limb_7_col45.clone() * op1_limb_9_col76.clone())) + + (op0_limb_8_col46.clone() * op1_limb_8_col75.clone())) + + (op0_limb_9_col47.clone() * op1_limb_7_col74.clone())) + + (op0_limb_10_col48.clone() * op1_limb_6_col73.clone())) + + (op0_limb_11_col49.clone() * op1_limb_5_col72.clone())) + + (op0_limb_12_col50.clone() * op1_limb_4_col71.clone())) + + (op0_limb_13_col51.clone() * op1_limb_3_col70.clone())) + + (op0_limb_14_col52.clone() * op1_limb_2_col69.clone())) + + (op0_limb_15_col53.clone() * op1_limb_1_col68.clone())) + + (op0_limb_16_col54.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_31 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() - dst_limb_17_col26.clone()) + + (op0_limb_0_col38.clone() * op1_limb_17_col84.clone())) + + (op0_limb_1_col39.clone() * op1_limb_16_col83.clone())) + + (op0_limb_2_col40.clone() * op1_limb_15_col82.clone())) + + (op0_limb_3_col41.clone() * op1_limb_14_col81.clone())) + + (op0_limb_4_col42.clone() * op1_limb_13_col80.clone())) + + (op0_limb_5_col43.clone() * op1_limb_12_col79.clone())) + + (op0_limb_6_col44.clone() * op1_limb_11_col78.clone())) + + (op0_limb_7_col45.clone() * op1_limb_10_col77.clone())) + + (op0_limb_8_col46.clone() * op1_limb_9_col76.clone())) + + (op0_limb_9_col47.clone() * op1_limb_8_col75.clone())) + + (op0_limb_10_col48.clone() * op1_limb_7_col74.clone())) + + (op0_limb_11_col49.clone() * op1_limb_6_col73.clone())) + + (op0_limb_12_col50.clone() * op1_limb_5_col72.clone())) + + (op0_limb_13_col51.clone() * op1_limb_4_col71.clone())) + + (op0_limb_14_col52.clone() * op1_limb_3_col70.clone())) + + (op0_limb_15_col53.clone() * op1_limb_2_col69.clone())) + + (op0_limb_16_col54.clone() * op1_limb_1_col68.clone())) + + (op0_limb_17_col55.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_32 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() - dst_limb_18_col27.clone()) + + (op0_limb_0_col38.clone() * op1_limb_18_col85.clone())) + + (op0_limb_1_col39.clone() * op1_limb_17_col84.clone())) + + (op0_limb_2_col40.clone() * op1_limb_16_col83.clone())) + + (op0_limb_3_col41.clone() * op1_limb_15_col82.clone())) + + (op0_limb_4_col42.clone() * op1_limb_14_col81.clone())) + + (op0_limb_5_col43.clone() * op1_limb_13_col80.clone())) + + (op0_limb_6_col44.clone() * op1_limb_12_col79.clone())) + + (op0_limb_7_col45.clone() * op1_limb_11_col78.clone())) + + (op0_limb_8_col46.clone() * op1_limb_10_col77.clone())) + + (op0_limb_9_col47.clone() * op1_limb_9_col76.clone())) + + (op0_limb_10_col48.clone() * op1_limb_8_col75.clone())) + + (op0_limb_11_col49.clone() * op1_limb_7_col74.clone())) + + (op0_limb_12_col50.clone() * op1_limb_6_col73.clone())) + + (op0_limb_13_col51.clone() * op1_limb_5_col72.clone())) + + (op0_limb_14_col52.clone() * op1_limb_4_col71.clone())) + + (op0_limb_15_col53.clone() * op1_limb_3_col70.clone())) + + (op0_limb_16_col54.clone() * op1_limb_2_col69.clone())) + + (op0_limb_17_col55.clone() * op1_limb_1_col68.clone())) + + (op0_limb_18_col56.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_33 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() - dst_limb_19_col28.clone()) + + (op0_limb_0_col38.clone() * op1_limb_19_col86.clone())) + + (op0_limb_1_col39.clone() * op1_limb_18_col85.clone())) + + (op0_limb_2_col40.clone() * op1_limb_17_col84.clone())) + + (op0_limb_3_col41.clone() * op1_limb_16_col83.clone())) + + (op0_limb_4_col42.clone() * op1_limb_15_col82.clone())) + + (op0_limb_5_col43.clone() * op1_limb_14_col81.clone())) + + (op0_limb_6_col44.clone() * op1_limb_13_col80.clone())) + + (op0_limb_7_col45.clone() * op1_limb_12_col79.clone())) + + (op0_limb_8_col46.clone() * op1_limb_11_col78.clone())) + + (op0_limb_9_col47.clone() * op1_limb_10_col77.clone())) + + (op0_limb_10_col48.clone() * op1_limb_9_col76.clone())) + + (op0_limb_11_col49.clone() * op1_limb_8_col75.clone())) + + (op0_limb_12_col50.clone() * op1_limb_7_col74.clone())) + + (op0_limb_13_col51.clone() * op1_limb_6_col73.clone())) + + (op0_limb_14_col52.clone() * op1_limb_5_col72.clone())) + + (op0_limb_15_col53.clone() * op1_limb_4_col71.clone())) + + (op0_limb_16_col54.clone() * op1_limb_3_col70.clone())) + + (op0_limb_17_col55.clone() * op1_limb_2_col69.clone())) + + (op0_limb_18_col56.clone() * op1_limb_1_col68.clone())) + + (op0_limb_19_col57.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_34 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() - dst_limb_20_col29.clone()) + + (op0_limb_0_col38.clone() * op1_limb_20_col87.clone())) + + (op0_limb_1_col39.clone() * op1_limb_19_col86.clone())) + + (op0_limb_2_col40.clone() * op1_limb_18_col85.clone())) + + (op0_limb_3_col41.clone() * op1_limb_17_col84.clone())) + + (op0_limb_4_col42.clone() * op1_limb_16_col83.clone())) + + (op0_limb_5_col43.clone() * op1_limb_15_col82.clone())) + + (op0_limb_6_col44.clone() * op1_limb_14_col81.clone())) + + (op0_limb_7_col45.clone() * op1_limb_13_col80.clone())) + + (op0_limb_8_col46.clone() * op1_limb_12_col79.clone())) + + (op0_limb_9_col47.clone() * op1_limb_11_col78.clone())) + + (op0_limb_10_col48.clone() * op1_limb_10_col77.clone())) + + (op0_limb_11_col49.clone() * op1_limb_9_col76.clone())) + + (op0_limb_12_col50.clone() * op1_limb_8_col75.clone())) + + (op0_limb_13_col51.clone() * op1_limb_7_col74.clone())) + + (op0_limb_14_col52.clone() * op1_limb_6_col73.clone())) + + (op0_limb_15_col53.clone() * op1_limb_5_col72.clone())) + + (op0_limb_16_col54.clone() * op1_limb_4_col71.clone())) + + (op0_limb_17_col55.clone() * op1_limb_3_col70.clone())) + + (op0_limb_18_col56.clone() * op1_limb_2_col69.clone())) + + (op0_limb_19_col57.clone() * op1_limb_1_col68.clone())) + + (op0_limb_20_col58.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_35 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() - dst_limb_21_col30.clone()) + + (op0_limb_0_col38.clone() * op1_limb_21_col88.clone())) + + (op0_limb_1_col39.clone() * op1_limb_20_col87.clone())) + + (op0_limb_2_col40.clone() * op1_limb_19_col86.clone())) + + (op0_limb_3_col41.clone() * op1_limb_18_col85.clone())) + + (op0_limb_4_col42.clone() * op1_limb_17_col84.clone())) + + (op0_limb_5_col43.clone() * op1_limb_16_col83.clone())) + + (op0_limb_6_col44.clone() * op1_limb_15_col82.clone())) + + (op0_limb_7_col45.clone() * op1_limb_14_col81.clone())) + + (op0_limb_8_col46.clone() * op1_limb_13_col80.clone())) + + (op0_limb_9_col47.clone() * op1_limb_12_col79.clone())) + + (op0_limb_10_col48.clone() * op1_limb_11_col78.clone())) + + (op0_limb_11_col49.clone() * op1_limb_10_col77.clone())) + + (op0_limb_12_col50.clone() * op1_limb_9_col76.clone())) + + (op0_limb_13_col51.clone() * op1_limb_8_col75.clone())) + + (op0_limb_14_col52.clone() * op1_limb_7_col74.clone())) + + (op0_limb_15_col53.clone() * op1_limb_6_col73.clone())) + + (op0_limb_16_col54.clone() * op1_limb_5_col72.clone())) + + (op0_limb_17_col55.clone() * op1_limb_4_col71.clone())) + + (op0_limb_18_col56.clone() * op1_limb_3_col70.clone())) + + (op0_limb_19_col57.clone() * op1_limb_2_col69.clone())) + + (op0_limb_20_col58.clone() * op1_limb_1_col68.clone())) + + (op0_limb_21_col59.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_36 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + - dst_limb_22_col31.clone()) + + (op0_limb_0_col38.clone() * op1_limb_22_col89.clone())) + + (op0_limb_1_col39.clone() * op1_limb_21_col88.clone())) + + (op0_limb_2_col40.clone() * op1_limb_20_col87.clone())) + + (op0_limb_3_col41.clone() * op1_limb_19_col86.clone())) + + (op0_limb_4_col42.clone() * op1_limb_18_col85.clone())) + + (op0_limb_5_col43.clone() * op1_limb_17_col84.clone())) + + (op0_limb_6_col44.clone() * op1_limb_16_col83.clone())) + + (op0_limb_7_col45.clone() * op1_limb_15_col82.clone())) + + (op0_limb_8_col46.clone() * op1_limb_14_col81.clone())) + + (op0_limb_9_col47.clone() * op1_limb_13_col80.clone())) + + (op0_limb_10_col48.clone() * op1_limb_12_col79.clone())) + + (op0_limb_11_col49.clone() * op1_limb_11_col78.clone())) + + (op0_limb_12_col50.clone() * op1_limb_10_col77.clone())) + + (op0_limb_13_col51.clone() * op1_limb_9_col76.clone())) + + (op0_limb_14_col52.clone() * op1_limb_8_col75.clone())) + + (op0_limb_15_col53.clone() * op1_limb_7_col74.clone())) + + (op0_limb_16_col54.clone() * op1_limb_6_col73.clone())) + + (op0_limb_17_col55.clone() * op1_limb_5_col72.clone())) + + (op0_limb_18_col56.clone() * op1_limb_4_col71.clone())) + + (op0_limb_19_col57.clone() * op1_limb_3_col70.clone())) + + (op0_limb_20_col58.clone() * op1_limb_2_col69.clone())) + + (op0_limb_21_col59.clone() * op1_limb_1_col68.clone())) + + (op0_limb_22_col60.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_37 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + - dst_limb_23_col32.clone()) + + (op0_limb_0_col38.clone() * op1_limb_23_col90.clone())) + + (op0_limb_1_col39.clone() * op1_limb_22_col89.clone())) + + (op0_limb_2_col40.clone() * op1_limb_21_col88.clone())) + + (op0_limb_3_col41.clone() * op1_limb_20_col87.clone())) + + (op0_limb_4_col42.clone() * op1_limb_19_col86.clone())) + + (op0_limb_5_col43.clone() * op1_limb_18_col85.clone())) + + (op0_limb_6_col44.clone() * op1_limb_17_col84.clone())) + + (op0_limb_7_col45.clone() * op1_limb_16_col83.clone())) + + (op0_limb_8_col46.clone() * op1_limb_15_col82.clone())) + + (op0_limb_9_col47.clone() * op1_limb_14_col81.clone())) + + (op0_limb_10_col48.clone() * op1_limb_13_col80.clone())) + + (op0_limb_11_col49.clone() * op1_limb_12_col79.clone())) + + (op0_limb_12_col50.clone() * op1_limb_11_col78.clone())) + + (op0_limb_13_col51.clone() * op1_limb_10_col77.clone())) + + (op0_limb_14_col52.clone() * op1_limb_9_col76.clone())) + + (op0_limb_15_col53.clone() * op1_limb_8_col75.clone())) + + (op0_limb_16_col54.clone() * op1_limb_7_col74.clone())) + + (op0_limb_17_col55.clone() * op1_limb_6_col73.clone())) + + (op0_limb_18_col56.clone() * op1_limb_5_col72.clone())) + + (op0_limb_19_col57.clone() * op1_limb_4_col71.clone())) + + (op0_limb_20_col58.clone() * op1_limb_3_col70.clone())) + + (op0_limb_21_col59.clone() * op1_limb_2_col69.clone())) + + (op0_limb_22_col60.clone() * op1_limb_1_col68.clone())) + + (op0_limb_23_col61.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_38 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + - dst_limb_24_col33.clone()) + + (op0_limb_0_col38.clone() * op1_limb_24_col91.clone())) + + (op0_limb_1_col39.clone() * op1_limb_23_col90.clone())) + + (op0_limb_2_col40.clone() * op1_limb_22_col89.clone())) + + (op0_limb_3_col41.clone() * op1_limb_21_col88.clone())) + + (op0_limb_4_col42.clone() * op1_limb_20_col87.clone())) + + (op0_limb_5_col43.clone() * op1_limb_19_col86.clone())) + + (op0_limb_6_col44.clone() * op1_limb_18_col85.clone())) + + (op0_limb_7_col45.clone() * op1_limb_17_col84.clone())) + + (op0_limb_8_col46.clone() * op1_limb_16_col83.clone())) + + (op0_limb_9_col47.clone() * op1_limb_15_col82.clone())) + + (op0_limb_10_col48.clone() * op1_limb_14_col81.clone())) + + (op0_limb_11_col49.clone() * op1_limb_13_col80.clone())) + + (op0_limb_12_col50.clone() * op1_limb_12_col79.clone())) + + (op0_limb_13_col51.clone() * op1_limb_11_col78.clone())) + + (op0_limb_14_col52.clone() * op1_limb_10_col77.clone())) + + (op0_limb_15_col53.clone() * op1_limb_9_col76.clone())) + + (op0_limb_16_col54.clone() * op1_limb_8_col75.clone())) + + (op0_limb_17_col55.clone() * op1_limb_7_col74.clone())) + + (op0_limb_18_col56.clone() * op1_limb_6_col73.clone())) + + (op0_limb_19_col57.clone() * op1_limb_5_col72.clone())) + + (op0_limb_20_col58.clone() * op1_limb_4_col71.clone())) + + (op0_limb_21_col59.clone() * op1_limb_3_col70.clone())) + + (op0_limb_22_col60.clone() * op1_limb_2_col69.clone())) + + (op0_limb_23_col61.clone() * op1_limb_1_col68.clone())) + + (op0_limb_24_col62.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_39 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + - dst_limb_25_col34.clone()) + + (op0_limb_0_col38.clone() * op1_limb_25_col92.clone())) + + (op0_limb_1_col39.clone() * op1_limb_24_col91.clone())) + + (op0_limb_2_col40.clone() * op1_limb_23_col90.clone())) + + (op0_limb_3_col41.clone() * op1_limb_22_col89.clone())) + + (op0_limb_4_col42.clone() * op1_limb_21_col88.clone())) + + (op0_limb_5_col43.clone() * op1_limb_20_col87.clone())) + + (op0_limb_6_col44.clone() * op1_limb_19_col86.clone())) + + (op0_limb_7_col45.clone() * op1_limb_18_col85.clone())) + + (op0_limb_8_col46.clone() * op1_limb_17_col84.clone())) + + (op0_limb_9_col47.clone() * op1_limb_16_col83.clone())) + + (op0_limb_10_col48.clone() * op1_limb_15_col82.clone())) + + (op0_limb_11_col49.clone() * op1_limb_14_col81.clone())) + + (op0_limb_12_col50.clone() * op1_limb_13_col80.clone())) + + (op0_limb_13_col51.clone() * op1_limb_12_col79.clone())) + + (op0_limb_14_col52.clone() * op1_limb_11_col78.clone())) + + (op0_limb_15_col53.clone() * op1_limb_10_col77.clone())) + + (op0_limb_16_col54.clone() * op1_limb_9_col76.clone())) + + (op0_limb_17_col55.clone() * op1_limb_8_col75.clone())) + + (op0_limb_18_col56.clone() * op1_limb_7_col74.clone())) + + (op0_limb_19_col57.clone() * op1_limb_6_col73.clone())) + + (op0_limb_20_col58.clone() * op1_limb_5_col72.clone())) + + (op0_limb_21_col59.clone() * op1_limb_4_col71.clone())) + + (op0_limb_22_col60.clone() * op1_limb_3_col70.clone())) + + (op0_limb_23_col61.clone() * op1_limb_2_col69.clone())) + + (op0_limb_24_col62.clone() * op1_limb_1_col68.clone())) + + (op0_limb_25_col63.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_40 = eval.add_intermediate( + ((((((((((((((((((((((((((((M31_0.clone() + - dst_limb_26_col35.clone()) + + (op0_limb_0_col38.clone() * op1_limb_26_col93.clone())) + + (op0_limb_1_col39.clone() * op1_limb_25_col92.clone())) + + (op0_limb_2_col40.clone() * op1_limb_24_col91.clone())) + + (op0_limb_3_col41.clone() * op1_limb_23_col90.clone())) + + (op0_limb_4_col42.clone() * op1_limb_22_col89.clone())) + + (op0_limb_5_col43.clone() * op1_limb_21_col88.clone())) + + (op0_limb_6_col44.clone() * op1_limb_20_col87.clone())) + + (op0_limb_7_col45.clone() * op1_limb_19_col86.clone())) + + (op0_limb_8_col46.clone() * op1_limb_18_col85.clone())) + + (op0_limb_9_col47.clone() * op1_limb_17_col84.clone())) + + (op0_limb_10_col48.clone() * op1_limb_16_col83.clone())) + + (op0_limb_11_col49.clone() * op1_limb_15_col82.clone())) + + (op0_limb_12_col50.clone() * op1_limb_14_col81.clone())) + + (op0_limb_13_col51.clone() * op1_limb_13_col80.clone())) + + (op0_limb_14_col52.clone() * op1_limb_12_col79.clone())) + + (op0_limb_15_col53.clone() * op1_limb_11_col78.clone())) + + (op0_limb_16_col54.clone() * op1_limb_10_col77.clone())) + + (op0_limb_17_col55.clone() * op1_limb_9_col76.clone())) + + (op0_limb_18_col56.clone() * op1_limb_8_col75.clone())) + + (op0_limb_19_col57.clone() * op1_limb_7_col74.clone())) + + (op0_limb_20_col58.clone() * op1_limb_6_col73.clone())) + + (op0_limb_21_col59.clone() * op1_limb_5_col72.clone())) + + (op0_limb_22_col60.clone() * op1_limb_4_col71.clone())) + + (op0_limb_23_col61.clone() * op1_limb_3_col70.clone())) + + (op0_limb_24_col62.clone() * op1_limb_2_col69.clone())) + + (op0_limb_25_col63.clone() * op1_limb_1_col68.clone())) + + (op0_limb_26_col64.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_41 = eval.add_intermediate( + (((((((((((((((((((((((((((((M31_0.clone() + - dst_limb_27_col36.clone()) + + (op0_limb_0_col38.clone() + * op1_limb_27_col94.clone())) + + (op0_limb_1_col39.clone() * op1_limb_26_col93.clone())) + + (op0_limb_2_col40.clone() * op1_limb_25_col92.clone())) + + (op0_limb_3_col41.clone() * op1_limb_24_col91.clone())) + + (op0_limb_4_col42.clone() * op1_limb_23_col90.clone())) + + (op0_limb_5_col43.clone() * op1_limb_22_col89.clone())) + + (op0_limb_6_col44.clone() * op1_limb_21_col88.clone())) + + (op0_limb_7_col45.clone() * op1_limb_20_col87.clone())) + + (op0_limb_8_col46.clone() * op1_limb_19_col86.clone())) + + (op0_limb_9_col47.clone() * op1_limb_18_col85.clone())) + + (op0_limb_10_col48.clone() * op1_limb_17_col84.clone())) + + (op0_limb_11_col49.clone() * op1_limb_16_col83.clone())) + + (op0_limb_12_col50.clone() * op1_limb_15_col82.clone())) + + (op0_limb_13_col51.clone() * op1_limb_14_col81.clone())) + + (op0_limb_14_col52.clone() * op1_limb_13_col80.clone())) + + (op0_limb_15_col53.clone() * op1_limb_12_col79.clone())) + + (op0_limb_16_col54.clone() * op1_limb_11_col78.clone())) + + (op0_limb_17_col55.clone() * op1_limb_10_col77.clone())) + + (op0_limb_18_col56.clone() * op1_limb_9_col76.clone())) + + (op0_limb_19_col57.clone() * op1_limb_8_col75.clone())) + + (op0_limb_20_col58.clone() * op1_limb_7_col74.clone())) + + (op0_limb_21_col59.clone() * op1_limb_6_col73.clone())) + + (op0_limb_22_col60.clone() * op1_limb_5_col72.clone())) + + (op0_limb_23_col61.clone() * op1_limb_4_col71.clone())) + + (op0_limb_24_col62.clone() * op1_limb_3_col70.clone())) + + (op0_limb_25_col63.clone() * op1_limb_2_col69.clone())) + + (op0_limb_26_col64.clone() * op1_limb_1_col68.clone())) + + (op0_limb_27_col65.clone() * op1_limb_0_col67.clone())), + ); + let conv_tmp_31b3_42 = eval.add_intermediate( + (((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_1_col39.clone() * op1_limb_27_col94.clone())) + + (op0_limb_2_col40.clone() * op1_limb_26_col93.clone())) + + (op0_limb_3_col41.clone() * op1_limb_25_col92.clone())) + + (op0_limb_4_col42.clone() * op1_limb_24_col91.clone())) + + (op0_limb_5_col43.clone() * op1_limb_23_col90.clone())) + + (op0_limb_6_col44.clone() * op1_limb_22_col89.clone())) + + (op0_limb_7_col45.clone() * op1_limb_21_col88.clone())) + + (op0_limb_8_col46.clone() * op1_limb_20_col87.clone())) + + (op0_limb_9_col47.clone() * op1_limb_19_col86.clone())) + + (op0_limb_10_col48.clone() * op1_limb_18_col85.clone())) + + (op0_limb_11_col49.clone() * op1_limb_17_col84.clone())) + + (op0_limb_12_col50.clone() * op1_limb_16_col83.clone())) + + (op0_limb_13_col51.clone() * op1_limb_15_col82.clone())) + + (op0_limb_14_col52.clone() * op1_limb_14_col81.clone())) + + (op0_limb_15_col53.clone() * op1_limb_13_col80.clone())) + + (op0_limb_16_col54.clone() * op1_limb_12_col79.clone())) + + (op0_limb_17_col55.clone() * op1_limb_11_col78.clone())) + + (op0_limb_18_col56.clone() * op1_limb_10_col77.clone())) + + (op0_limb_19_col57.clone() * op1_limb_9_col76.clone())) + + (op0_limb_20_col58.clone() * op1_limb_8_col75.clone())) + + (op0_limb_21_col59.clone() * op1_limb_7_col74.clone())) + + (op0_limb_22_col60.clone() * op1_limb_6_col73.clone())) + + (op0_limb_23_col61.clone() * op1_limb_5_col72.clone())) + + (op0_limb_24_col62.clone() * op1_limb_4_col71.clone())) + + (op0_limb_25_col63.clone() * op1_limb_3_col70.clone())) + + (op0_limb_26_col64.clone() * op1_limb_2_col69.clone())) + + (op0_limb_27_col65.clone() * op1_limb_1_col68.clone())), + ); + let conv_tmp_31b3_43 = eval.add_intermediate( + ((((((((((((((((((((((((((M31_0.clone() + + (op0_limb_2_col40.clone() * op1_limb_27_col94.clone())) + + (op0_limb_3_col41.clone() * op1_limb_26_col93.clone())) + + (op0_limb_4_col42.clone() * op1_limb_25_col92.clone())) + + (op0_limb_5_col43.clone() * op1_limb_24_col91.clone())) + + (op0_limb_6_col44.clone() * op1_limb_23_col90.clone())) + + (op0_limb_7_col45.clone() * op1_limb_22_col89.clone())) + + (op0_limb_8_col46.clone() * op1_limb_21_col88.clone())) + + (op0_limb_9_col47.clone() * op1_limb_20_col87.clone())) + + (op0_limb_10_col48.clone() * op1_limb_19_col86.clone())) + + (op0_limb_11_col49.clone() * op1_limb_18_col85.clone())) + + (op0_limb_12_col50.clone() * op1_limb_17_col84.clone())) + + (op0_limb_13_col51.clone() * op1_limb_16_col83.clone())) + + (op0_limb_14_col52.clone() * op1_limb_15_col82.clone())) + + (op0_limb_15_col53.clone() * op1_limb_14_col81.clone())) + + (op0_limb_16_col54.clone() * op1_limb_13_col80.clone())) + + (op0_limb_17_col55.clone() * op1_limb_12_col79.clone())) + + (op0_limb_18_col56.clone() * op1_limb_11_col78.clone())) + + (op0_limb_19_col57.clone() * op1_limb_10_col77.clone())) + + (op0_limb_20_col58.clone() * op1_limb_9_col76.clone())) + + (op0_limb_21_col59.clone() * op1_limb_8_col75.clone())) + + (op0_limb_22_col60.clone() * op1_limb_7_col74.clone())) + + (op0_limb_23_col61.clone() * op1_limb_6_col73.clone())) + + (op0_limb_24_col62.clone() * op1_limb_5_col72.clone())) + + (op0_limb_25_col63.clone() * op1_limb_4_col71.clone())) + + (op0_limb_26_col64.clone() * op1_limb_3_col70.clone())) + + (op0_limb_27_col65.clone() * op1_limb_2_col69.clone())), + ); + let conv_tmp_31b3_44 = eval.add_intermediate( + (((((((((((((((((((((((((M31_0.clone() + + (op0_limb_3_col41.clone() * op1_limb_27_col94.clone())) + + (op0_limb_4_col42.clone() * op1_limb_26_col93.clone())) + + (op0_limb_5_col43.clone() * op1_limb_25_col92.clone())) + + (op0_limb_6_col44.clone() * op1_limb_24_col91.clone())) + + (op0_limb_7_col45.clone() * op1_limb_23_col90.clone())) + + (op0_limb_8_col46.clone() * op1_limb_22_col89.clone())) + + (op0_limb_9_col47.clone() * op1_limb_21_col88.clone())) + + (op0_limb_10_col48.clone() * op1_limb_20_col87.clone())) + + (op0_limb_11_col49.clone() * op1_limb_19_col86.clone())) + + (op0_limb_12_col50.clone() * op1_limb_18_col85.clone())) + + (op0_limb_13_col51.clone() * op1_limb_17_col84.clone())) + + (op0_limb_14_col52.clone() * op1_limb_16_col83.clone())) + + (op0_limb_15_col53.clone() * op1_limb_15_col82.clone())) + + (op0_limb_16_col54.clone() * op1_limb_14_col81.clone())) + + (op0_limb_17_col55.clone() * op1_limb_13_col80.clone())) + + (op0_limb_18_col56.clone() * op1_limb_12_col79.clone())) + + (op0_limb_19_col57.clone() * op1_limb_11_col78.clone())) + + (op0_limb_20_col58.clone() * op1_limb_10_col77.clone())) + + (op0_limb_21_col59.clone() * op1_limb_9_col76.clone())) + + (op0_limb_22_col60.clone() * op1_limb_8_col75.clone())) + + (op0_limb_23_col61.clone() * op1_limb_7_col74.clone())) + + (op0_limb_24_col62.clone() * op1_limb_6_col73.clone())) + + (op0_limb_25_col63.clone() * op1_limb_5_col72.clone())) + + (op0_limb_26_col64.clone() * op1_limb_4_col71.clone())) + + (op0_limb_27_col65.clone() * op1_limb_3_col70.clone())), + ); + let conv_tmp_31b3_45 = eval.add_intermediate( + ((((((((((((((((((((((((M31_0.clone() + + (op0_limb_4_col42.clone() * op1_limb_27_col94.clone())) + + (op0_limb_5_col43.clone() * op1_limb_26_col93.clone())) + + (op0_limb_6_col44.clone() * op1_limb_25_col92.clone())) + + (op0_limb_7_col45.clone() * op1_limb_24_col91.clone())) + + (op0_limb_8_col46.clone() * op1_limb_23_col90.clone())) + + (op0_limb_9_col47.clone() * op1_limb_22_col89.clone())) + + (op0_limb_10_col48.clone() * op1_limb_21_col88.clone())) + + (op0_limb_11_col49.clone() * op1_limb_20_col87.clone())) + + (op0_limb_12_col50.clone() * op1_limb_19_col86.clone())) + + (op0_limb_13_col51.clone() * op1_limb_18_col85.clone())) + + (op0_limb_14_col52.clone() * op1_limb_17_col84.clone())) + + (op0_limb_15_col53.clone() * op1_limb_16_col83.clone())) + + (op0_limb_16_col54.clone() * op1_limb_15_col82.clone())) + + (op0_limb_17_col55.clone() * op1_limb_14_col81.clone())) + + (op0_limb_18_col56.clone() * op1_limb_13_col80.clone())) + + (op0_limb_19_col57.clone() * op1_limb_12_col79.clone())) + + (op0_limb_20_col58.clone() * op1_limb_11_col78.clone())) + + (op0_limb_21_col59.clone() * op1_limb_10_col77.clone())) + + (op0_limb_22_col60.clone() * op1_limb_9_col76.clone())) + + (op0_limb_23_col61.clone() * op1_limb_8_col75.clone())) + + (op0_limb_24_col62.clone() * op1_limb_7_col74.clone())) + + (op0_limb_25_col63.clone() * op1_limb_6_col73.clone())) + + (op0_limb_26_col64.clone() * op1_limb_5_col72.clone())) + + (op0_limb_27_col65.clone() * op1_limb_4_col71.clone())), + ); + let conv_tmp_31b3_46 = eval.add_intermediate( + (((((((((((((((((((((((M31_0.clone() + + (op0_limb_5_col43.clone() * op1_limb_27_col94.clone())) + + (op0_limb_6_col44.clone() * op1_limb_26_col93.clone())) + + (op0_limb_7_col45.clone() * op1_limb_25_col92.clone())) + + (op0_limb_8_col46.clone() * op1_limb_24_col91.clone())) + + (op0_limb_9_col47.clone() * op1_limb_23_col90.clone())) + + (op0_limb_10_col48.clone() * op1_limb_22_col89.clone())) + + (op0_limb_11_col49.clone() * op1_limb_21_col88.clone())) + + (op0_limb_12_col50.clone() * op1_limb_20_col87.clone())) + + (op0_limb_13_col51.clone() * op1_limb_19_col86.clone())) + + (op0_limb_14_col52.clone() * op1_limb_18_col85.clone())) + + (op0_limb_15_col53.clone() * op1_limb_17_col84.clone())) + + (op0_limb_16_col54.clone() * op1_limb_16_col83.clone())) + + (op0_limb_17_col55.clone() * op1_limb_15_col82.clone())) + + (op0_limb_18_col56.clone() * op1_limb_14_col81.clone())) + + (op0_limb_19_col57.clone() * op1_limb_13_col80.clone())) + + (op0_limb_20_col58.clone() * op1_limb_12_col79.clone())) + + (op0_limb_21_col59.clone() * op1_limb_11_col78.clone())) + + (op0_limb_22_col60.clone() * op1_limb_10_col77.clone())) + + (op0_limb_23_col61.clone() * op1_limb_9_col76.clone())) + + (op0_limb_24_col62.clone() * op1_limb_8_col75.clone())) + + (op0_limb_25_col63.clone() * op1_limb_7_col74.clone())) + + (op0_limb_26_col64.clone() * op1_limb_6_col73.clone())) + + (op0_limb_27_col65.clone() * op1_limb_5_col72.clone())), + ); + let conv_tmp_31b3_47 = eval.add_intermediate( + ((((((((((((((((((((((M31_0.clone() + + (op0_limb_6_col44.clone() * op1_limb_27_col94.clone())) + + (op0_limb_7_col45.clone() * op1_limb_26_col93.clone())) + + (op0_limb_8_col46.clone() * op1_limb_25_col92.clone())) + + (op0_limb_9_col47.clone() * op1_limb_24_col91.clone())) + + (op0_limb_10_col48.clone() * op1_limb_23_col90.clone())) + + (op0_limb_11_col49.clone() * op1_limb_22_col89.clone())) + + (op0_limb_12_col50.clone() * op1_limb_21_col88.clone())) + + (op0_limb_13_col51.clone() * op1_limb_20_col87.clone())) + + (op0_limb_14_col52.clone() * op1_limb_19_col86.clone())) + + (op0_limb_15_col53.clone() * op1_limb_18_col85.clone())) + + (op0_limb_16_col54.clone() * op1_limb_17_col84.clone())) + + (op0_limb_17_col55.clone() * op1_limb_16_col83.clone())) + + (op0_limb_18_col56.clone() * op1_limb_15_col82.clone())) + + (op0_limb_19_col57.clone() * op1_limb_14_col81.clone())) + + (op0_limb_20_col58.clone() * op1_limb_13_col80.clone())) + + (op0_limb_21_col59.clone() * op1_limb_12_col79.clone())) + + (op0_limb_22_col60.clone() * op1_limb_11_col78.clone())) + + (op0_limb_23_col61.clone() * op1_limb_10_col77.clone())) + + (op0_limb_24_col62.clone() * op1_limb_9_col76.clone())) + + (op0_limb_25_col63.clone() * op1_limb_8_col75.clone())) + + (op0_limb_26_col64.clone() * op1_limb_7_col74.clone())) + + (op0_limb_27_col65.clone() * op1_limb_6_col73.clone())), + ); + let conv_tmp_31b3_48 = eval.add_intermediate( + (((((((((((((((((((((M31_0.clone() + + (op0_limb_7_col45.clone() * op1_limb_27_col94.clone())) + + (op0_limb_8_col46.clone() * op1_limb_26_col93.clone())) + + (op0_limb_9_col47.clone() * op1_limb_25_col92.clone())) + + (op0_limb_10_col48.clone() * op1_limb_24_col91.clone())) + + (op0_limb_11_col49.clone() * op1_limb_23_col90.clone())) + + (op0_limb_12_col50.clone() * op1_limb_22_col89.clone())) + + (op0_limb_13_col51.clone() * op1_limb_21_col88.clone())) + + (op0_limb_14_col52.clone() * op1_limb_20_col87.clone())) + + (op0_limb_15_col53.clone() * op1_limb_19_col86.clone())) + + (op0_limb_16_col54.clone() * op1_limb_18_col85.clone())) + + (op0_limb_17_col55.clone() * op1_limb_17_col84.clone())) + + (op0_limb_18_col56.clone() * op1_limb_16_col83.clone())) + + (op0_limb_19_col57.clone() * op1_limb_15_col82.clone())) + + (op0_limb_20_col58.clone() * op1_limb_14_col81.clone())) + + (op0_limb_21_col59.clone() * op1_limb_13_col80.clone())) + + (op0_limb_22_col60.clone() * op1_limb_12_col79.clone())) + + (op0_limb_23_col61.clone() * op1_limb_11_col78.clone())) + + (op0_limb_24_col62.clone() * op1_limb_10_col77.clone())) + + (op0_limb_25_col63.clone() * op1_limb_9_col76.clone())) + + (op0_limb_26_col64.clone() * op1_limb_8_col75.clone())) + + (op0_limb_27_col65.clone() * op1_limb_7_col74.clone())), + ); + let conv_tmp_31b3_49 = eval.add_intermediate( + ((((((((((((((((((((M31_0.clone() + + (op0_limb_8_col46.clone() * op1_limb_27_col94.clone())) + + (op0_limb_9_col47.clone() * op1_limb_26_col93.clone())) + + (op0_limb_10_col48.clone() * op1_limb_25_col92.clone())) + + (op0_limb_11_col49.clone() * op1_limb_24_col91.clone())) + + (op0_limb_12_col50.clone() * op1_limb_23_col90.clone())) + + (op0_limb_13_col51.clone() * op1_limb_22_col89.clone())) + + (op0_limb_14_col52.clone() * op1_limb_21_col88.clone())) + + (op0_limb_15_col53.clone() * op1_limb_20_col87.clone())) + + (op0_limb_16_col54.clone() * op1_limb_19_col86.clone())) + + (op0_limb_17_col55.clone() * op1_limb_18_col85.clone())) + + (op0_limb_18_col56.clone() * op1_limb_17_col84.clone())) + + (op0_limb_19_col57.clone() * op1_limb_16_col83.clone())) + + (op0_limb_20_col58.clone() * op1_limb_15_col82.clone())) + + (op0_limb_21_col59.clone() * op1_limb_14_col81.clone())) + + (op0_limb_22_col60.clone() * op1_limb_13_col80.clone())) + + (op0_limb_23_col61.clone() * op1_limb_12_col79.clone())) + + (op0_limb_24_col62.clone() * op1_limb_11_col78.clone())) + + (op0_limb_25_col63.clone() * op1_limb_10_col77.clone())) + + (op0_limb_26_col64.clone() * op1_limb_9_col76.clone())) + + (op0_limb_27_col65.clone() * op1_limb_8_col75.clone())), + ); + let conv_tmp_31b3_50 = eval.add_intermediate( + (((((((((((((((((((M31_0.clone() + + (op0_limb_9_col47.clone() * op1_limb_27_col94.clone())) + + (op0_limb_10_col48.clone() * op1_limb_26_col93.clone())) + + (op0_limb_11_col49.clone() * op1_limb_25_col92.clone())) + + (op0_limb_12_col50.clone() * op1_limb_24_col91.clone())) + + (op0_limb_13_col51.clone() * op1_limb_23_col90.clone())) + + (op0_limb_14_col52.clone() * op1_limb_22_col89.clone())) + + (op0_limb_15_col53.clone() * op1_limb_21_col88.clone())) + + (op0_limb_16_col54.clone() * op1_limb_20_col87.clone())) + + (op0_limb_17_col55.clone() * op1_limb_19_col86.clone())) + + (op0_limb_18_col56.clone() * op1_limb_18_col85.clone())) + + (op0_limb_19_col57.clone() * op1_limb_17_col84.clone())) + + (op0_limb_20_col58.clone() * op1_limb_16_col83.clone())) + + (op0_limb_21_col59.clone() * op1_limb_15_col82.clone())) + + (op0_limb_22_col60.clone() * op1_limb_14_col81.clone())) + + (op0_limb_23_col61.clone() * op1_limb_13_col80.clone())) + + (op0_limb_24_col62.clone() * op1_limb_12_col79.clone())) + + (op0_limb_25_col63.clone() * op1_limb_11_col78.clone())) + + (op0_limb_26_col64.clone() * op1_limb_10_col77.clone())) + + (op0_limb_27_col65.clone() * op1_limb_9_col76.clone())), + ); + let conv_tmp_31b3_51 = eval.add_intermediate( + ((((((((((((((((((M31_0.clone() + + (op0_limb_10_col48.clone() * op1_limb_27_col94.clone())) + + (op0_limb_11_col49.clone() * op1_limb_26_col93.clone())) + + (op0_limb_12_col50.clone() * op1_limb_25_col92.clone())) + + (op0_limb_13_col51.clone() * op1_limb_24_col91.clone())) + + (op0_limb_14_col52.clone() * op1_limb_23_col90.clone())) + + (op0_limb_15_col53.clone() * op1_limb_22_col89.clone())) + + (op0_limb_16_col54.clone() * op1_limb_21_col88.clone())) + + (op0_limb_17_col55.clone() * op1_limb_20_col87.clone())) + + (op0_limb_18_col56.clone() * op1_limb_19_col86.clone())) + + (op0_limb_19_col57.clone() * op1_limb_18_col85.clone())) + + (op0_limb_20_col58.clone() * op1_limb_17_col84.clone())) + + (op0_limb_21_col59.clone() * op1_limb_16_col83.clone())) + + (op0_limb_22_col60.clone() * op1_limb_15_col82.clone())) + + (op0_limb_23_col61.clone() * op1_limb_14_col81.clone())) + + (op0_limb_24_col62.clone() * op1_limb_13_col80.clone())) + + (op0_limb_25_col63.clone() * op1_limb_12_col79.clone())) + + (op0_limb_26_col64.clone() * op1_limb_11_col78.clone())) + + (op0_limb_27_col65.clone() * op1_limb_10_col77.clone())), + ); + let conv_tmp_31b3_52 = eval.add_intermediate( + (((((((((((((((((M31_0.clone() + + (op0_limb_11_col49.clone() * op1_limb_27_col94.clone())) + + (op0_limb_12_col50.clone() * op1_limb_26_col93.clone())) + + (op0_limb_13_col51.clone() * op1_limb_25_col92.clone())) + + (op0_limb_14_col52.clone() * op1_limb_24_col91.clone())) + + (op0_limb_15_col53.clone() * op1_limb_23_col90.clone())) + + (op0_limb_16_col54.clone() * op1_limb_22_col89.clone())) + + (op0_limb_17_col55.clone() * op1_limb_21_col88.clone())) + + (op0_limb_18_col56.clone() * op1_limb_20_col87.clone())) + + (op0_limb_19_col57.clone() * op1_limb_19_col86.clone())) + + (op0_limb_20_col58.clone() * op1_limb_18_col85.clone())) + + (op0_limb_21_col59.clone() * op1_limb_17_col84.clone())) + + (op0_limb_22_col60.clone() * op1_limb_16_col83.clone())) + + (op0_limb_23_col61.clone() * op1_limb_15_col82.clone())) + + (op0_limb_24_col62.clone() * op1_limb_14_col81.clone())) + + (op0_limb_25_col63.clone() * op1_limb_13_col80.clone())) + + (op0_limb_26_col64.clone() * op1_limb_12_col79.clone())) + + (op0_limb_27_col65.clone() * op1_limb_11_col78.clone())), + ); + let conv_tmp_31b3_53 = eval.add_intermediate( + ((((((((((((((((M31_0.clone() + + (op0_limb_12_col50.clone() * op1_limb_27_col94.clone())) + + (op0_limb_13_col51.clone() * op1_limb_26_col93.clone())) + + (op0_limb_14_col52.clone() * op1_limb_25_col92.clone())) + + (op0_limb_15_col53.clone() * op1_limb_24_col91.clone())) + + (op0_limb_16_col54.clone() * op1_limb_23_col90.clone())) + + (op0_limb_17_col55.clone() * op1_limb_22_col89.clone())) + + (op0_limb_18_col56.clone() * op1_limb_21_col88.clone())) + + (op0_limb_19_col57.clone() * op1_limb_20_col87.clone())) + + (op0_limb_20_col58.clone() * op1_limb_19_col86.clone())) + + (op0_limb_21_col59.clone() * op1_limb_18_col85.clone())) + + (op0_limb_22_col60.clone() * op1_limb_17_col84.clone())) + + (op0_limb_23_col61.clone() * op1_limb_16_col83.clone())) + + (op0_limb_24_col62.clone() * op1_limb_15_col82.clone())) + + (op0_limb_25_col63.clone() * op1_limb_14_col81.clone())) + + (op0_limb_26_col64.clone() * op1_limb_13_col80.clone())) + + (op0_limb_27_col65.clone() * op1_limb_12_col79.clone())), + ); + let conv_tmp_31b3_54 = eval.add_intermediate( + (((((((((((((((M31_0.clone() + + (op0_limb_13_col51.clone() * op1_limb_27_col94.clone())) + + (op0_limb_14_col52.clone() * op1_limb_26_col93.clone())) + + (op0_limb_15_col53.clone() * op1_limb_25_col92.clone())) + + (op0_limb_16_col54.clone() * op1_limb_24_col91.clone())) + + (op0_limb_17_col55.clone() * op1_limb_23_col90.clone())) + + (op0_limb_18_col56.clone() * op1_limb_22_col89.clone())) + + (op0_limb_19_col57.clone() * op1_limb_21_col88.clone())) + + (op0_limb_20_col58.clone() * op1_limb_20_col87.clone())) + + (op0_limb_21_col59.clone() * op1_limb_19_col86.clone())) + + (op0_limb_22_col60.clone() * op1_limb_18_col85.clone())) + + (op0_limb_23_col61.clone() * op1_limb_17_col84.clone())) + + (op0_limb_24_col62.clone() * op1_limb_16_col83.clone())) + + (op0_limb_25_col63.clone() * op1_limb_15_col82.clone())) + + (op0_limb_26_col64.clone() * op1_limb_14_col81.clone())) + + (op0_limb_27_col65.clone() * op1_limb_13_col80.clone())), + ); + let conv_tmp_31b3_55 = eval.add_intermediate( + ((((((((((((((M31_0.clone() + + (op0_limb_14_col52.clone() * op1_limb_27_col94.clone())) + + (op0_limb_15_col53.clone() * op1_limb_26_col93.clone())) + + (op0_limb_16_col54.clone() * op1_limb_25_col92.clone())) + + (op0_limb_17_col55.clone() * op1_limb_24_col91.clone())) + + (op0_limb_18_col56.clone() * op1_limb_23_col90.clone())) + + (op0_limb_19_col57.clone() * op1_limb_22_col89.clone())) + + (op0_limb_20_col58.clone() * op1_limb_21_col88.clone())) + + (op0_limb_21_col59.clone() * op1_limb_20_col87.clone())) + + (op0_limb_22_col60.clone() * op1_limb_19_col86.clone())) + + (op0_limb_23_col61.clone() * op1_limb_18_col85.clone())) + + (op0_limb_24_col62.clone() * op1_limb_17_col84.clone())) + + (op0_limb_25_col63.clone() * op1_limb_16_col83.clone())) + + (op0_limb_26_col64.clone() * op1_limb_15_col82.clone())) + + (op0_limb_27_col65.clone() * op1_limb_14_col81.clone())), + ); + let conv_tmp_31b3_56 = eval.add_intermediate( + (((((((((((((M31_0.clone() + + (op0_limb_15_col53.clone() * op1_limb_27_col94.clone())) + + (op0_limb_16_col54.clone() * op1_limb_26_col93.clone())) + + (op0_limb_17_col55.clone() * op1_limb_25_col92.clone())) + + (op0_limb_18_col56.clone() * op1_limb_24_col91.clone())) + + (op0_limb_19_col57.clone() * op1_limb_23_col90.clone())) + + (op0_limb_20_col58.clone() * op1_limb_22_col89.clone())) + + (op0_limb_21_col59.clone() * op1_limb_21_col88.clone())) + + (op0_limb_22_col60.clone() * op1_limb_20_col87.clone())) + + (op0_limb_23_col61.clone() * op1_limb_19_col86.clone())) + + (op0_limb_24_col62.clone() * op1_limb_18_col85.clone())) + + (op0_limb_25_col63.clone() * op1_limb_17_col84.clone())) + + (op0_limb_26_col64.clone() * op1_limb_16_col83.clone())) + + (op0_limb_27_col65.clone() * op1_limb_15_col82.clone())), + ); + let conv_tmp_31b3_57 = eval.add_intermediate( + ((((((((((((M31_0.clone() + + (op0_limb_16_col54.clone() * op1_limb_27_col94.clone())) + + (op0_limb_17_col55.clone() * op1_limb_26_col93.clone())) + + (op0_limb_18_col56.clone() * op1_limb_25_col92.clone())) + + (op0_limb_19_col57.clone() * op1_limb_24_col91.clone())) + + (op0_limb_20_col58.clone() * op1_limb_23_col90.clone())) + + (op0_limb_21_col59.clone() * op1_limb_22_col89.clone())) + + (op0_limb_22_col60.clone() * op1_limb_21_col88.clone())) + + (op0_limb_23_col61.clone() * op1_limb_20_col87.clone())) + + (op0_limb_24_col62.clone() * op1_limb_19_col86.clone())) + + (op0_limb_25_col63.clone() * op1_limb_18_col85.clone())) + + (op0_limb_26_col64.clone() * op1_limb_17_col84.clone())) + + (op0_limb_27_col65.clone() * op1_limb_16_col83.clone())), + ); + let conv_tmp_31b3_58 = eval.add_intermediate( + (((((((((((M31_0.clone() + + (op0_limb_17_col55.clone() * op1_limb_27_col94.clone())) + + (op0_limb_18_col56.clone() * op1_limb_26_col93.clone())) + + (op0_limb_19_col57.clone() * op1_limb_25_col92.clone())) + + (op0_limb_20_col58.clone() * op1_limb_24_col91.clone())) + + (op0_limb_21_col59.clone() * op1_limb_23_col90.clone())) + + (op0_limb_22_col60.clone() * op1_limb_22_col89.clone())) + + (op0_limb_23_col61.clone() * op1_limb_21_col88.clone())) + + (op0_limb_24_col62.clone() * op1_limb_20_col87.clone())) + + (op0_limb_25_col63.clone() * op1_limb_19_col86.clone())) + + (op0_limb_26_col64.clone() * op1_limb_18_col85.clone())) + + (op0_limb_27_col65.clone() * op1_limb_17_col84.clone())), + ); + let conv_tmp_31b3_59 = eval.add_intermediate( + ((((((((((M31_0.clone() + + (op0_limb_18_col56.clone() * op1_limb_27_col94.clone())) + + (op0_limb_19_col57.clone() * op1_limb_26_col93.clone())) + + (op0_limb_20_col58.clone() * op1_limb_25_col92.clone())) + + (op0_limb_21_col59.clone() * op1_limb_24_col91.clone())) + + (op0_limb_22_col60.clone() * op1_limb_23_col90.clone())) + + (op0_limb_23_col61.clone() * op1_limb_22_col89.clone())) + + (op0_limb_24_col62.clone() * op1_limb_21_col88.clone())) + + (op0_limb_25_col63.clone() * op1_limb_20_col87.clone())) + + (op0_limb_26_col64.clone() * op1_limb_19_col86.clone())) + + (op0_limb_27_col65.clone() * op1_limb_18_col85.clone())), + ); + let conv_tmp_31b3_60 = eval.add_intermediate( + (((((((((M31_0.clone() + + (op0_limb_19_col57.clone() * op1_limb_27_col94.clone())) + + (op0_limb_20_col58.clone() * op1_limb_26_col93.clone())) + + (op0_limb_21_col59.clone() * op1_limb_25_col92.clone())) + + (op0_limb_22_col60.clone() * op1_limb_24_col91.clone())) + + (op0_limb_23_col61.clone() * op1_limb_23_col90.clone())) + + (op0_limb_24_col62.clone() * op1_limb_22_col89.clone())) + + (op0_limb_25_col63.clone() * op1_limb_21_col88.clone())) + + (op0_limb_26_col64.clone() * op1_limb_20_col87.clone())) + + (op0_limb_27_col65.clone() * op1_limb_19_col86.clone())), + ); + let conv_tmp_31b3_61 = eval.add_intermediate( + ((((((((M31_0.clone() + (op0_limb_20_col58.clone() * op1_limb_27_col94.clone())) + + (op0_limb_21_col59.clone() * op1_limb_26_col93.clone())) + + (op0_limb_22_col60.clone() * op1_limb_25_col92.clone())) + + (op0_limb_23_col61.clone() * op1_limb_24_col91.clone())) + + (op0_limb_24_col62.clone() * op1_limb_23_col90.clone())) + + (op0_limb_25_col63.clone() * op1_limb_22_col89.clone())) + + (op0_limb_26_col64.clone() * op1_limb_21_col88.clone())) + + (op0_limb_27_col65.clone() * op1_limb_20_col87.clone())), + ); + let conv_tmp_31b3_62 = eval.add_intermediate( + (((((((M31_0.clone() + (op0_limb_21_col59.clone() * op1_limb_27_col94.clone())) + + (op0_limb_22_col60.clone() * op1_limb_26_col93.clone())) + + (op0_limb_23_col61.clone() * op1_limb_25_col92.clone())) + + (op0_limb_24_col62.clone() * op1_limb_24_col91.clone())) + + (op0_limb_25_col63.clone() * op1_limb_23_col90.clone())) + + (op0_limb_26_col64.clone() * op1_limb_22_col89.clone())) + + (op0_limb_27_col65.clone() * op1_limb_21_col88.clone())), + ); + let conv_tmp_31b3_63 = eval.add_intermediate( + ((((((M31_0.clone() + (op0_limb_22_col60.clone() * op1_limb_27_col94.clone())) + + (op0_limb_23_col61.clone() * op1_limb_26_col93.clone())) + + (op0_limb_24_col62.clone() * op1_limb_25_col92.clone())) + + (op0_limb_25_col63.clone() * op1_limb_24_col91.clone())) + + (op0_limb_26_col64.clone() * op1_limb_23_col90.clone())) + + (op0_limb_27_col65.clone() * op1_limb_22_col89.clone())), + ); + let conv_tmp_31b3_64 = eval.add_intermediate( + (((((M31_0.clone() + (op0_limb_23_col61.clone() * op1_limb_27_col94.clone())) + + (op0_limb_24_col62.clone() * op1_limb_26_col93.clone())) + + (op0_limb_25_col63.clone() * op1_limb_25_col92.clone())) + + (op0_limb_26_col64.clone() * op1_limb_24_col91.clone())) + + (op0_limb_27_col65.clone() * op1_limb_23_col90.clone())), + ); + let conv_tmp_31b3_65 = eval.add_intermediate( + ((((M31_0.clone() + (op0_limb_24_col62.clone() * op1_limb_27_col94.clone())) + + (op0_limb_25_col63.clone() * op1_limb_26_col93.clone())) + + (op0_limb_26_col64.clone() * op1_limb_25_col92.clone())) + + (op0_limb_27_col65.clone() * op1_limb_24_col91.clone())), + ); + let conv_tmp_31b3_66 = eval.add_intermediate( + (((M31_0.clone() + (op0_limb_25_col63.clone() * op1_limb_27_col94.clone())) + + (op0_limb_26_col64.clone() * op1_limb_26_col93.clone())) + + (op0_limb_27_col65.clone() * op1_limb_25_col92.clone())), + ); + let conv_tmp_31b3_67 = eval.add_intermediate( + ((M31_0.clone() + (op0_limb_26_col64.clone() * op1_limb_27_col94.clone())) + + (op0_limb_27_col65.clone() * op1_limb_26_col93.clone())), + ); + let conv_tmp_31b3_68 = eval.add_intermediate( + (M31_0.clone() + (op0_limb_27_col65.clone() * op1_limb_27_col94.clone())), + ); + let conv_mod_tmp_31b3_69 = eval.add_intermediate( + (((M31_0.clone() + (M31_32.clone() * conv_tmp_31b3_14.clone())) + - (M31_4.clone() * conv_tmp_31b3_35.clone())) + + (M31_8.clone() * conv_tmp_31b3_63.clone())), + ); + let conv_mod_tmp_31b3_70 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_14.clone())) + + (M31_32.clone() * conv_tmp_31b3_15.clone())) + - (M31_4.clone() * conv_tmp_31b3_36.clone())) + + (M31_8.clone() * conv_tmp_31b3_64.clone())), + ); + let conv_mod_tmp_31b3_71 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_15.clone())) + + (M31_32.clone() * conv_tmp_31b3_16.clone())) + - (M31_4.clone() * conv_tmp_31b3_37.clone())) + + (M31_8.clone() * conv_tmp_31b3_65.clone())), + ); + let conv_mod_tmp_31b3_72 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_16.clone())) + + (M31_32.clone() * conv_tmp_31b3_17.clone())) + - (M31_4.clone() * conv_tmp_31b3_38.clone())) + + (M31_8.clone() * conv_tmp_31b3_66.clone())), + ); + let conv_mod_tmp_31b3_73 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_17.clone())) + + (M31_32.clone() * conv_tmp_31b3_18.clone())) + - (M31_4.clone() * conv_tmp_31b3_39.clone())) + + (M31_8.clone() * conv_tmp_31b3_67.clone())), + ); + let conv_mod_tmp_31b3_74 = eval.add_intermediate( + ((((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_18.clone())) + + (M31_32.clone() * conv_tmp_31b3_19.clone())) + - (M31_4.clone() * conv_tmp_31b3_40.clone())) + + (M31_8.clone() * conv_tmp_31b3_68.clone())), + ); + let conv_mod_tmp_31b3_75 = eval.add_intermediate( + (((M31_0.clone() + (M31_1.clone() * conv_tmp_31b3_19.clone())) + + (M31_32.clone() * conv_tmp_31b3_20.clone())) + - (M31_4.clone() * conv_tmp_31b3_41.clone())), + ); + let conv_mod_tmp_31b3_76 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_14.clone())) + + (M31_1.clone() * conv_tmp_31b3_20.clone())) + + (M31_32.clone() * conv_tmp_31b3_21.clone())) + - (M31_4.clone() * conv_tmp_31b3_42.clone())), + ); + let conv_mod_tmp_31b3_77 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_15.clone())) + + (M31_1.clone() * conv_tmp_31b3_21.clone())) + + (M31_32.clone() * conv_tmp_31b3_22.clone())) + - (M31_4.clone() * conv_tmp_31b3_43.clone())), + ); + let conv_mod_tmp_31b3_78 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_16.clone())) + + (M31_1.clone() * conv_tmp_31b3_22.clone())) + + (M31_32.clone() * conv_tmp_31b3_23.clone())) + - (M31_4.clone() * conv_tmp_31b3_44.clone())), + ); + let conv_mod_tmp_31b3_79 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_17.clone())) + + (M31_1.clone() * conv_tmp_31b3_23.clone())) + + (M31_32.clone() * conv_tmp_31b3_24.clone())) + - (M31_4.clone() * conv_tmp_31b3_45.clone())), + ); + let conv_mod_tmp_31b3_80 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_18.clone())) + + (M31_1.clone() * conv_tmp_31b3_24.clone())) + + (M31_32.clone() * conv_tmp_31b3_25.clone())) + - (M31_4.clone() * conv_tmp_31b3_46.clone())), + ); + let conv_mod_tmp_31b3_81 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_19.clone())) + + (M31_1.clone() * conv_tmp_31b3_25.clone())) + + (M31_32.clone() * conv_tmp_31b3_26.clone())) + - (M31_4.clone() * conv_tmp_31b3_47.clone())), + ); + let conv_mod_tmp_31b3_82 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_20.clone())) + + (M31_1.clone() * conv_tmp_31b3_26.clone())) + + (M31_32.clone() * conv_tmp_31b3_27.clone())) + - (M31_4.clone() * conv_tmp_31b3_48.clone())), + ); + let conv_mod_tmp_31b3_83 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_21.clone())) + + (M31_1.clone() * conv_tmp_31b3_27.clone())) + + (M31_32.clone() * conv_tmp_31b3_28.clone())) + - (M31_4.clone() * conv_tmp_31b3_49.clone())), + ); + let conv_mod_tmp_31b3_84 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_22.clone())) + + (M31_1.clone() * conv_tmp_31b3_28.clone())) + + (M31_32.clone() * conv_tmp_31b3_29.clone())) + - (M31_4.clone() * conv_tmp_31b3_50.clone())), + ); + let conv_mod_tmp_31b3_85 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_23.clone())) + + (M31_1.clone() * conv_tmp_31b3_29.clone())) + + (M31_32.clone() * conv_tmp_31b3_30.clone())) + - (M31_4.clone() * conv_tmp_31b3_51.clone())), + ); + let conv_mod_tmp_31b3_86 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_24.clone())) + + (M31_1.clone() * conv_tmp_31b3_30.clone())) + + (M31_32.clone() * conv_tmp_31b3_31.clone())) + - (M31_4.clone() * conv_tmp_31b3_52.clone())), + ); + let conv_mod_tmp_31b3_87 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_25.clone())) + + (M31_1.clone() * conv_tmp_31b3_31.clone())) + + (M31_32.clone() * conv_tmp_31b3_32.clone())) + - (M31_4.clone() * conv_tmp_31b3_53.clone())), + ); + let conv_mod_tmp_31b3_88 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_26.clone())) + + (M31_1.clone() * conv_tmp_31b3_32.clone())) + + (M31_32.clone() * conv_tmp_31b3_33.clone())) + - (M31_4.clone() * conv_tmp_31b3_54.clone())), + ); + let conv_mod_tmp_31b3_89 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_27.clone())) + + (M31_1.clone() * conv_tmp_31b3_33.clone())) + + (M31_32.clone() * conv_tmp_31b3_34.clone())) + - (M31_4.clone() * conv_tmp_31b3_55.clone())), + ); + let conv_mod_tmp_31b3_90 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_28.clone())) + + (M31_1.clone() * conv_tmp_31b3_34.clone())) + - (M31_4.clone() * conv_tmp_31b3_56.clone())) + + (M31_64.clone() * conv_tmp_31b3_63.clone())), + ); + let conv_mod_tmp_31b3_91 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_29.clone())) + - (M31_4.clone() * conv_tmp_31b3_57.clone())) + + (M31_2.clone() * conv_tmp_31b3_63.clone())) + + (M31_64.clone() * conv_tmp_31b3_64.clone())), + ); + let conv_mod_tmp_31b3_92 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_30.clone())) + - (M31_4.clone() * conv_tmp_31b3_58.clone())) + + (M31_2.clone() * conv_tmp_31b3_64.clone())) + + (M31_64.clone() * conv_tmp_31b3_65.clone())), + ); + let conv_mod_tmp_31b3_93 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_31.clone())) + - (M31_4.clone() * conv_tmp_31b3_59.clone())) + + (M31_2.clone() * conv_tmp_31b3_65.clone())) + + (M31_64.clone() * conv_tmp_31b3_66.clone())), + ); + let conv_mod_tmp_31b3_94 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_32.clone())) + - (M31_4.clone() * conv_tmp_31b3_60.clone())) + + (M31_2.clone() * conv_tmp_31b3_66.clone())) + + (M31_64.clone() * conv_tmp_31b3_67.clone())), + ); + let conv_mod_tmp_31b3_95 = eval.add_intermediate( + ((((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_33.clone())) + - (M31_4.clone() * conv_tmp_31b3_61.clone())) + + (M31_2.clone() * conv_tmp_31b3_67.clone())) + + (M31_64.clone() * conv_tmp_31b3_68.clone())), + ); + let conv_mod_tmp_31b3_96 = eval.add_intermediate( + (((M31_0.clone() + (M31_2.clone() * conv_tmp_31b3_34.clone())) + - (M31_4.clone() * conv_tmp_31b3_62.clone())) + + (M31_2.clone() * conv_tmp_31b3_68.clone())), + ); eval.add_to_relation(RelationEntry::new( &self.rangecheck_19_lookup_elements, E::EF::one(), diff --git a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/prover.rs b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/prover.rs index 8a1f090a..70cf2292 100644 --- a/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/mul_opcode_is_small_f_is_imm_t/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -124,75 +125,13 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 3], pub memory_id_to_big_inputs: [Vec; 3], pub range_check_19_inputs: [Vec; 28], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - range_check_19_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.range_check_19_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/ret_opcode/prover.rs b/stwo_cairo_prover/crates/prover/src/components/ret_opcode/prover.rs index d91e155e..d73788ab 100644 --- a/stwo_cairo_prover/crates/prover/src/components/ret_opcode/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/ret_opcode/prover.rs @@ -1,5 +1,6 @@ #![allow(unused_parens)] #![allow(unused_imports)] +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -115,36 +116,12 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub memory_address_to_id_inputs: [Vec; 2], pub memory_id_to_big_inputs: [Vec; 2], pub verify_instruction_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - memory_address_to_id_inputs: [ - Vec::with_capacity(capacity), - Vec::with_capacity(capacity), - ], - memory_id_to_big_inputs: [Vec::with_capacity(capacity), Vec::with_capacity(capacity)], - verify_instruction_inputs: [Vec::with_capacity(capacity)], - } - } - - fn bit_reverse_coset_to_circle_domain_order(&mut self) { - self.memory_address_to_id_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.memory_id_to_big_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - self.verify_instruction_inputs - .iter_mut() - .for_each(|vec| bit_reverse_coset_to_circle_domain_order(vec)); - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)] diff --git a/stwo_cairo_prover/crates/prover/src/components/verify_instruction/prover.rs b/stwo_cairo_prover/crates/prover/src/components/verify_instruction/prover.rs index 1ee3952d..9141ac06 100644 --- a/stwo_cairo_prover/crates/prover/src/components/verify_instruction/prover.rs +++ b/stwo_cairo_prover/crates/prover/src/components/verify_instruction/prover.rs @@ -4,6 +4,7 @@ use std::collections::{BTreeMap, BTreeSet}; use std::iter::zip; use std::vec; +use air_structs_derive::SubComponentInputs; use itertools::{chain, zip_eq, Itertools}; use num_traits::{One, Zero}; use prover_types::cpu::*; @@ -124,23 +125,13 @@ impl ClaimGenerator { } } +#[derive(SubComponentInputs)] pub struct SubComponentInputs { pub range_check_4_3_inputs: [Vec; 1], pub range_check_7_2_5_inputs: [Vec; 1], pub memory_address_to_id_inputs: [Vec; 1], pub memory_id_to_big_inputs: [Vec; 1], } -impl SubComponentInputs { - #[allow(unused_variables)] - fn with_capacity(capacity: usize) -> Self { - Self { - range_check_4_3_inputs: [Vec::with_capacity(capacity)], - range_check_7_2_5_inputs: [Vec::with_capacity(capacity)], - memory_address_to_id_inputs: [Vec::with_capacity(capacity)], - memory_id_to_big_inputs: [Vec::with_capacity(capacity)], - } - } -} #[allow(clippy::useless_conversion)] #[allow(unused_variables)]