use miden_core::Felt;
use miden_crypto::{
field::PrimeCharacteristicRing,
stark::air::{LiftedAirBuilder, WindowAccess},
};
use p3_field::Dup;
#[inline(never)]
pub fn eval_core<AB: LiftedAirBuilder<F = Felt>>(builder: &mut AB) {
let main = builder.main();
let m0 = main.current_slice();
let m1 = main.next_slice();
let aux = builder.permutation();
let a0 = aux.current_slice();
let a1 = aux.next_slice();
let _ = (&m1, &a0, &a1);
let h0: AB::Expr = builder.is_first_row();
let h1 = m0[0];
let b2 = h0.dup() * h1;
builder.assert_zero(b2.dup());
let h2 = m0[1];
let b4 = h0.dup() * h2;
builder.assert_zero(b4.dup());
let h3 = m0[2];
let b6 = h0.dup() * h3;
builder.assert_zero(b6.dup());
let h4 = m0[3];
let b8 = h0.dup() * h4;
builder.assert_zero(b8.dup());
let h5 = m0[4];
let b10 = h0.dup() * h5;
builder.assert_zero(b10.dup());
let h6 = m0[5];
let b12 = h0.dup() * h6;
builder.assert_zero(b12.dup());
let h7: AB::Expr = builder.is_transition();
let h8 = m1[0];
let h9: AB::Expr = AB::Expr::from(Felt::from_u64(1));
let b16 = h1 + h9.dup();
let b17 = h8 - b16.dup();
let b18 = h7.dup() * b17.dup();
builder.assert_zero(b18.dup());
let h10 = m0[11];
let b20 = h9.dup() - h10;
let h11 = m0[10];
let h12 = m0[9];
let b23 = h11 * h12;
let b24 = b20.dup() * b23.dup();
let h13 = m0[29];
let b26 = b24.dup() * h13;
let h14 = m0[28];
let h15 = m0[8];
let b29 = h9.dup() - h15;
let b30 = b23.dup() * b29.dup();
let h16 = m0[7];
let b32 = h9.dup() - h16;
let b33 = b30.dup() * b32.dup();
let b34 = h14 * b33.dup();
let b35 = b26.dup() + b34.dup();
let h17 = m1[1];
let b37 = h17 - b16.dup();
let b38 = b35.dup() * b37.dup();
builder.assert_zero(b38.dup());
let b39 = h9.dup() - h12;
let b40 = h11 * b39.dup();
let b41 = b20.dup() * b40.dup();
let b42 = b41.dup() * h13;
let b43 = b42.dup() * h17;
builder.assert_zero(b43.dup());
let b44 = b26.dup() + b42.dup();
let b45 = b44.dup() + b34.dup();
let b46 = h9.dup() - h11;
let b47 = b46.dup() * b39.dup();
let b48 = h10 * b47.dup();
let b49 = b48.dup() * h13;
let b50 = b45.dup() + b49.dup();
let b51 = h9.dup() - b50.dup();
let b52 = h17 - h2;
let b53 = b51.dup() * b52.dup();
let b54 = h7.dup() * b53.dup();
builder.assert_zero(b54.dup());
let h18 = m1[2];
let h19 = m0[14];
let b57 = h18 - h19;
let b58 = b35.dup() * b57.dup();
builder.assert_zero(b58.dup());
let h20 = m1[3];
let h21 = m0[15];
let b61 = h20 - h21;
let b62 = b35.dup() * b61.dup();
builder.assert_zero(b62.dup());
let h22 = m1[4];
let h23 = m0[16];
let b65 = h22 - h23;
let b66 = b35.dup() * b65.dup();
builder.assert_zero(b66.dup());
let h24 = m1[5];
let h25 = m0[17];
let b69 = h24 - h25;
let b70 = b35.dup() * b69.dup();
builder.assert_zero(b70.dup());
let b71 = b35.dup() + b49.dup();
let b72 = h9.dup() - b71.dup();
let b73 = h18 - h3;
let b74 = b72.dup() * b73.dup();
let b75 = h7.dup() * b74.dup();
builder.assert_zero(b75.dup());
let b76 = h20 - h4;
let b77 = b72.dup() * b76.dup();
let b78 = h7.dup() * b77.dup();
builder.assert_zero(b78.dup());
let b79 = h22 - h5;
let b80 = b72.dup() * b79.dup();
let b81 = h7.dup() * b80.dup();
builder.assert_zero(b81.dup());
let b82 = h24 - h6;
let b83 = b72.dup() * b82.dup();
let b84 = h7.dup() * b83.dup();
builder.assert_zero(b84.dup());
let h26 = m0[50];
let b86 = h0.dup() * h26;
builder.assert_zero(b86.dup());
let h27: AB::Expr = builder.is_last_row();
let h28: AB::Expr = AB::Expr::from(Felt::from_u64(65535));
let b89 = h26 - h28.dup();
let b90 = h27.dup() * b89.dup();
builder.assert_zero(b90.dup());
let h29 = m1[50];
let b92 = h29 - h26;
let b93 = b92.dup() - h9.dup();
let b94 = b92.dup() * b93.dup();
let h30: AB::Expr = AB::Expr::from(Felt::from_u64(3));
let b96 = b92.dup() - h30.dup();
let b97 = b94.dup() * b96.dup();
let h31: AB::Expr = AB::Expr::from(Felt::from_u64(9));
let b99 = b92.dup() - h31.dup();
let b100 = b97.dup() * b99.dup();
let h32: AB::Expr = AB::Expr::from(Felt::from_u64(27));
let b102 = b92.dup() - h32.dup();
let b103 = b100.dup() * b102.dup();
let h33: AB::Expr = AB::Expr::from(Felt::from_u64(81));
let b105 = b92.dup() - h33.dup();
let b106 = b103.dup() * b105.dup();
let h34: AB::Expr = AB::Expr::from(Felt::from_u64(243));
let b108 = b92.dup() - h34.dup();
let b109 = b106.dup() * b108.dup();
let h35: AB::Expr = AB::Expr::from(Felt::from_u64(729));
let b111 = b92.dup() - h35.dup();
let b112 = b109.dup() * b111.dup();
let h36: AB::Expr = AB::Expr::from(Felt::from_u64(2187));
let b114 = b92.dup() - h36.dup();
let b115 = b112.dup() * b114.dup();
let b116 = h7.dup() * b115.dup();
builder.assert_zero(b116.dup());
let h37 = m1[30];
let h38 = m0[12];
let b119 = h9.dup() - h38;
let b120 = b119.dup() * b20.dup();
let h39 = m0[13];
let b122 = h9.dup() - h39;
let b123 = b120.dup() * b122.dup();
let b124 = b47.dup() * b29.dup();
let b125 = b123.dup() * b124.dup();
let b126 = b125.dup() * b32.dup();
let b127 = h39 * b119.dup();
let b128 = b127.dup() * b20.dup();
let b129 = b40.dup() * h15;
let b130 = b128.dup() * b129.dup();
let b131 = b126.dup() + b130.dup();
let b132 = b124.dup() * h16;
let b133 = h14 * b132.dup();
let b134 = b46.dup() * h12;
let b135 = b134.dup() * h15;
let b136 = b135.dup() * b32.dup();
let b137 = h14 * b136.dup();
let b138 = b133.dup() + b137.dup();
let b139 = b131.dup() + b138.dup();
let b140 = b135.dup() * h16;
let b141 = h14 * b140.dup();
let b142 = b134.dup() * b29.dup();
let b143 = b142.dup() * h16;
let b144 = h14 * b143.dup();
let b145 = b141.dup() + b144.dup();
let b146 = b119.dup() * h10;
let b147 = b146.dup() * b122.dup();
let b148 = b23.dup() * h15;
let b149 = b147.dup() * b148.dup();
let b150 = b149.dup() * h16;
let b151 = h10 * b40.dup();
let b152 = b151.dup() * h13;
let b153 = b150.dup() + b152.dup();
let b154 = b145.dup() + b153.dup();
let b155 = b139.dup() + b154.dup();
let b156 = h10 * b23.dup();
let b157 = b156.dup() * h13;
let b158 = b157.dup() + b26.dup();
let h40 = m0[19];
let b160 = h9.dup() - h40;
let b161 = b49.dup() * b160.dup();
let b162 = b42.dup() + b161.dup();
let b163 = b158.dup() + b162.dup();
let b164 = b30.dup() * h16;
let b165 = h14 * b164.dup();
let b166 = b40.dup() * b29.dup();
let b167 = b166.dup() * h16;
let b168 = h14 * b167.dup();
let b169 = b165.dup() + b168.dup();
let b170 = b129.dup() * b32.dup();
let b171 = h14 * b170.dup();
let b172 = b169.dup() + b171.dup();
let b173 = b163.dup() + b172.dup();
let b174 = b155.dup() + b173.dup();
let b175 = h38 * b20.dup();
let b176 = b175.dup() * b122.dup();
let b177 = b176.dup() * b124.dup();
let b178 = b177.dup() * b32.dup();
let b179 = b123.dup() * b129.dup();
let b180 = b123.dup() * b30.dup();
let b181 = b179.dup() + b180.dup();
let b182 = b147.dup() * b124.dup();
let b183 = b47.dup() * h15;
let b184 = b147.dup() * b183.dup();
let b185 = b182.dup() + b184.dup();
let b186 = b181.dup() + b185.dup();
let b187 = b147.dup() * b142.dup();
let b188 = b147.dup() * b135.dup();
let b189 = b187.dup() + b188.dup();
let b190 = b147.dup() * b129.dup();
let b191 = b189.dup() + b190.dup();
let b192 = b186.dup() + b191.dup();
let b193 = b192.dup() * h16;
let b194 = b178.dup() + b193.dup();
let b195 = b176.dup() * b166.dup();
let b196 = b195.dup() * h16;
let b197 = b176.dup() * b30.dup();
let b198 = b197.dup() * h16;
let b199 = b196.dup() + b198.dup();
let b200 = b194.dup() + b199.dup();
let b201 = b176.dup() * b148.dup();
let b202 = b201.dup() * b32.dup();
let b203 = b201.dup() * h16;
let b204 = b202.dup() + b203.dup();
let b205 = b142.dup() * b32.dup();
let b206 = h14 * b205.dup();
let b207 = h10 * b134.dup();
let b208 = b207.dup() * h13;
let b209 = b206.dup() + b208.dup();
let b210 = b204.dup() + b209.dup();
let b211 = b200.dup() + b210.dup();
let b212 = b49.dup() * h40;
let b213 = b166.dup() * b32.dup();
let b214 = h14 * b213.dup();
let b215 = b212.dup() + b214.dup();
let b216 = b215.dup() + b34.dup();
let b217 = b211.dup() + b216.dup();
let b218 = b174.dup() + b217.dup();
let b219 = h37 * b218.dup();
let h41 = m0[30];
let b221 = b174.dup() * h41;
let h42 = m0[31];
let b223 = b217.dup() * h42;
let b224 = b221.dup() + b223.dup();
let b225 = b219.dup() - b224.dup();
let b226 = h7.dup() * b225.dup();
builder.assert_zero(b226.dup());
let h43 = m1[31];
let b228 = b125.dup() * h16;
let b229 = b126.dup() + b228.dup();
let b230 = b123.dup() * b183.dup();
let b231 = b230.dup() * b32.dup();
let b232 = b229.dup() + b231.dup();
let b233 = b230.dup() * h16;
let b234 = b232.dup() + b233.dup();
let b235 = b123.dup() * b142.dup();
let b236 = b235.dup() * b32.dup();
let b237 = b234.dup() + b236.dup();
let b238 = b235.dup() * h16;
let b239 = b237.dup() + b238.dup();
let b240 = b123.dup() * b135.dup();
let b241 = b240.dup() * b32.dup();
let b242 = b239.dup() + b241.dup();
let b243 = b240.dup() * h16;
let b244 = b242.dup() + b243.dup();
let b245 = b244.dup() - b126.dup();
let b246 = b174.dup() + b245.dup();
let b247 = b177.dup() * h16;
let b248 = b178.dup() + b247.dup();
let b249 = b176.dup() * b183.dup();
let b250 = b249.dup() * b32.dup();
let b251 = b248.dup() + b250.dup();
let b252 = b249.dup() * h16;
let b253 = b251.dup() + b252.dup();
let b254 = b176.dup() * b142.dup();
let b255 = b254.dup() * b32.dup();
let b256 = b253.dup() + b255.dup();
let b257 = b254.dup() * h16;
let b258 = b256.dup() + b257.dup();
let b259 = b176.dup() * b135.dup();
let b260 = b259.dup() * b32.dup();
let b261 = b258.dup() + b260.dup();
let b262 = b259.dup() * h16;
let b263 = b261.dup() + b262.dup();
let b264 = b263.dup() - b178.dup();
let b265 = b217.dup() + b264.dup();
let b266 = b246.dup() + b265.dup();
let b267 = h38 * h10;
let b268 = b267.dup() * b122.dup();
let b269 = b268.dup() * b124.dup();
let b270 = b269.dup() * b32.dup();
let b271 = b269.dup() * h16;
let b272 = b270.dup() + b271.dup();
let b273 = b268.dup() * b183.dup();
let b274 = b273.dup() * b32.dup();
let b275 = b272.dup() + b274.dup();
let b276 = b273.dup() * h16;
let b277 = b275.dup() + b276.dup();
let b278 = b268.dup() * b142.dup();
let b279 = b278.dup() * b32.dup();
let b280 = b277.dup() + b279.dup();
let b281 = b278.dup() * h16;
let b282 = b280.dup() + b281.dup();
let b283 = b268.dup() * b135.dup();
let b284 = b283.dup() * b32.dup();
let b285 = b282.dup() + b284.dup();
let b286 = b283.dup() * h16;
let b287 = b285.dup() + b286.dup();
let b288 = b268.dup() * b166.dup();
let b289 = b288.dup() * b32.dup();
let b290 = b287.dup() + b289.dup();
let b291 = b288.dup() * h16;
let b292 = b290.dup() + b291.dup();
let b293 = b268.dup() * b129.dup();
let b294 = b293.dup() * b32.dup();
let b295 = b292.dup() + b294.dup();
let b296 = b293.dup() * h16;
let b297 = b295.dup() + b296.dup();
let b298 = b268.dup() * b30.dup();
let b299 = b298.dup() * b32.dup();
let b300 = b297.dup() + b299.dup();
let b301 = b298.dup() * h16;
let b302 = b300.dup() + b301.dup();
let b303 = b268.dup() * b148.dup();
let b304 = b303.dup() * b32.dup();
let b305 = b302.dup() + b304.dup();
let b306 = b303.dup() * h16;
let b307 = b305.dup() + b306.dup();
let b308 = b129.dup() * h16;
let b309 = h14 * b308.dup();
let b310 = b307.dup() + b309.dup();
let b311 = b192.dup() * b32.dup();
let b312 = b310.dup() + b311.dup();
let b313 = b266.dup() + b312.dup();
let b314 = h43 * b313.dup();
let b315 = b246.dup() * h42;
let h44 = m0[32];
let b317 = b265.dup() * h44;
let b318 = b315.dup() + b317.dup();
let b319 = b312.dup() * h41;
let b320 = b318.dup() + b319.dup();
let b321 = b314.dup() - b320.dup();
let b322 = h7.dup() * b321.dup();
builder.assert_zero(b322.dup());
let h45 = m1[32];
let b324 = b123.dup() * b166.dup();
let b325 = b324.dup() * b32.dup();
let b326 = b128.dup() * b46.dup();
let b327 = b325.dup() + b326.dup();
let b328 = b246.dup() + b327.dup();
let b329 = b176.dup() * b129.dup();
let b330 = b329.dup() * b32.dup();
let b331 = b128.dup() * b30.dup();
let b332 = b330.dup() + b331.dup();
let b333 = b128.dup() * b148.dup();
let b334 = b332.dup() + b333.dup();
let b335 = b179.dup() * h16;
let b336 = b334.dup() - b335.dup();
let b337 = b265.dup() + b336.dup();
let b338 = b328.dup() + b337.dup();
let b339 = b128.dup() * b166.dup();
let b340 = b312.dup() + b339.dup();
let b341 = b338.dup() + b340.dup();
let b342 = h45 * b341.dup();
let b343 = b328.dup() * h44;
let h46 = m0[33];
let b345 = b337.dup() * h46;
let b346 = b343.dup() + b345.dup();
let b347 = b340.dup() * h42;
let b348 = b346.dup() + b347.dup();
let b349 = b342.dup() - b348.dup();
let b350 = h7.dup() * b349.dup();
builder.assert_zero(b350.dup());
let h47 = m1[33];
let b352 = b328.dup() + b179.dup();
let b353 = b180.dup() * h16;
let b354 = -b353.dup();
let b355 = b337.dup() + b354.dup();
let b356 = b352.dup() + b355.dup();
let b357 = b179.dup() * b32.dup();
let b358 = -b357.dup();
let b359 = b340.dup() + b358.dup();
let b360 = b356.dup() + b359.dup();
let b361 = h47 * b360.dup();
let b362 = b352.dup() * h46;
let h48 = m0[34];
let b364 = b355.dup() * h48;
let b365 = b362.dup() + b364.dup();
let b366 = b359.dup() * h44;
let b367 = b365.dup() + b366.dup();
let b368 = b361.dup() - b367.dup();
let b369 = h7.dup() * b368.dup();
builder.assert_zero(b369.dup());
let h49 = m1[34];
let b371 = b123.dup() * b148.dup();
let b372 = b180.dup() + b371.dup();
let b373 = b147.dup() * b30.dup();
let b374 = b147.dup() * b166.dup();
let b375 = b374.dup() * h16;
let b376 = b373.dup() + b375.dup();
let b377 = b372.dup() + b376.dup();
let b378 = b20.dup() * b47.dup();
let b379 = b378.dup() * h13;
let b380 = b324.dup() * h16;
let b381 = b379.dup() + b380.dup();
let b382 = b377.dup() + b381.dup();
let b383 = b352.dup() + b382.dup();
let b384 = b197.dup() * b32.dup();
let b385 = b182.dup() * h16;
let b386 = b384.dup() - b385.dup();
let b387 = b355.dup() + b386.dup();
let b388 = b383.dup() + b387.dup();
let b389 = b180.dup() * b32.dup();
let b390 = -b389.dup();
let b391 = b359.dup() + b390.dup();
let b392 = b388.dup() + b391.dup();
let b393 = h49 * b392.dup();
let b394 = b383.dup() * h48;
let h50 = m0[35];
let b396 = b387.dup() * h50;
let b397 = b394.dup() + b396.dup();
let b398 = b391.dup() * h46;
let b399 = b397.dup() + b398.dup();
let b400 = b393.dup() - b399.dup();
let b401 = h7.dup() * b400.dup();
builder.assert_zero(b401.dup());
let h51 = m1[35];
let b403 = b383.dup() + b182.dup();
let b404 = b184.dup() * h16;
let b405 = -b404.dup();
let b406 = b387.dup() + b405.dup();
let b407 = b403.dup() + b406.dup();
let b408 = b182.dup() * b32.dup();
let b409 = -b408.dup();
let b410 = b391.dup() + b409.dup();
let b411 = b407.dup() + b410.dup();
let b412 = h51 * b411.dup();
let b413 = b403.dup() * h50;
let h52 = m0[36];
let b415 = b406.dup() * h52;
let b416 = b413.dup() + b415.dup();
let b417 = b410.dup() * h48;
let b418 = b416.dup() + b417.dup();
let b419 = b412.dup() - b418.dup();
let b420 = h7.dup() * b419.dup();
builder.assert_zero(b420.dup());
let h53 = m1[36];
let b422 = b403.dup() + b184.dup();
let b423 = b187.dup() * h16;
let b424 = -b423.dup();
let b425 = b406.dup() + b424.dup();
let b426 = b422.dup() + b425.dup();
let b427 = b184.dup() * b32.dup();
let b428 = -b427.dup();
let b429 = b410.dup() + b428.dup();
let b430 = b426.dup() + b429.dup();
let b431 = h53 * b430.dup();
let b432 = b422.dup() * h52;
let h54 = m0[37];
let b434 = b425.dup() * h54;
let b435 = b432.dup() + b434.dup();
let b436 = b429.dup() * h50;
let b437 = b435.dup() + b436.dup();
let b438 = b431.dup() - b437.dup();
let b439 = h7.dup() * b438.dup();
builder.assert_zero(b439.dup());
let h55 = m1[37];
let b441 = b422.dup() + b187.dup();
let b442 = b188.dup() * h16;
let b443 = -b442.dup();
let b444 = b425.dup() + b443.dup();
let b445 = b441.dup() + b444.dup();
let b446 = b187.dup() * b32.dup();
let b447 = -b446.dup();
let b448 = b429.dup() + b447.dup();
let b449 = b445.dup() + b448.dup();
let b450 = h55 * b449.dup();
let b451 = b441.dup() * h54;
let h56 = m0[38];
let b453 = b444.dup() * h56;
let b454 = b451.dup() + b453.dup();
let b455 = b448.dup() * h52;
let b456 = b454.dup() + b455.dup();
let b457 = b450.dup() - b456.dup();
let b458 = h7.dup() * b457.dup();
builder.assert_zero(b458.dup());
let h57 = m1[38];
let b460 = b374.dup() * b32.dup();
let b461 = b188.dup() + b460.dup();
let b462 = b183.dup() * h16;
let b463 = h14 * b462.dup();
let b464 = b183.dup() * b32.dup();
let b465 = h14 * b464.dup();
let b466 = b463.dup() + b465.dup();
let b467 = b461.dup() + b466.dup();
let b468 = b373.dup() * b32.dup();
let b469 = b467.dup() - b468.dup();
let b470 = b441.dup() + b469.dup();
let b471 = b329.dup() * h16;
let b472 = b190.dup() * h16;
let b473 = b471.dup() - b472.dup();
let b474 = b444.dup() + b473.dup();
let b475 = b470.dup() + b474.dup();
let b476 = b188.dup() * b32.dup();
let b477 = -b476.dup();
let b478 = b448.dup() + b477.dup();
let b479 = b475.dup() + b478.dup();
let b480 = h57 * b479.dup();
let b481 = b470.dup() * h56;
let h58 = m0[39];
let b483 = b474.dup() * h58;
let b484 = b481.dup() + b483.dup();
let b485 = b478.dup() * h54;
let b486 = b484.dup() + b485.dup();
let b487 = b480.dup() - b486.dup();
let b488 = h7.dup() * b487.dup();
builder.assert_zero(b488.dup());
let h59 = m1[39];
let b490 = b470.dup() + b190.dup();
let b491 = b490.dup() + b474.dup();
let b492 = b190.dup() * b32.dup();
let b493 = -b492.dup();
let b494 = b478.dup() + b493.dup();
let b495 = b491.dup() + b494.dup();
let b496 = h59 * b495.dup();
let b497 = b490.dup() * h58;
let h60 = m0[40];
let b499 = b474.dup() * h60;
let b500 = b497.dup() + b499.dup();
let b501 = b494.dup() * h56;
let b502 = b500.dup() + b501.dup();
let b503 = b496.dup() - b502.dup();
let b504 = h7.dup() * b503.dup();
builder.assert_zero(b504.dup());
let h61 = m1[40];
let b506 = h61 * b495.dup();
let b507 = b490.dup() * h60;
let h62 = m0[41];
let b509 = b474.dup() * h62;
let b510 = b507.dup() + b509.dup();
let b511 = b494.dup() * h58;
let b512 = b510.dup() + b511.dup();
let b513 = b506.dup() - b512.dup();
let b514 = h7.dup() * b513.dup();
builder.assert_zero(b514.dup());
let h63 = m1[41];
let b516 = h63 * b495.dup();
let b517 = b490.dup() * h62;
let h64 = m0[42];
let b519 = b474.dup() * h64;
let b520 = b517.dup() + b519.dup();
let b521 = b494.dup() * h60;
let b522 = b520.dup() + b521.dup();
let b523 = b516.dup() - b522.dup();
let b524 = h7.dup() * b523.dup();
builder.assert_zero(b524.dup());
let h65 = m1[42];
let b526 = b124.dup() * b32.dup();
let b527 = h14 * b526.dup();
let b528 = b468.dup() + b527.dup();
let b529 = b148.dup() * b32.dup();
let b530 = h14 * b529.dup();
let b531 = b528.dup() + b530.dup();
let b532 = b531.dup() - b466.dup();
let b533 = b373.dup() * h16;
let b534 = b532.dup() - b533.dup();
let b535 = b490.dup() + b534.dup();
let b536 = b535.dup() + b474.dup();
let b537 = b536.dup() + b494.dup();
let b538 = h65 * b537.dup();
let b539 = b535.dup() * h64;
let h66 = m0[43];
let b541 = b474.dup() * h66;
let b542 = b539.dup() + b541.dup();
let b543 = b494.dup() * h62;
let b544 = b542.dup() + b543.dup();
let b545 = b538.dup() - b544.dup();
let b546 = h7.dup() * b545.dup();
builder.assert_zero(b546.dup());
let h67 = m1[43];
let b548 = b535.dup() + b466.dup();
let b549 = b548.dup() + b474.dup();
let b550 = b549.dup() + b494.dup();
let b551 = h67 * b550.dup();
let b552 = b548.dup() * h66;
let h68 = m0[44];
let b554 = b474.dup() * h68;
let b555 = b552.dup() + b554.dup();
let b556 = b494.dup() * h64;
let b557 = b555.dup() + b556.dup();
let b558 = b551.dup() - b557.dup();
let b559 = h7.dup() * b558.dup();
builder.assert_zero(b559.dup());
let h69 = m1[44];
let b561 = b168.dup() + b171.dup();
let b562 = -b561.dup();
let b563 = b548.dup() + b562.dup();
let b564 = b563.dup() + b474.dup();
let b565 = b564.dup() + b494.dup();
let b566 = h69 * b565.dup();
let b567 = b563.dup() * h68;
let h70 = m0[45];
let b569 = b474.dup() * h70;
let b570 = b567.dup() + b569.dup();
let b571 = b494.dup() * h66;
let b572 = b570.dup() + b571.dup();
let b573 = b566.dup() - b572.dup();
let b574 = h7.dup() * b573.dup();
builder.assert_zero(b574.dup());
let h71 = m1[45];
let b576 = b563.dup() + b494.dup();
let b577 = h71 * b576.dup();
let b578 = b563.dup() * h70;
let b579 = b494.dup() * h68;
let b580 = b578.dup() + b579.dup();
let b581 = b577.dup() - b580.dup();
let b582 = h7.dup() * b581.dup();
builder.assert_zero(b582.dup());
let h72 = m0[46];
let h73: AB::Expr = AB::Expr::from(Felt::from_u64(16));
let b585 = h72 - h73.dup();
let b586 = h0.dup() * b585.dup();
builder.assert_zero(b586.dup());
let b587 = h27.dup() * b585.dup();
builder.assert_zero(b587.dup());
let h74 = m0[47];
let b589 = h0.dup() * h74;
builder.assert_zero(b589.dup());
let b590 = h27.dup() * h74;
builder.assert_zero(b590.dup());
let h75 = m1[46];
let b592 = h75 - h72;
let b593 = b35.dup() + b42.dup();
let b594 = h9.dup() - b593.dup();
let h76 = m0[20];
let h77 = m0[21];
let b597 = h76 + h77;
let b598 = b49.dup() * b597.dup();
let b599 = b594.dup() - b598.dup();
let b600 = b592.dup() * b599.dup();
let b601 = b122.dup() * h38;
let b602 = b601.dup() * b20.dup();
let b603 = b128.dup() * h11;
let b604 = b603.dup() * h12;
let b605 = b602.dup() + b604.dup();
let b606 = b605.dup() + b209.dup();
let b607 = b606.dup() + b215.dup();
let h78 = m0[48];
let b609 = b585.dup() * h78;
let b610 = b607.dup() * b609.dup();
let b611 = b600.dup() + b610.dup();
let b612 = b601.dup() * h10;
let b613 = b612.dup() + b309.dup();
let b614 = b613.dup() + b339.dup();
let b615 = b611.dup() - b614.dup();
let b616 = h75 - h73.dup();
let b617 = b593.dup() * b616.dup();
let b618 = b615.dup() + b617.dup();
let b619 = h7.dup() * b618.dup();
builder.assert_zero(b619.dup());
let b620 = h9.dup() - b609.dup();
let b621 = b620.dup() * b585.dup();
builder.assert_zero(b621.dup());
let h79 = m1[47];
let b623 = h79 - h1;
let b624 = b614.dup() * b623.dup();
builder.assert_zero(b624.dup());
let b625 = b607.dup() * h71;
let b626 = b620.dup() * b625.dup();
builder.assert_zero(b626.dup());
let b627 = h41 - h9.dup();
let b628 = b178.dup() * b627.dup();
builder.assert_zero(b628.dup());
let b629 = b330.dup() + b471.dup();
let b630 = h41 * b627.dup();
let b631 = b629.dup() * b630.dup();
builder.assert_zero(b631.dup());
let b632 = b300.dup() + b306.dup();
let b633 = b632.dup() + b325.dup();
let b634 = b633.dup() + b357.dup();
let b635 = b634.dup() + b389.dup();
let b636 = b635.dup() + b408.dup();
let b637 = b636.dup() + b427.dup();
let b638 = b637.dup() + b446.dup();
let b639 = b638.dup() + b476.dup();
let b640 = b639.dup() + b492.dup();
let b641 = b640.dup() + b460.dup();
let b642 = b641.dup() + b468.dup();
let b643 = b642.dup() + b533.dup();
let b644 = b149.dup() * b32.dup();
let b645 = b643.dup() + b644.dup();
let b646 = b645.dup() + b330.dup();
let b647 = b646.dup() + b471.dup();
let b648 = b647.dup() + b380.dup();
let b649 = b648.dup() + b304.dup();
let b650 = h37 * b649.dup();
let b651 = b271.dup() * h41;
let b652 = b274.dup() * h42;
let b653 = b651.dup() + b652.dup();
let b654 = b276.dup() * h44;
let b655 = b653.dup() + b654.dup();
let b656 = b279.dup() * h46;
let b657 = b655.dup() + b656.dup();
let b658 = b281.dup() * h48;
let b659 = b657.dup() + b658.dup();
let b660 = b284.dup() * h50;
let b661 = b659.dup() + b660.dup();
let b662 = b286.dup() * h52;
let b663 = b661.dup() + b662.dup();
let b664 = b289.dup() * h54;
let b665 = b663.dup() + b664.dup();
let b666 = b291.dup() * h58;
let b667 = b665.dup() + b666.dup();
let b668 = b294.dup() * h62;
let b669 = b667.dup() + b668.dup();
let b670 = b296.dup() * h66;
let b671 = b669.dup() + b670.dup();
let b672 = b299.dup() * h70;
let b673 = b671.dup() + b672.dup();
let b674 = b306.dup() * h1;
let b675 = b673.dup() + b674.dup();
let b676 = b325.dup() * h42;
let b677 = b675.dup() + b676.dup();
let b678 = b357.dup() * h44;
let b679 = b677.dup() + b678.dup();
let b680 = b389.dup() * h46;
let b681 = b679.dup() + b680.dup();
let b682 = b408.dup() * h48;
let b683 = b681.dup() + b682.dup();
let b684 = b427.dup() * h50;
let b685 = b683.dup() + b684.dup();
let b686 = b446.dup() * h52;
let b687 = b685.dup() + b686.dup();
let b688 = b476.dup() * h54;
let b689 = b687.dup() + b688.dup();
let b690 = b492.dup() * h56;
let b691 = b689.dup() + b690.dup();
let b692 = b460.dup() * h48;
let b693 = b691.dup() + b692.dup();
let b694 = b468.dup() * h56;
let b695 = b693.dup() + b694.dup();
let b696 = b533.dup() * h64;
let b697 = b695.dup() + b696.dup();
let b698 = b644.dup() * h56;
let b699 = b697.dup() + b698.dup();
let b700 = h41 * h44;
let b701 = h9.dup() - h41;
let b702 = b701.dup() * h42;
let b703 = b700.dup() + b702.dup();
let b704 = b330.dup() * b703.dup();
let b705 = b699.dup() + b704.dup();
let b706 = h41 * h50;
let b707 = b706.dup() + b702.dup();
let b708 = b471.dup() * b707.dup();
let b709 = b705.dup() + b708.dup();
let b710 = b380.dup() * h3;
let b711 = b709.dup() + b710.dup();
let b712 = b304.dup() * h72;
let b713 = b711.dup() + b712.dup();
let b714 = b650.dup() - b713.dup();
builder.assert_zero(b714.dup());
let b715 = b325.dup() + b460.dup();
let b716 = b715.dup() + b468.dup();
let b717 = b716.dup() + b533.dup();
let b718 = b717.dup() + b644.dup();
let b719 = b718.dup() + b330.dup();
let b720 = b719.dup() + b471.dup();
let b721 = b720.dup() + b380.dup();
let b722 = h43 * b721.dup();
let b723 = b325.dup() * h41;
let b724 = b460.dup() * h50;
let b725 = b723.dup() + b724.dup();
let b726 = b468.dup() * h58;
let b727 = b725.dup() + b726.dup();
let b728 = b533.dup() * h66;
let b729 = b727.dup() + b728.dup();
let b730 = b644.dup() * h58;
let b731 = b729.dup() + b730.dup();
let b732 = h41 * h42;
let b733 = b701.dup() * h44;
let b734 = b732.dup() + b733.dup();
let b735 = b330.dup() * b734.dup();
let b736 = b731.dup() + b735.dup();
let b737 = h41 * h52;
let b738 = b737.dup() + b733.dup();
let b739 = b471.dup() * b738.dup();
let b740 = b736.dup() + b739.dup();
let b741 = b380.dup() * h4;
let b742 = b740.dup() + b741.dup();
let b743 = b722.dup() - b742.dup();
builder.assert_zero(b743.dup());
let b744 = b335.dup() + b460.dup();
let b745 = b744.dup() + b468.dup();
let b746 = b745.dup() + b533.dup();
let b747 = b746.dup() + b644.dup();
let b748 = b747.dup() + b471.dup();
let b749 = b748.dup() + b380.dup();
let b750 = h45 * b749.dup();
let b751 = b335.dup() * h41;
let b752 = b460.dup() * h52;
let b753 = b751.dup() + b752.dup();
let b754 = b468.dup() * h60;
let b755 = b753.dup() + b754.dup();
let b756 = b533.dup() * h68;
let b757 = b755.dup() + b756.dup();
let b758 = b644.dup() * h60;
let b759 = b757.dup() + b758.dup();
let b760 = h41 * h54;
let b761 = b701.dup() * h46;
let b762 = b760.dup() + b761.dup();
let b763 = b471.dup() * b762.dup();
let b764 = b759.dup() + b763.dup();
let b765 = b380.dup() * h5;
let b766 = b764.dup() + b765.dup();
let b767 = b750.dup() - b766.dup();
builder.assert_zero(b767.dup());
let b768 = b353.dup() + b460.dup();
let b769 = b768.dup() + b468.dup();
let b770 = b769.dup() + b533.dup();
let b771 = b770.dup() + b644.dup();
let b772 = b771.dup() + b471.dup();
let b773 = b772.dup() + b380.dup();
let b774 = h47 * b773.dup();
let b775 = b353.dup() * h41;
let b776 = b460.dup() * h54;
let b777 = b775.dup() + b776.dup();
let b778 = b468.dup() * h62;
let b779 = b777.dup() + b778.dup();
let b780 = b533.dup() * h70;
let b781 = b779.dup() + b780.dup();
let b782 = b644.dup() * h62;
let b783 = b781.dup() + b782.dup();
let b784 = h41 * h56;
let b785 = b701.dup() * h48;
let b786 = b784.dup() + b785.dup();
let b787 = b471.dup() * b786.dup();
let b788 = b783.dup() + b787.dup();
let b789 = b380.dup() * h6;
let b790 = b788.dup() + b789.dup();
let b791 = b774.dup() - b790.dup();
builder.assert_zero(b791.dup());
let b792 = b385.dup() + b460.dup();
let b793 = b792.dup() + b644.dup();
let b794 = b793.dup() + b471.dup();
let b795 = h49 * b794.dup();
let b796 = b385.dup() * h41;
let b797 = b460.dup() * h41;
let b798 = b796.dup() + b797.dup();
let b799 = b644.dup() * h64;
let b800 = b798.dup() + b799.dup();
let b801 = b701.dup() * h50;
let b802 = b732.dup() + b801.dup();
let b803 = b471.dup() * b802.dup();
let b804 = b800.dup() + b803.dup();
let b805 = b795.dup() - b804.dup();
builder.assert_zero(b805.dup());
let b806 = b404.dup() + b460.dup();
let b807 = b806.dup() + b644.dup();
let b808 = b807.dup() + b471.dup();
let b809 = h51 * b808.dup();
let b810 = b404.dup() * h41;
let b811 = b460.dup() * h42;
let b812 = b810.dup() + b811.dup();
let b813 = b644.dup() * h66;
let b814 = b812.dup() + b813.dup();
let b815 = b701.dup() * h52;
let b816 = b700.dup() + b815.dup();
let b817 = b471.dup() * b816.dup();
let b818 = b814.dup() + b817.dup();
let b819 = b809.dup() - b818.dup();
builder.assert_zero(b819.dup());
let b820 = b423.dup() + b460.dup();
let b821 = b820.dup() + b644.dup();
let b822 = b821.dup() + b471.dup();
let b823 = h53 * b822.dup();
let b824 = b423.dup() * h41;
let b825 = b460.dup() * h44;
let b826 = b824.dup() + b825.dup();
let b827 = b644.dup() * h68;
let b828 = b826.dup() + b827.dup();
let b829 = h41 * h46;
let b830 = b701.dup() * h54;
let b831 = b829.dup() + b830.dup();
let b832 = b471.dup() * b831.dup();
let b833 = b828.dup() + b832.dup();
let b834 = b823.dup() - b833.dup();
builder.assert_zero(b834.dup());
let b835 = b442.dup() + b460.dup();
let b836 = b835.dup() + b644.dup();
let b837 = b836.dup() + b471.dup();
let b838 = h55 * b837.dup();
let b839 = b442.dup() * h41;
let b840 = b460.dup() * h46;
let b841 = b839.dup() + b840.dup();
let b842 = b644.dup() * h70;
let b843 = b841.dup() + b842.dup();
let b844 = h41 * h48;
let b845 = b701.dup() * h56;
let b846 = b844.dup() + b845.dup();
let b847 = b471.dup() * b846.dup();
let b848 = b843.dup() + b847.dup();
let b849 = b838.dup() - b848.dup();
builder.assert_zero(b849.dup());
let b850 = b472.dup() + b468.dup();
let b851 = b850.dup() + b644.dup();
let b852 = h57 * b851.dup();
let b853 = b472.dup() * h41;
let b854 = b468.dup() * h41;
let b855 = b853.dup() + b854.dup();
let b856 = b644.dup() * h41;
let b857 = b855.dup() + b856.dup();
let b858 = b852.dup() - b857.dup();
builder.assert_zero(b858.dup());
let b859 = b468.dup() + b644.dup();
let b860 = h59 * b859.dup();
let b861 = b468.dup() * h42;
let b862 = b644.dup() * h42;
let b863 = b861.dup() + b862.dup();
let b864 = b860.dup() - b863.dup();
builder.assert_zero(b864.dup());
let b865 = h61 * b859.dup();
let b866 = b468.dup() * h44;
let b867 = b644.dup() * h44;
let b868 = b866.dup() + b867.dup();
let b869 = b865.dup() - b868.dup();
builder.assert_zero(b869.dup());
let b870 = h63 * b859.dup();
let b871 = b468.dup() * h46;
let b872 = b644.dup() * h46;
let b873 = b871.dup() + b872.dup();
let b874 = b870.dup() - b873.dup();
builder.assert_zero(b874.dup());
let b875 = b533.dup() + b644.dup();
let b876 = b875.dup() + b466.dup();
let b877 = h65 * b876.dup();
let b878 = b533.dup() * h41;
let b879 = b644.dup() * h48;
let b880 = b878.dup() + b879.dup();
let h80: AB::Expr = AB::Expr::from(Felt::from_u64(8));
let b882 = h64 + h80.dup();
let b883 = b466.dup() * b882.dup();
let b884 = b880.dup() + b883.dup();
let b885 = b877.dup() - b884.dup();
builder.assert_zero(b885.dup());
let b886 = h67 * b875.dup();
let b887 = b533.dup() * h42;
let b888 = b644.dup() * h50;
let b889 = b887.dup() + b888.dup();
let b890 = b886.dup() - b889.dup();
builder.assert_zero(b890.dup());
let b891 = h69 * b875.dup();
let b892 = b533.dup() * h44;
let b893 = b644.dup() * h52;
let b894 = b892.dup() + b893.dup();
let b895 = b891.dup() - b894.dup();
builder.assert_zero(b895.dup());
let b896 = h71 * b875.dup();
let b897 = b533.dup() * h46;
let b898 = b644.dup() * h54;
let b899 = b897.dup() + b898.dup();
let b900 = b896.dup() - b899.dup();
builder.assert_zero(b900.dup());
let b901 = b20.dup() * b134.dup();
let b902 = b901.dup() * h13;
let b903 = h57 - h56;
let b904 = b902.dup() * b903.dup();
builder.assert_zero(b904.dup());
let b905 = h59 - h58;
let b906 = b902.dup() * b905.dup();
builder.assert_zero(b906.dup());
let b907 = h61 - h60;
let b908 = b902.dup() * b907.dup();
builder.assert_zero(b908.dup());
let b909 = h63 - h62;
let b910 = b902.dup() * b909.dup();
builder.assert_zero(b910.dup());
let b911 = h65 - b882.dup();
let b912 = b902.dup() * b911.dup();
builder.assert_zero(b912.dup());
let b913 = h66 + h80.dup();
let b914 = h67 - b913.dup();
let b915 = b902.dup() * b914.dup();
builder.assert_zero(b915.dup());
let b916 = h69 - h68;
let b917 = b902.dup() * b916.dup();
builder.assert_zero(b917.dup());
let b918 = h71 - h70;
let b919 = b902.dup() * b918.dup();
builder.assert_zero(b919.dup());
let b920 = h23 * h23;
let h81: AB::Expr = AB::Expr::from(Felt::from_u64(7));
let b922 = h25 * h25;
let b923 = h81.dup() * b922.dup();
let b924 = b920.dup() + b923.dup();
let b925 = h68 * b924.dup();
let b926 = h23 * h25;
let b927 = b926.dup() + b926.dup();
let b928 = h70 * b927.dup();
let b929 = h81.dup() * b928.dup();
let b930 = b925.dup() + b929.dup();
let b931 = h23 * h41;
let b932 = b930.dup() + b931.dup();
let b933 = b932.dup() + h42;
let b934 = h76 - b933.dup();
let b935 = b168.dup() * b934.dup();
builder.assert_zero(b935.dup());
let b936 = h68 * b927.dup();
let b937 = h70 * b924.dup();
let b938 = b936.dup() + b937.dup();
let b939 = h25 * h41;
let b940 = b938.dup() + b939.dup();
let b941 = h77 - b940.dup();
let b942 = b168.dup() * b941.dup();
builder.assert_zero(b942.dup());
let h82 = m0[18];
let b944 = b924.dup() * h23;
let b945 = b927.dup() * h25;
let b946 = h81.dup() * b945.dup();
let b947 = b944.dup() + b946.dup();
let b948 = h76 * b947.dup();
let b949 = b924.dup() * h25;
let b950 = b927.dup() * h23;
let b951 = b949.dup() + b950.dup();
let b952 = h77 * b951.dup();
let b953 = h81.dup() * b952.dup();
let b954 = b948.dup() + b953.dup();
let b955 = b924.dup() * h44;
let b956 = b954.dup() + b955.dup();
let b957 = h23 * h46;
let b958 = b956.dup() + b957.dup();
let b959 = b958.dup() + h48;
let b960 = h82 - b959.dup();
let b961 = b168.dup() * b960.dup();
builder.assert_zero(b961.dup());
let b962 = h76 * b951.dup();
let b963 = h77 * b947.dup();
let b964 = b962.dup() + b963.dup();
let b965 = b927.dup() * h44;
let b966 = b964.dup() + b965.dup();
let b967 = h25 * h46;
let b968 = b966.dup() + b967.dup();
let b969 = h40 - b968.dup();
let b970 = b168.dup() * b969.dup();
builder.assert_zero(b970.dup());
let b971 = h82 * b947.dup();
let b972 = h40 * b951.dup();
let b973 = h81.dup() * b972.dup();
let b974 = b971.dup() + b973.dup();
let b975 = b924.dup() * h50;
let b976 = b974.dup() + b975.dup();
let b977 = h23 * h52;
let b978 = b976.dup() + b977.dup();
let b979 = b978.dup() + h54;
let b980 = h69 - b979.dup();
let b981 = b168.dup() * b980.dup();
builder.assert_zero(b981.dup());
let b982 = h82 * b951.dup();
let b983 = h40 * b947.dup();
let b984 = b982.dup() + b983.dup();
let b985 = b927.dup() * h50;
let b986 = b984.dup() + b985.dup();
let b987 = h25 * h52;
let b988 = b986.dup() + b987.dup();
let b989 = h71 - b988.dup();
let b990 = b168.dup() * b989.dup();
builder.assert_zero(b990.dup());
let b991 = h25 * h42;
let b992 = h81.dup() * b991.dup();
let b993 = b931.dup() + b992.dup();
let b994 = b930.dup() + b993.dup();
let b995 = b994.dup() + h44;
let b996 = h76 - b995.dup();
let b997 = b171.dup() * b996.dup();
builder.assert_zero(b997.dup());
let b998 = h23 * h42;
let b999 = b998.dup() + b939.dup();
let b1000 = b938.dup() + b999.dup();
let b1001 = b1000.dup() + h46;
let b1002 = h77 - b1001.dup();
let b1003 = b171.dup() * b1002.dup();
builder.assert_zero(b1003.dup());
let b1004 = h76 * b924.dup();
let b1005 = h77 * b927.dup();
let b1006 = h81.dup() * b1005.dup();
let b1007 = b1004.dup() + b1006.dup();
let b1008 = h23 * h48;
let b1009 = h25 * h50;
let b1010 = h81.dup() * b1009.dup();
let b1011 = b1008.dup() + b1010.dup();
let b1012 = b1007.dup() + b1011.dup();
let b1013 = b1012.dup() + h52;
let b1014 = h69 - b1013.dup();
let b1015 = b171.dup() * b1014.dup();
builder.assert_zero(b1015.dup());
let b1016 = h76 * b927.dup();
let b1017 = h77 * b924.dup();
let b1018 = b1016.dup() + b1017.dup();
let b1019 = h23 * h50;
let b1020 = h25 * h48;
let b1021 = b1019.dup() + b1020.dup();
let b1022 = b1018.dup() + b1021.dup();
let b1023 = b1022.dup() + h54;
let b1024 = h71 - b1023.dup();
let b1025 = b171.dup() * b1024.dup();
builder.assert_zero(b1025.dup());
let b1026 = b195.dup() * b32.dup();
let b1027 = h9.dup() - h49;
let b1028 = b1027.dup() - h51;
let b1029 = b1028.dup() - h53;
let b1030 = b1029.dup() - h9.dup();
let b1031 = b1029.dup() * b1030.dup();
let b1032 = b1026.dup() * b1031.dup();
builder.assert_zero(b1032.dup());
let b1033 = h49 - h9.dup();
let b1034 = h49 * b1033.dup();
let b1035 = b1026.dup() * b1034.dup();
builder.assert_zero(b1035.dup());
let b1036 = h51 - h9.dup();
let b1037 = h51 * b1036.dup();
let b1038 = b1026.dup() * b1037.dup();
builder.assert_zero(b1038.dup());
let b1039 = h53 - h9.dup();
let b1040 = h53 * b1039.dup();
let b1041 = b1026.dup() * b1040.dup();
builder.assert_zero(b1041.dup());
let h83: AB::Expr = AB::Expr::from(Felt::from_u64(2));
let b1043 = h51 * h83.dup();
let b1044 = h49 + b1043.dup();
let b1045 = h53 * h30.dup();
let b1046 = b1044.dup() + b1045.dup();
let b1047 = h58 - b1046.dup();
let b1048 = b1026.dup() * b1047.dup();
builder.assert_zero(b1048.dup());
let h84: AB::Expr = AB::Expr::from(Felt::from_u64(18446462594437873665));
let b1050 = h49 * h84.dup();
let b1051 = b1029.dup() + b1050.dup();
let h85: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584320));
let b1053 = h51 * h85.dup();
let b1054 = b1051.dup() + b1053.dup();
let h86: AB::Expr = AB::Expr::from(Felt::from_u64(281474976710656));
let b1056 = h53 * h86.dup();
let b1057 = b1054.dup() + b1056.dup();
let b1058 = h60 * b1057.dup();
let b1059 = h76 - b1058.dup();
let b1060 = b1026.dup() * b1059.dup();
builder.assert_zero(b1060.dup());
let b1061 = h76 * h77;
let b1062 = b1061.dup() - h9.dup();
let b1063 = b1026.dup() * b1062.dup();
builder.assert_zero(b1063.dup());
let b1064 = h66 * h77;
let b1065 = h23 - b1064.dup();
let b1066 = b1026.dup() * b1065.dup();
builder.assert_zero(b1066.dup());
let b1067 = h68 * h77;
let b1068 = h25 - b1067.dup();
let b1069 = b1026.dup() * b1068.dup();
builder.assert_zero(b1069.dup());
let b1070 = h82 - b924.dup();
let b1071 = b1026.dup() * b1070.dup();
builder.assert_zero(b1071.dup());
let b1072 = h40 - b927.dup();
let b1073 = b1026.dup() * b1072.dup();
builder.assert_zero(b1073.dup());
let b1074 = h37 + h37;
let b1075 = h41 + h44;
let b1076 = h41 - h44;
let b1077 = b1076.dup() * h23;
let b1078 = h42 - h46;
let b1079 = b1078.dup() * h25;
let b1080 = h81.dup() * b1079.dup();
let b1081 = b1077.dup() + b1080.dup();
let b1082 = b1075.dup() + b1081.dup();
let b1083 = b1074.dup() - b1082.dup();
let b1084 = b1026.dup() * b1083.dup();
builder.assert_zero(b1084.dup());
let b1085 = h43 + h43;
let b1086 = h42 + h46;
let b1087 = b1076.dup() * h25;
let b1088 = b1078.dup() * h23;
let b1089 = b1087.dup() + b1088.dup();
let b1090 = b1086.dup() + b1089.dup();
let b1091 = b1085.dup() - b1090.dup();
let b1092 = b1026.dup() * b1091.dup();
builder.assert_zero(b1092.dup());
let b1093 = h45 + h45;
let b1094 = h48 + h52;
let b1095 = h48 - h52;
let b1096 = h23 * h84.dup();
let b1097 = b1095.dup() * b1096.dup();
let b1098 = h50 - h54;
let b1099 = h25 * h84.dup();
let b1100 = b1098.dup() * b1099.dup();
let b1101 = h81.dup() * b1100.dup();
let b1102 = b1097.dup() + b1101.dup();
let b1103 = b1094.dup() + b1102.dup();
let b1104 = b1093.dup() - b1103.dup();
let b1105 = b1026.dup() * b1104.dup();
builder.assert_zero(b1105.dup());
let b1106 = h47 + h47;
let b1107 = h50 + h54;
let b1108 = b1095.dup() * b1099.dup();
let b1109 = b1098.dup() * b1096.dup();
let b1110 = b1108.dup() + b1109.dup();
let b1111 = b1107.dup() + b1110.dup();
let b1112 = b1106.dup() - b1111.dup();
let b1113 = b1026.dup() * b1112.dup();
builder.assert_zero(b1113.dup());
let b1114 = h65 + h65;
let b1115 = h37 + h45;
let b1116 = h37 - h45;
let b1117 = b1116.dup() * h82;
let b1118 = h43 - h47;
let b1119 = b1118.dup() * h40;
let b1120 = h81.dup() * b1119.dup();
let b1121 = b1117.dup() + b1120.dup();
let b1122 = b1115.dup() + b1121.dup();
let b1123 = b1114.dup() - b1122.dup();
let b1124 = b1026.dup() * b1123.dup();
builder.assert_zero(b1124.dup());
let b1125 = h67 + h67;
let b1126 = h43 + h47;
let b1127 = b1116.dup() * h40;
let b1128 = b1118.dup() * h82;
let b1129 = b1127.dup() + b1128.dup();
let b1130 = b1126.dup() + b1129.dup();
let b1131 = b1125.dup() - b1130.dup();
let b1132 = b1026.dup() * b1131.dup();
builder.assert_zero(b1132.dup());
let b1133 = h41 * b1029.dup();
let b1134 = h48 * h49;
let b1135 = b1133.dup() + b1134.dup();
let b1136 = h44 * h51;
let b1137 = b1135.dup() + b1136.dup();
let b1138 = h52 * h53;
let b1139 = b1137.dup() + b1138.dup();
let b1140 = h62 - b1139.dup();
let b1141 = b1026.dup() * b1140.dup();
builder.assert_zero(b1141.dup());
let b1142 = h42 * b1029.dup();
let b1143 = h50 * h49;
let b1144 = b1142.dup() + b1143.dup();
let b1145 = h46 * h51;
let b1146 = b1144.dup() + b1145.dup();
let b1147 = h54 * h53;
let b1148 = b1146.dup() + b1147.dup();
let b1149 = h64 - b1148.dup();
let b1150 = b1026.dup() * b1149.dup();
builder.assert_zero(b1150.dup());
let b1151 = h60 * h60;
let b1152 = h55 - b1151.dup();
let b1153 = b1026.dup() * b1152.dup();
builder.assert_zero(b1153.dup());
let b1154 = h55 * h55;
let b1155 = h61 - b1154.dup();
let b1156 = b1026.dup() * b1155.dup();
builder.assert_zero(b1156.dup());
let b1157 = h70 + h80.dup();
let b1158 = h57 - b1157.dup();
let b1159 = b1026.dup() * b1158.dup();
builder.assert_zero(b1159.dup());
let b1160 = h59 - b1157.dup();
let b1161 = b1026.dup() * b1160.dup();
builder.assert_zero(b1161.dup());
let b1162 = h69 - b1157.dup();
let b1163 = b1026.dup() * b1162.dup();
builder.assert_zero(b1163.dup());
let b1164 = h63 - h56;
let b1165 = b1026.dup() * b1164.dup();
builder.assert_zero(b1165.dup());
let b1166 = h41 + h42;
let b1167 = h37 - b1166.dup();
let b1168 = b250.dup() * b1167.dup();
builder.assert_zero(b1168.dup());
let b1169 = h37 + h41;
let b1170 = b231.dup() * b1169.dup();
builder.assert_zero(b1170.dup());
let b1171 = h37 - b732.dup();
let b1172 = b252.dup() * b1171.dup();
builder.assert_zero(b1172.dup());
let b1173 = h37 * h41;
let b1174 = b1173.dup() - h9.dup();
let b1175 = b233.dup() * b1174.dup();
builder.assert_zero(b1175.dup());
let b1176 = h41 + h9.dup();
let b1177 = h37 - b1176.dup();
let b1178 = b236.dup() * b1177.dup();
builder.assert_zero(b1178.dup());
let b1179 = b238.dup() * b630.dup();
builder.assert_zero(b1179.dup());
let b1180 = h41 + h37;
let b1181 = b1180.dup() - h9.dup();
let b1182 = b238.dup() * b1181.dup();
builder.assert_zero(b1182.dup());
let b1183 = b255.dup() * b630.dup();
builder.assert_zero(b1183.dup());
let b1184 = h42 - h9.dup();
let b1185 = h42 * b1184.dup();
let b1186 = b255.dup() * b1185.dup();
builder.assert_zero(b1186.dup());
let b1187 = b255.dup() * b1171.dup();
builder.assert_zero(b1187.dup());
let b1188 = b257.dup() * b630.dup();
builder.assert_zero(b1188.dup());
let b1189 = b257.dup() * b1185.dup();
builder.assert_zero(b1189.dup());
let b1190 = b1166.dup() - b732.dup();
let b1191 = h37 - b1190.dup();
let b1192 = b257.dup() * b1191.dup();
builder.assert_zero(b1192.dup());
let b1193 = h41 - h42;
let b1194 = b1193.dup() * h37;
let b1195 = b247.dup() * b1194.dup();
builder.assert_zero(b1195.dup());
let b1196 = b1193.dup() * h23;
let b1197 = h9.dup() - b1196.dup();
let b1198 = h37 - b1197.dup();
let b1199 = b247.dup() * b1198.dup();
builder.assert_zero(b1199.dup());
let b1200 = h41 * h37;
let b1201 = b228.dup() * b1200.dup();
builder.assert_zero(b1201.dup());
let b1202 = h41 * h23;
let b1203 = h9.dup() - b1202.dup();
let b1204 = h37 - b1203.dup();
let b1205 = b228.dup() * b1204.dup();
builder.assert_zero(b1205.dup());
let b1206 = b371.dup() * h16;
let b1207 = h42 * h42;
let b1208 = h43 - b1207.dup();
let b1209 = b1206.dup() * b1208.dup();
builder.assert_zero(b1209.dup());
let b1210 = b1184.dup() * h37;
let b1211 = b1210.dup() + h9.dup();
let b1212 = h23 - b1211.dup();
let b1213 = b1206.dup() * b1212.dup();
builder.assert_zero(b1213.dup());
let b1214 = h44 * h23;
let b1215 = h45 - b1214.dup();
let b1216 = b1206.dup() * b1215.dup();
builder.assert_zero(b1216.dup());
let b1217 = h47 * h83.dup();
let b1218 = b1217.dup() + h37;
let b1219 = h46 - b1218.dup();
let b1220 = b1206.dup() * b1219.dup();
builder.assert_zero(b1220.dup());
let b1221 = h37 - h9.dup();
let b1222 = h37 * b1221.dup();
let b1223 = b1206.dup() * b1222.dup();
builder.assert_zero(b1223.dup());
let b1224 = h37 - h41;
let b1225 = b375.dup() * b1224.dup();
builder.assert_zero(b1225.dup());
let b1226 = h43 - h42;
let b1227 = b375.dup() * b1226.dup();
builder.assert_zero(b1227.dup());
let b1228 = h44 * h41;
let b1229 = h46 * h42;
let b1230 = b1229.dup() * h81.dup();
let b1231 = b1228.dup() + b1230.dup();
let b1232 = h45 - b1231.dup();
let b1233 = b375.dup() * b1232.dup();
builder.assert_zero(b1233.dup());
let b1234 = h44 + h46;
let b1235 = b1234.dup() * b1166.dup();
let b1236 = b1235.dup() - b1228.dup();
let b1237 = b1236.dup() - b1229.dup();
let b1238 = h47 - b1237.dup();
let b1239 = b375.dup() * b1238.dup();
builder.assert_zero(b1239.dup());
let b1240 = b128.dup() * b142.dup();
let b1241 = b339.dup() + b1240.dup();
let b1242 = b1241.dup() + b333.dup();
let h87: AB::Expr = AB::Expr::from(Felt::from_u64(4294967295));
let h88: AB::Expr = AB::Expr::from(Felt::from_u64(65536));
let b1245 = h40 * h88.dup();
let b1246 = b1245.dup() + h82;
let b1247 = h87.dup() - b1246.dup();
let b1248 = h76 * b1247.dup();
let b1249 = h9.dup() - b1248.dup();
let b1250 = h25 * h88.dup();
let b1251 = b1250.dup() + h23;
let b1252 = b1249.dup() * b1251.dup();
let b1253 = b1242.dup() * b1252.dup();
builder.assert_zero(b1253.dup());
let b1254 = b128.dup() * b124.dup();
let b1255 = b339.dup() + b1254.dup();
let b1256 = b1255.dup() + b331.dup();
let b1257 = b1256.dup() + b1240.dup();
let b1258 = b1257.dup() + b333.dup();
let b1259 = h37 - b1251.dup();
let b1260 = b1258.dup() * b1259.dup();
builder.assert_zero(b1260.dup());
let b1261 = h43 - b1246.dup();
let b1262 = b1258.dup() * b1261.dup();
builder.assert_zero(b1262.dup());
let b1263 = h40 * h86.dup();
let h89: AB::Expr = AB::Expr::from(Felt::from_u64(4294967296));
let b1265 = h82 * h89.dup();
let b1266 = b1265.dup() + b1251.dup();
let b1267 = b1263.dup() + b1266.dup();
let b1268 = h41 - b1267.dup();
let b1269 = b339.dup() * b1268.dup();
builder.assert_zero(b1269.dup());
let b1270 = b1166.dup() - b1266.dup();
let b1271 = b1254.dup() * b1270.dup();
builder.assert_zero(b1271.dup());
let b1272 = b1166.dup() + h44;
let b1273 = b1272.dup() - b1266.dup();
let b1274 = b331.dup() * b1273.dup();
builder.assert_zero(b1274.dup());
let b1275 = b1254.dup() + b331.dup();
let b1276 = b1275.dup() * h40;
builder.assert_zero(b1276.dup());
let b1277 = b128.dup() * b183.dup();
let b1278 = h41 + h43;
let b1279 = h37 * h89.dup();
let b1280 = b1278.dup() - b1279.dup();
let b1281 = h42 - b1280.dup();
let b1282 = b1277.dup() * b1281.dup();
builder.assert_zero(b1282.dup());
let b1283 = b1277.dup() * b1222.dup();
builder.assert_zero(b1283.dup());
let b1284 = h43 - b1251.dup();
let b1285 = b1277.dup() * b1284.dup();
builder.assert_zero(b1285.dup());
let b1286 = b732.dup() - b1267.dup();
let b1287 = b1240.dup() * b1286.dup();
builder.assert_zero(b1287.dup());
let b1288 = b732.dup() + h44;
let b1289 = b1288.dup() - b1267.dup();
let b1290 = b333.dup() * b1289.dup();
builder.assert_zero(b1290.dup());
let b1291 = b128.dup() * b135.dup();
let b1292 = h41 * h43;
let b1293 = b1292.dup() + h37;
let b1294 = h42 - b1293.dup();
let b1295 = b1291.dup() * b1294.dup();
builder.assert_zero(b1295.dup());
let b1296 = h42 - h43;
let b1297 = b1296.dup() - b1251.dup();
let b1298 = b1291.dup() * b1297.dup();
builder.assert_zero(b1298.dup());
let b1299 = h41 - h37;
let b1300 = b1246.dup() + h9.dup();
let b1301 = b1299.dup() - b1300.dup();
let b1302 = b1291.dup() * b1301.dup();
builder.assert_zero(b1302.dup());
let b1303 = h37 - b1246.dup();
let b1304 = b130.dup() * b1303.dup();
builder.assert_zero(b1304.dup());
let b1305 = b130.dup() * b1284.dup();
builder.assert_zero(b1305.dup());
let h90 = m0[22];
let b1307 = h0.dup() * h90;
builder.assert_zero(b1307.dup());
let b1308 = h90 - h9.dup();
let b1309 = h90 * b1308.dup();
builder.assert_zero(b1309.dup());
let h91 = m1[22];
let b1311 = h91 - h9.dup();
let b1312 = b137.dup() * b1311.dup();
builder.assert_zero(b1312.dup());
let b1313 = b152.dup() * b1311.dup();
builder.assert_zero(b1313.dup());
let b1314 = h16 - h9.dup();
let b1315 = h16 * b1314.dup();
builder.assert_zero(b1315.dup());
let b1316 = h15 - h9.dup();
let b1317 = h15 * b1316.dup();
builder.assert_zero(b1317.dup());
let b1318 = h12 - h9.dup();
let b1319 = h12 * b1318.dup();
builder.assert_zero(b1319.dup());
let b1320 = h11 - h9.dup();
let b1321 = h11 * b1320.dup();
builder.assert_zero(b1321.dup());
let b1322 = h10 - h9.dup();
let b1323 = h10 * b1322.dup();
builder.assert_zero(b1323.dup());
let b1324 = h38 - h9.dup();
let b1325 = h38 * b1324.dup();
builder.assert_zero(b1325.dup());
let b1326 = h39 - h9.dup();
let b1327 = h39 * b1326.dup();
builder.assert_zero(b1327.dup());
let b1328 = b127.dup() * h10;
let b1329 = h14 - b1328.dup();
builder.assert_zero(b1329.dup());
let b1330 = h39 * h38;
let b1331 = h13 - b1330.dup();
builder.assert_zero(b1331.dup());
let b1332 = h39 - h13;
let b1333 = b1332.dup() - h14;
let b1334 = b1333.dup() * h16;
builder.assert_zero(b1334.dup());
let b1335 = h13 * h16;
builder.assert_zero(b1335.dup());
let b1336 = h13 * h15;
builder.assert_zero(b1336.dup());
let b1337 = b206.dup() * b630.dup();
builder.assert_zero(b1337.dup());
let b1338 = b214.dup() * h82;
builder.assert_zero(b1338.dup());
let b1339 = b214.dup() * h40;
builder.assert_zero(b1339.dup());
let b1340 = b214.dup() * h76;
builder.assert_zero(b1340.dup());
let b1341 = b214.dup() * h77;
builder.assert_zero(b1341.dup());
let b1342 = b208.dup() * b627.dup();
builder.assert_zero(b1342.dup());
let b1343 = h82 - h9.dup();
let b1344 = b208.dup() * b1343.dup();
builder.assert_zero(b1344.dup());
let b1345 = h40 * h41;
let b1346 = b49.dup() * b1345.dup();
builder.assert_zero(b1346.dup());
let h92 = m1[29];
let h93 = m1[11];
let b1349 = h92 * h93;
let h94 = m1[10];
let b1351 = h9.dup() - h94;
let h95 = m1[9];
let b1353 = b1351.dup() * h95;
let b1354 = b1349.dup() * b1353.dup();
let b1355 = b49.dup() * b1354.dup();
let h96 = m1[14];
let b1357 = h96 - h19;
let b1358 = b1355.dup() * b1357.dup();
builder.assert_zero(b1358.dup());
let h97 = m1[15];
let b1360 = h97 - h21;
let b1361 = b1355.dup() * b1360.dup();
builder.assert_zero(b1361.dup());
let h98 = m1[16];
let b1363 = h98 - h23;
let b1364 = b1355.dup() * b1363.dup();
builder.assert_zero(b1364.dup());
let h99 = m1[17];
let b1366 = h99 - h25;
let b1367 = b1355.dup() * b1366.dup();
builder.assert_zero(b1367.dup());
let h100 = m1[18];
let b1369 = h100 - h82;
let b1370 = b1355.dup() * b1369.dup();
builder.assert_zero(b1370.dup());
let b1371 = h94 * h95;
let b1372 = b1349.dup() * b1371.dup();
let b1373 = b1372.dup() - h9.dup();
let b1374 = b157.dup() * b1373.dup();
let b1375 = h7.dup() * b1374.dup();
builder.assert_zero(b1375.dup());
let b1376 = h7.dup() * h90;
let h101 = m0[23];
let h102 = m1[23];
let b1379 = h101 - h102;
let b1380 = b1379.dup() - h9.dup();
let b1381 = b1379.dup() * b1380.dup();
let b1382 = b1376.dup() * b1381.dup();
builder.assert_zero(b1382.dup());
let b1383 = h9.dup() - b309.dup();
let b1384 = b1383.dup() * h19;
let b1385 = b1379.dup() * b1384.dup();
let b1386 = b1376.dup() * b1385.dup();
builder.assert_zero(b1386.dup());
let b1387 = b137.dup() + b152.dup();
let b1388 = b1387.dup() + b309.dup();
let b1389 = b1388.dup() * b1380.dup();
builder.assert_zero(b1389.dup());
let b1390 = h9.dup() - h95;
let b1391 = b1351.dup() * b1390.dup();
let b1392 = b1349.dup() * b1391.dup();
let b1393 = h94 * b1390.dup();
let b1394 = b1349.dup() * b1393.dup();
let b1395 = b1392.dup() + b1394.dup();
let b1396 = b1379.dup() * b1395.dup();
let b1397 = h7.dup() * b1396.dup();
builder.assert_zero(b1397.dup());
let b1398 = b49.dup() * h101;
builder.assert_zero(b1398.dup());
let b1399 = h90 * h91;
let b1400 = h9.dup() - b1379.dup();
let b1401 = b1399.dup() * b1400.dup();
let b1402 = b1388.dup() + b1401.dup();
let h103: AB::Expr = AB::Expr::from(Felt::from_u64(128));
let b1404 = h96 * h103.dup();
let b1405 = h19 - b1404.dup();
let h104 = m1[13];
let b1407 = h104 + h104;
let h105 = m1[12];
let b1409 = b1407.dup() + h105;
let b1410 = b1409.dup() + b1409.dup();
let b1411 = b1410.dup() + h93;
let b1412 = b1411.dup() + b1411.dup();
let b1413 = b1412.dup() + h94;
let b1414 = b1413.dup() + b1413.dup();
let b1415 = b1414.dup() + h95;
let b1416 = b1415.dup() + b1415.dup();
let h106 = m1[8];
let b1418 = b1416.dup() + h106;
let b1419 = b1418.dup() + b1418.dup();
let h107 = m1[7];
let b1421 = b1419.dup() + h107;
let b1422 = b1405.dup() - b1421.dup();
let b1423 = b1402.dup() * b1422.dup();
let b1424 = h7.dup() * b1423.dup();
builder.assert_zero(b1424.dup());
let b1425 = b1395.dup() * h19;
let b1426 = h90 * b1425.dup();
let b1427 = h7.dup() * b1426.dup();
builder.assert_zero(b1427.dup());
let h108 = m1[24];
let b1429 = b1387.dup() * h108;
builder.assert_zero(b1429.dup());
let b1430 = b1379.dup() - b309.dup();
let b1431 = b1430.dup() * h108;
let b1432 = h90 * b1431.dup();
let b1433 = h7.dup() * b1432.dup();
builder.assert_zero(b1433.dup());
let b1434 = h9.dup() - b1430.dup();
let h109 = m0[24];
let b1436 = h109 + h9.dup();
let b1437 = h108 - b1436.dup();
let b1438 = b1434.dup() * b1437.dup();
let b1439 = h91 * b1438.dup();
let b1440 = h90 * b1439.dup();
let b1441 = h7.dup() * b1440.dup();
builder.assert_zero(b1441.dup());
let b1442 = h109 - h9.dup();
let b1443 = h109 * b1442.dup();
let b1444 = h109 - h83.dup();
let b1445 = b1443.dup() * b1444.dup();
let b1446 = h109 - h30.dup();
let b1447 = b1445.dup() * b1446.dup();
let h110: AB::Expr = AB::Expr::from(Felt::from_u64(4));
let b1449 = h109 - h110.dup();
let b1450 = b1447.dup() * b1449.dup();
let h111: AB::Expr = AB::Expr::from(Felt::from_u64(5));
let b1452 = h109 - h111.dup();
let b1453 = b1450.dup() * b1452.dup();
let h112: AB::Expr = AB::Expr::from(Felt::from_u64(6));
let b1455 = h109 - h112.dup();
let b1456 = b1453.dup() * b1455.dup();
let b1457 = h109 - h81.dup();
let b1458 = b1456.dup() * b1457.dup();
let b1459 = h109 - h80.dup();
let b1460 = b1458.dup() * b1459.dup();
builder.assert_zero(b1460.dup());
let h113 = m0[25];
let b1462 = h113 - h9.dup();
let b1463 = h113 * b1462.dup();
builder.assert_zero(b1463.dup());
let h114 = m0[26];
let b1465 = h114 - h9.dup();
let b1466 = h114 * b1465.dup();
builder.assert_zero(b1466.dup());
let h115 = m0[27];
let b1468 = h115 - h9.dup();
let b1469 = h115 * b1468.dup();
builder.assert_zero(b1469.dup());
let b1470 = h9.dup() - h113;
let b1471 = b1470.dup() * h114;
let b1472 = b1471.dup() * h115;
let b1473 = h9.dup() - h114;
let b1474 = b1470.dup() * b1473.dup();
let b1475 = b1474.dup() * h115;
let b1476 = b1472.dup() + b1475.dup();
let b1477 = h9.dup() - h115;
let b1478 = b1471.dup() * b1477.dup();
let b1479 = b1476.dup() + b1478.dup();
let b1480 = b1479.dup() + h113;
let b1481 = b1387.dup() - b1480.dup();
builder.assert_zero(b1481.dup());
let b1482 = h9.dup() - b1387.dup();
let b1483 = h113 + h114;
let b1484 = b1483.dup() + h115;
let b1485 = b1482.dup() * b1484.dup();
builder.assert_zero(b1485.dup());
let b1486 = b1479.dup() * h82;
builder.assert_zero(b1486.dup());
let b1487 = b1479.dup() * h40;
builder.assert_zero(b1487.dup());
let b1488 = b1479.dup() * h76;
builder.assert_zero(b1488.dup());
let b1489 = b1479.dup() * h77;
builder.assert_zero(b1489.dup());
let b1490 = b1476.dup() * h23;
builder.assert_zero(b1490.dup());
let b1491 = b1476.dup() * h25;
builder.assert_zero(b1491.dup());
let b1492 = b1472.dup() * h21;
builder.assert_zero(b1492.dup());
let h116 = m1[6];
let h117 = m0[6];
let b1495 = h116 - h117;
let b1496 = h90 * b1495.dup();
let b1497 = h7.dup() * b1496.dup();
builder.assert_zero(b1497.dup());
let b1498 = h117 + h83.dup();
let b1499 = h116 - b1498.dup();
let b1500 = b152.dup() * b1499.dup();
builder.assert_zero(b1500.dup());
let b1501 = b157.dup() * h117;
builder.assert_zero(b1501.dup());
let b1502 = b134.dup() * h14;
let b1503 = h10 * h13;
let b1504 = b1502.dup() + b1503.dup();
let b1505 = b34.dup() + b214.dup();
let b1506 = b1504.dup() + b1505.dup();
let b1507 = b42.dup() + b26.dup();
let b1508 = b1506.dup() + b1507.dup();
let b1509 = h90 + b1508.dup();
let b1510 = b1509.dup() - h9.dup();
builder.assert_zero(b1510.dup());
let b1511 = b157.dup() - h9.dup();
let b1512 = h27.dup() * b1511.dup();
builder.assert_zero(b1512.dup());
let h118: AB::Expr = builder.public_values()[0].into();
let b1514 = h41 - h118.dup();
let b1515 = h0.dup() * b1514.dup();
builder.assert_zero(b1515.dup());
let h119: AB::Expr = builder.public_values()[1].into();
let b1517 = h42 - h119.dup();
let b1518 = h0.dup() * b1517.dup();
builder.assert_zero(b1518.dup());
let h120: AB::Expr = builder.public_values()[2].into();
let b1520 = h44 - h120.dup();
let b1521 = h0.dup() * b1520.dup();
builder.assert_zero(b1521.dup());
let h121: AB::Expr = builder.public_values()[3].into();
let b1523 = h46 - h121.dup();
let b1524 = h0.dup() * b1523.dup();
builder.assert_zero(b1524.dup());
let h122: AB::Expr = builder.public_values()[4].into();
let b1526 = h48 - h122.dup();
let b1527 = h0.dup() * b1526.dup();
builder.assert_zero(b1527.dup());
let h123: AB::Expr = builder.public_values()[5].into();
let b1529 = h50 - h123.dup();
let b1530 = h0.dup() * b1529.dup();
builder.assert_zero(b1530.dup());
let h124: AB::Expr = builder.public_values()[6].into();
let b1532 = h52 - h124.dup();
let b1533 = h0.dup() * b1532.dup();
builder.assert_zero(b1533.dup());
let h125: AB::Expr = builder.public_values()[7].into();
let b1535 = h54 - h125.dup();
let b1536 = h0.dup() * b1535.dup();
builder.assert_zero(b1536.dup());
let h126: AB::Expr = builder.public_values()[8].into();
let b1538 = h56 - h126.dup();
let b1539 = h0.dup() * b1538.dup();
builder.assert_zero(b1539.dup());
let h127: AB::Expr = builder.public_values()[9].into();
let b1541 = h58 - h127.dup();
let b1542 = h0.dup() * b1541.dup();
builder.assert_zero(b1542.dup());
let h128: AB::Expr = builder.public_values()[10].into();
let b1544 = h60 - h128.dup();
let b1545 = h0.dup() * b1544.dup();
builder.assert_zero(b1545.dup());
let h129: AB::Expr = builder.public_values()[11].into();
let b1547 = h62 - h129.dup();
let b1548 = h0.dup() * b1547.dup();
builder.assert_zero(b1548.dup());
let h130: AB::Expr = builder.public_values()[12].into();
let b1550 = h64 - h130.dup();
let b1551 = h0.dup() * b1550.dup();
builder.assert_zero(b1551.dup());
let h131: AB::Expr = builder.public_values()[13].into();
let b1553 = h66 - h131.dup();
let b1554 = h0.dup() * b1553.dup();
builder.assert_zero(b1554.dup());
let h132: AB::Expr = builder.public_values()[14].into();
let b1556 = h68 - h132.dup();
let b1557 = h0.dup() * b1556.dup();
builder.assert_zero(b1557.dup());
let h133: AB::Expr = builder.public_values()[15].into();
let b1559 = h70 - h133.dup();
let b1560 = h0.dup() * b1559.dup();
builder.assert_zero(b1560.dup());
let h134: AB::Expr = builder.public_values()[16].into();
let b1562 = h41 - h134.dup();
let b1563 = h27.dup() * b1562.dup();
builder.assert_zero(b1563.dup());
let h135: AB::Expr = builder.public_values()[17].into();
let b1565 = h42 - h135.dup();
let b1566 = h27.dup() * b1565.dup();
builder.assert_zero(b1566.dup());
let h136: AB::Expr = builder.public_values()[18].into();
let b1568 = h44 - h136.dup();
let b1569 = h27.dup() * b1568.dup();
builder.assert_zero(b1569.dup());
let h137: AB::Expr = builder.public_values()[19].into();
let b1571 = h46 - h137.dup();
let b1572 = h27.dup() * b1571.dup();
builder.assert_zero(b1572.dup());
let h138: AB::Expr = builder.public_values()[20].into();
let b1574 = h48 - h138.dup();
let b1575 = h27.dup() * b1574.dup();
builder.assert_zero(b1575.dup());
let h139: AB::Expr = builder.public_values()[21].into();
let b1577 = h50 - h139.dup();
let b1578 = h27.dup() * b1577.dup();
builder.assert_zero(b1578.dup());
let h140: AB::Expr = builder.public_values()[22].into();
let b1580 = h52 - h140.dup();
let b1581 = h27.dup() * b1580.dup();
builder.assert_zero(b1581.dup());
let h141: AB::Expr = builder.public_values()[23].into();
let b1583 = h54 - h141.dup();
let b1584 = h27.dup() * b1583.dup();
builder.assert_zero(b1584.dup());
let h142: AB::Expr = builder.public_values()[24].into();
let b1586 = h56 - h142.dup();
let b1587 = h27.dup() * b1586.dup();
builder.assert_zero(b1587.dup());
let h143: AB::Expr = builder.public_values()[25].into();
let b1589 = h58 - h143.dup();
let b1590 = h27.dup() * b1589.dup();
builder.assert_zero(b1590.dup());
let h144: AB::Expr = builder.public_values()[26].into();
let b1592 = h60 - h144.dup();
let b1593 = h27.dup() * b1592.dup();
builder.assert_zero(b1593.dup());
let h145: AB::Expr = builder.public_values()[27].into();
let b1595 = h62 - h145.dup();
let b1596 = h27.dup() * b1595.dup();
builder.assert_zero(b1596.dup());
let h146: AB::Expr = builder.public_values()[28].into();
let b1598 = h64 - h146.dup();
let b1599 = h27.dup() * b1598.dup();
builder.assert_zero(b1599.dup());
let h147: AB::Expr = builder.public_values()[29].into();
let b1601 = h66 - h147.dup();
let b1602 = h27.dup() * b1601.dup();
builder.assert_zero(b1602.dup());
let h148: AB::Expr = builder.public_values()[30].into();
let b1604 = h68 - h148.dup();
let b1605 = h27.dup() * b1604.dup();
builder.assert_zero(b1605.dup());
let h149: AB::Expr = builder.public_values()[31].into();
let b1607 = h70 - h149.dup();
let b1608 = h27.dup() * b1607.dup();
builder.assert_zero(b1608.dup());
let h150 = a0[0];
let e1611 = Into::<AB::ExprEF>::into(h150) * h0.dup();
builder.assert_zero_ext(e1611.dup());
let h151: AB::ExprEF = builder.permutation_randomness()[0].into();
let h152: AB::ExprEF = builder.permutation_randomness()[1].into();
let e1615 = h152.dup() * h152.dup();
let e1616 = e1615.dup() * h152.dup();
let e1617 = e1616.dup() * h152.dup();
let e1618 = e1617.dup() * h152.dup();
let e1619 = e1618.dup() * h152.dup();
let e1620 = e1619.dup() * h152.dup();
let e1621 = e1620.dup() * h152.dup();
let e1622 = e1621.dup() * h152.dup();
let e1623 = e1622.dup() * h152.dup();
let e1624 = e1623.dup() * h152.dup();
let e1625 = e1624.dup() * h152.dup();
let e1626 = e1625.dup() * h152.dup();
let e1627 = e1626.dup() * h152.dup();
let e1628 = e1627.dup() * h152.dup();
let e1629 = e1628.dup() * h152.dup();
let h153: AB::Expr = AB::Expr::from(Felt::from_u64(18));
let e1632 = e1629.dup() * h153.dup();
let e1633 = h151.dup() + e1632.dup();
let e1636 = h152.dup() * AB::Expr::from(h117);
let e1637 = e1636.dup() + AB::Expr::from(h116);
let e1638 = e1633.dup() + e1637.dup();
let e1639 = e1638.dup() - h9.dup();
let b1640 = b141.dup() + b206.dup();
let b1641 = b1640.dup() + b137.dup();
let b1642 = b1641.dup() + b214.dup();
let e1644 = e1639.dup() * b1642.dup();
let e1645 = e1644.dup() + h9.dup();
let e1646 = e1637.dup() + e1615.dup();
let e1647 = e1633.dup() + e1646.dup();
let e1648 = e1647.dup() - h9.dup();
let e1650 = e1648.dup() * b144.dup();
let e1651 = e1645.dup() + e1650.dup();
let e1653 = e1616.dup() * AB::Expr::from(h2);
let e1654 = e1637.dup() + e1653.dup();
let e1656 = e1617.dup() * AB::Expr::from(h82);
let e1657 = e1654.dup() + e1656.dup();
let e1659 = e1618.dup() * AB::Expr::from(h40);
let e1660 = e1657.dup() + e1659.dup();
let e1661 = e1633.dup() + e1660.dup();
let e1663 = e1619.dup() * AB::Expr::from(h3);
let e1665 = e1620.dup() * AB::Expr::from(h4);
let e1666 = e1663.dup() + e1665.dup();
let e1668 = e1621.dup() * AB::Expr::from(h5);
let e1669 = e1666.dup() + e1668.dup();
let e1671 = e1622.dup() * AB::Expr::from(h6);
let e1672 = e1669.dup() + e1671.dup();
let e1673 = e1661.dup() + e1672.dup();
let e1674 = e1673.dup() - h9.dup();
let e1676 = e1674.dup() * b34.dup();
let e1677 = e1651.dup() + e1676.dup();
let e1679 = e1617.dup() * AB::Expr::from(h72);
let e1680 = e1654.dup() + e1679.dup();
let e1682 = e1618.dup() * AB::Expr::from(h74);
let e1683 = e1680.dup() + e1682.dup();
let e1684 = e1633.dup() + e1683.dup();
let e1685 = e1684.dup() + e1672.dup();
let e1686 = e1685.dup() - h9.dup();
let e1688 = e1686.dup() * b44.dup();
let e1689 = e1677.dup() + e1688.dup();
let e1690 = h152.dup() * AB::Expr::from(h116);
let e1691 = e1690.dup() + AB::Expr::from(h117);
let e1692 = e1615.dup() * AB::Expr::from(h40);
let e1693 = e1691.dup() + e1692.dup();
let e1694 = e1633.dup() + e1693.dup();
let e1695 = e1694.dup() - h9.dup();
let b1696 = h9.dup() - h76;
let b1697 = b1696.dup() - h77;
let b1698 = b49.dup() * b1697.dup();
let e1700 = e1695.dup() * b1698.dup();
let e1701 = e1689.dup() + e1700.dup();
let e1703 = e1616.dup() * AB::Expr::from(h17);
let e1704 = e1693.dup() + e1703.dup();
let e1706 = e1617.dup() * AB::Expr::from(h75);
let e1707 = e1704.dup() + e1706.dup();
let e1709 = e1618.dup() * AB::Expr::from(h79);
let e1710 = e1707.dup() + e1709.dup();
let e1711 = e1633.dup() + e1710.dup();
let e1713 = e1619.dup() * AB::Expr::from(h18);
let e1715 = e1620.dup() * AB::Expr::from(h20);
let e1716 = e1713.dup() + e1715.dup();
let e1718 = e1621.dup() * AB::Expr::from(h22);
let e1719 = e1716.dup() + e1718.dup();
let e1721 = e1622.dup() * AB::Expr::from(h24);
let e1722 = e1719.dup() + e1721.dup();
let e1723 = e1711.dup() + e1722.dup();
let e1724 = e1723.dup() - h9.dup();
let e1726 = e1724.dup() * b598.dup();
let e1727 = e1701.dup() + e1726.dup();
let e1729 = h152.dup() * AB::Expr::from(h97);
let e1730 = e1729.dup() + AB::Expr::from(h116);
let e1731 = e1633.dup() + e1730.dup();
let e1732 = e1729.dup() + AB::Expr::from(h117);
let e1733 = e1633.dup() + e1732.dup();
let e1734 = e1731.dup() * e1733.dup();
let e1735 = e1734.dup() - h9.dup();
let e1737 = e1735.dup() * b152.dup();
let e1738 = e1727.dup() + e1737.dup();
let h154: AB::Expr = AB::Expr::from(Felt::from_u64(22));
let e1741 = e1629.dup() * h154.dup();
let e1742 = h151.dup() + e1741.dup();
let e1744 = e1742.dup() + AB::Expr::from(h23);
let e1746 = e1742.dup() + AB::Expr::from(h25);
let e1747 = e1744.dup() * e1746.dup();
let e1748 = e1742.dup() + AB::Expr::from(h82);
let e1749 = e1747.dup() * e1748.dup();
let e1750 = e1742.dup() + AB::Expr::from(h40);
let e1751 = e1749.dup() * e1750.dup();
let e1752 = e1751.dup() - h9.dup();
let e1754 = e1752.dup() * b128.dup();
let e1755 = e1738.dup() + e1754.dup();
let e1757 = e1629.dup() * h30.dup();
let e1758 = h151.dup() + e1757.dup();
let e1759 = e1758.dup() + AB::Expr::from(h25);
let e1760 = h152.dup() * AB::Expr::from(h82);
let e1761 = e1759.dup() + e1760.dup();
let e1762 = e1761.dup() + e1692.dup();
let e1764 = e1616.dup() * AB::Expr::from(h76);
let e1765 = e1762.dup() + e1764.dup();
let e1767 = e1758.dup() + AB::Expr::from(h37);
let e1769 = h152.dup() * AB::Expr::from(h43);
let e1770 = e1767.dup() + e1769.dup();
let e1772 = e1615.dup() * AB::Expr::from(h45);
let e1773 = e1770.dup() + e1772.dup();
let e1775 = e1616.dup() * AB::Expr::from(h47);
let e1776 = e1773.dup() + e1775.dup();
let e1777 = e1765.dup() * e1776.dup();
let e1778 = e1777.dup() - h9.dup();
let e1780 = e1778.dup() * b530.dup();
let e1781 = e1755.dup() + e1780.dup();
let e1783 = e1742.dup() + AB::Expr::from(h26);
let e1784 = e1783.dup() - h9.dup();
let e1785 = e1784.dup() + h9.dup();
let e1786 = e1781.dup() * e1785.dup();
let h155 = a1[0];
let h156 = a0[1];
let e1789 = Into::<AB::ExprEF>::into(h150) + Into::<AB::ExprEF>::into(h156);
let h157 = a0[2];
let e1791 = e1789.dup() + Into::<AB::ExprEF>::into(h157);
let h158 = a0[3];
let e1793 = e1791.dup() + Into::<AB::ExprEF>::into(h158);
let e1794 = Into::<AB::ExprEF>::into(h155) - e1793.dup();
let h159: AB::ExprEF = builder.permutation_values()[0].clone().into();
let e1796 = e1794.dup() + h159.dup();
let e1797 = e1786.dup() * e1796.dup();
let e1798 = AB::ExprEF::from(b1642.dup()) + b144.dup();
let e1799 = e1798.dup() + b34.dup();
let e1800 = e1799.dup() + b44.dup();
let e1801 = e1800.dup() - b1698.dup();
let e1802 = e1801.dup() - b598.dup();
let e1803 = e1733.dup() - e1731.dup();
let e1804 = e1803.dup() * b152.dup();
let e1805 = e1802.dup() + e1804.dup();
let e1807 = e1746.dup() * h85.dup();
let e1808 = e1807.dup() - e1744.dup();
let e1809 = e1808.dup() * e1748.dup();
let e1810 = e1809.dup() - e1747.dup();
let e1811 = e1810.dup() * e1750.dup();
let e1812 = e1811.dup() - e1749.dup();
let e1813 = e1812.dup() * b128.dup();
let e1814 = e1805.dup() + e1813.dup();
let e1815 = e1776.dup() * h85.dup();
let e1816 = e1815.dup() + e1765.dup();
let e1817 = e1816.dup() * b530.dup();
let e1818 = e1814.dup() + e1817.dup();
let e1819 = e1818.dup() * e1785.dup();
let h160 = m0[49];
let e1822 = e1781.dup() * AB::Expr::from(h160);
let e1823 = e1819.dup() + e1822.dup();
let e1824 = e1797.dup() - e1823.dup();
builder.assert_zero_ext(e1824.dup());
let e1826 = e1629.dup() * h83.dup();
let e1827 = h151.dup() + e1826.dup();
let e1829 = e1827.dup() + AB::Expr::from(h19);
let e1831 = h152.dup() * AB::Expr::from(h21);
let e1832 = e1829.dup() + e1831.dup();
let e1833 = e1615.dup() * AB::Expr::from(h23);
let e1834 = e1832.dup() + e1833.dup();
let e1835 = e1616.dup() * AB::Expr::from(h25);
let e1836 = e1834.dup() + e1835.dup();
let e1837 = e1617.dup() * AB::Expr::from(h116);
let e1838 = e1836.dup() + e1837.dup();
let e1839 = e1838.dup() + e1618.dup();
let e1840 = e1827.dup() + AB::Expr::from(h82);
let e1841 = h152.dup() * AB::Expr::from(h40);
let e1842 = e1840.dup() + e1841.dup();
let e1843 = e1615.dup() * AB::Expr::from(h76);
let e1844 = e1842.dup() + e1843.dup();
let e1846 = e1616.dup() * AB::Expr::from(h77);
let e1847 = e1844.dup() + e1846.dup();
let e1848 = e1847.dup() + e1837.dup();
let e1849 = e1839.dup() * e1848.dup();
let e1850 = e1849.dup() - h9.dup();
let e1852 = e1850.dup() * b141.dup();
let e1853 = e1852.dup() + h9.dup();
let b1854 = h41 * h19;
let b1855 = b701.dup() * h82;
let b1856 = b1854.dup() + b1855.dup();
let e1858 = e1827.dup() + b1856.dup();
let b1859 = h41 * h21;
let b1860 = b701.dup() * h40;
let b1861 = b1859.dup() + b1860.dup();
let e1863 = h152.dup() * b1861.dup();
let e1864 = e1858.dup() + e1863.dup();
let b1865 = b701.dup() * h76;
let b1866 = b1202.dup() + b1865.dup();
let e1868 = e1615.dup() * b1866.dup();
let e1869 = e1864.dup() + e1868.dup();
let b1870 = h41 * h25;
let b1871 = b701.dup() * h77;
let b1872 = b1870.dup() + b1871.dup();
let e1874 = e1616.dup() * b1872.dup();
let e1875 = e1869.dup() + e1874.dup();
let e1876 = e1875.dup() + e1837.dup();
let e1877 = e1876.dup() - h9.dup();
let e1879 = e1877.dup() * b206.dup();
let e1880 = e1853.dup() + e1879.dup();
let e1881 = e1838.dup() + e1619.dup();
let e1882 = e1881.dup() - h9.dup();
let b1883 = b144.dup() + b208.dup();
let e1885 = e1882.dup() * b1883.dup();
let e1886 = e1880.dup() + e1885.dup();
let e1887 = e1838.dup() - h9.dup();
let b1888 = b214.dup() + b34.dup();
let b1889 = b1888.dup() + b26.dup();
let b1890 = b1889.dup() + b42.dup();
let e1892 = e1887.dup() * b1890.dup();
let e1893 = e1886.dup() + e1892.dup();
let b1894 = b1349.dup() * b1351.dup();
let b1895 = b1894.dup() * b1390.dup();
let b1896 = h9.dup() - b1895.dup();
let b1897 = b1894.dup() * h95;
let b1898 = b1896.dup() - b1897.dup();
let b1899 = b1349.dup() * h94;
let b1900 = b1899.dup() * b1390.dup();
let b1901 = b1898.dup() - b1900.dup();
let b1902 = b1899.dup() * h95;
let b1903 = b1901.dup() - b1902.dup();
let e1905 = e1618.dup() * b1903.dup();
let e1906 = e1838.dup() + e1905.dup();
let e1907 = e1619.dup() * AB::Expr::from(h82);
let e1908 = e1906.dup() + e1907.dup();
let e1909 = e1908.dup() - h9.dup();
let e1911 = e1909.dup() * b49.dup();
let e1912 = e1893.dup() + e1911.dup();
let h161: AB::Expr = AB::Expr::from(Felt::from_u64(19));
let e1915 = e1629.dup() * h161.dup();
let e1916 = h151.dup() + e1915.dup();
let e1917 = e1916.dup() + AB::Expr::from(h116);
let b1918 = h101 - h9.dup();
let e1920 = h152.dup() * b1918.dup();
let e1921 = e1917.dup() + e1920.dup();
let e1922 = e1615.dup() * AB::Expr::from(h21);
let e1923 = e1921.dup() + e1922.dup();
let b1924 = h101 - h83.dup();
let e1926 = h152.dup() * b1924.dup();
let e1927 = e1917.dup() + e1926.dup();
let e1928 = e1927.dup() + e1833.dup();
let e1929 = e1923.dup() * e1928.dup();
let b1930 = h101 - h30.dup();
let e1932 = h152.dup() * b1930.dup();
let e1933 = e1917.dup() + e1932.dup();
let e1934 = e1615.dup() * AB::Expr::from(h25);
let e1935 = e1933.dup() + e1934.dup();
let e1936 = e1929.dup() * e1935.dup();
let b1937 = h101 - h110.dup();
let e1939 = h152.dup() * b1937.dup();
let e1940 = e1917.dup() + e1939.dup();
let e1941 = e1615.dup() * AB::Expr::from(h82);
let e1942 = e1940.dup() + e1941.dup();
let e1943 = e1936.dup() * e1942.dup();
let b1944 = h101 - h111.dup();
let e1946 = h152.dup() * b1944.dup();
let e1947 = e1917.dup() + e1946.dup();
let e1948 = e1947.dup() + e1692.dup();
let e1949 = e1943.dup() * e1948.dup();
let b1950 = h101 - h112.dup();
let e1952 = h152.dup() * b1950.dup();
let e1953 = e1917.dup() + e1952.dup();
let e1954 = e1953.dup() + e1843.dup();
let e1955 = e1949.dup() * e1954.dup();
let b1956 = h101 - h81.dup();
let e1958 = h152.dup() * b1956.dup();
let e1959 = e1917.dup() + e1958.dup();
let e1960 = e1615.dup() * AB::Expr::from(h77);
let e1961 = e1959.dup() + e1960.dup();
let e1962 = e1955.dup() * e1961.dup();
let e1963 = e1962.dup() - h9.dup();
let e1965 = e1963.dup() * AB::Expr::from(h113);
let e1966 = e1912.dup() + e1965.dup();
let e1967 = e1936.dup() - h9.dup();
let e1969 = e1967.dup() * b1478.dup();
let e1970 = e1966.dup() + e1969.dup();
let e1971 = e1923.dup() - h9.dup();
let e1973 = e1971.dup() * b1475.dup();
let e1974 = e1970.dup() + e1973.dup();
let e1975 = e1916.dup() + AB::Expr::from(h117);
let e1977 = h152.dup() * AB::Expr::from(h101);
let e1978 = e1975.dup() + e1977.dup();
let b1979 = b309.dup() * h37;
let b1980 = b1404.dup() + b1421.dup();
let b1981 = b1383.dup() * b1980.dup();
let b1982 = b1979.dup() + b1981.dup();
let e1984 = e1615.dup() * b1982.dup();
let e1985 = e1978.dup() + e1984.dup();
let e1986 = e1985.dup() - h9.dup();
let b1987 = h90 * b1379.dup();
let e1989 = e1986.dup() * b1987.dup();
let e1990 = e1974.dup() + e1989.dup();
let e1991 = e1990.dup() * Into::<AB::ExprEF>::into(h156);
let e1992 = e1848.dup() + e1839.dup();
let e1993 = e1992.dup() * b141.dup();
let e1994 = e1993.dup() + b206.dup();
let e1995 = e1994.dup() + b1883.dup();
let e1996 = e1995.dup() + b1890.dup();
let e1997 = e1996.dup() - b49.dup();
let e1998 = e1928.dup() + e1923.dup();
let e1999 = e1998.dup() * e1935.dup();
let e2000 = e1999.dup() + e1929.dup();
let e2001 = e2000.dup() * e1942.dup();
let e2002 = e2001.dup() + e1936.dup();
let e2003 = e2002.dup() * e1948.dup();
let e2004 = e2003.dup() + e1943.dup();
let e2005 = e2004.dup() * e1954.dup();
let e2006 = e2005.dup() + e1949.dup();
let e2007 = e2006.dup() * e1961.dup();
let e2008 = e2007.dup() + e1955.dup();
let e2009 = e2008.dup() * AB::Expr::from(h113);
let e2010 = e1997.dup() + e2009.dup();
let e2011 = e2000.dup() * b1478.dup();
let e2012 = e2010.dup() + e2011.dup();
let e2013 = e2012.dup() + b1475.dup();
let e2014 = e2013.dup() - b1987.dup();
let e2015 = e1991.dup() - e2014.dup();
builder.assert_zero_ext(e2015.dup());
let e2017 = e1629.dup() * h111.dup();
let e2018 = h151.dup() + e2017.dup();
let e2019 = e2018.dup() + AB::Expr::from(h116);
let e2020 = e1615.dup() * AB::Expr::from(h19);
let e2021 = e1616.dup() * AB::Expr::from(h21);
let e2022 = e2020.dup() + e2021.dup();
let e2023 = e1617.dup() * AB::Expr::from(h23);
let e2024 = e2022.dup() + e2023.dup();
let e2025 = e1618.dup() * AB::Expr::from(h25);
let e2026 = e2024.dup() + e2025.dup();
let e2027 = e2026.dup() + e1907.dup();
let e2028 = e1620.dup() * AB::Expr::from(h40);
let e2029 = e2027.dup() + e2028.dup();
let e2030 = e1621.dup() * AB::Expr::from(h76);
let e2031 = e2029.dup() + e2030.dup();
let e2032 = e1622.dup() * AB::Expr::from(h77);
let e2033 = e2031.dup() + e2032.dup();
let h162: AB::Expr = AB::Expr::from(Felt::from_u64(87));
let e2036 = e1624.dup() * h162.dup();
let e2037 = e2033.dup() + e2036.dup();
let e2038 = e2019.dup() + e2037.dup();
let e2039 = e2038.dup() - h9.dup();
let e2040 = e2039.dup() * b141.dup();
let e2041 = e2040.dup() + h9.dup();
let h163: AB::Expr = AB::Expr::from(Felt::from_u64(84));
let e2044 = e1624.dup() * h163.dup();
let e2045 = e2033.dup() + e2044.dup();
let e2046 = e2019.dup() + e2045.dup();
let e2047 = e2046.dup() - h9.dup();
let e2048 = e2047.dup() * b206.dup();
let e2049 = e2041.dup() + e2048.dup();
let h164: AB::Expr = AB::Expr::from(Felt::from_u64(85));
let e2052 = e1624.dup() * h164.dup();
let e2053 = e2033.dup() + e2052.dup();
let e2054 = e2019.dup() + e2053.dup();
let e2055 = e2054.dup() - h9.dup();
let e2056 = e2055.dup() * b144.dup();
let e2057 = e2049.dup() + e2056.dup();
let e2058 = e2019.dup() + e2033.dup();
let e2059 = e2058.dup() - h9.dup();
let e2061 = e2059.dup() * b137.dup();
let e2062 = e2057.dup() + e2061.dup();
let h165: AB::Expr = AB::Expr::from(Felt::from_u64(108));
let e2065 = e1624.dup() * h165.dup();
let e2066 = e2033.dup() + e2065.dup();
let e2067 = e2019.dup() + e2066.dup();
let h166: AB::Expr = AB::Expr::from(Felt::from_u64(13));
let e2070 = e1629.dup() * h166.dup();
let e2071 = h151.dup() + e2070.dup();
let h167: AB::Expr = AB::Expr::from(Felt::from_u64(4294967294));
let e2074 = h152.dup() * h167.dup();
let e2075 = e2074.dup() + AB::Expr::from(h17);
let e2077 = e1615.dup() * AB::Expr::from(h1);
let e2078 = e2075.dup() + e2077.dup();
let h168: AB::Expr = AB::Expr::from(Felt::from_u64(2147483648));
let e2081 = e1616.dup() * h168.dup();
let e2082 = e2078.dup() + e2081.dup();
let e2083 = e2071.dup() + e2082.dup();
let e2084 = e2067.dup() * e2083.dup();
let e2085 = e2084.dup() - h9.dup();
let e2087 = e2085.dup() * b26.dup();
let e2088 = e2062.dup() + e2087.dup();
let h169: AB::Expr = AB::Expr::from(Felt::from_u64(104));
let e2091 = e1624.dup() * h169.dup();
let e2092 = e2033.dup() + e2091.dup();
let e2093 = e2019.dup() + e2092.dup();
let e2095 = e1629.dup() * h110.dup();
let e2096 = h151.dup() + e2095.dup();
let e2097 = e2096.dup() + AB::Expr::from(h19);
let e2098 = e2097.dup() + e1831.dup();
let e2099 = e2098.dup() + e1833.dup();
let e2100 = e2099.dup() + e1835.dup();
let e2101 = e2093.dup() * e2100.dup();
let e2102 = e2101.dup() - h9.dup();
let e2104 = e2102.dup() * b42.dup();
let e2105 = e2088.dup() + e2104.dup();
let e2107 = e1629.dup() * h81.dup();
let e2108 = h151.dup() + e2107.dup();
let e2109 = e2108.dup() + AB::Expr::from(h116);
let e2110 = e2109.dup() + e2033.dup();
let e2111 = e2110.dup() - h9.dup();
let e2112 = e2111.dup() * b152.dup();
let e2113 = e2105.dup() + e2112.dup();
let e2115 = e1629.dup() * h80.dup();
let e2116 = h151.dup() + e2115.dup();
let b2117 = h117 + h9.dup();
let e2119 = e2116.dup() + b2117.dup();
let e2120 = e2119.dup() + e2026.dup();
let e2121 = e2120.dup() - h9.dup();
let e2122 = e2121.dup() * b49.dup();
let e2123 = e2113.dup() + e2122.dup();
let h170: AB::Expr = AB::Expr::from(Felt::from_u64(88));
let e2126 = e1624.dup() * h170.dup();
let e2127 = e2019.dup() + e2126.dup();
let h171: AB::Expr = AB::Expr::from(Felt::from_u64(14));
let e2130 = e1629.dup() * h171.dup();
let e2131 = h151.dup() + e2130.dup();
let e2133 = h152.dup() * AB::Expr::from(h41);
let e2134 = e2133.dup() + AB::Expr::from(h2);
let e2135 = e2134.dup() + e2077.dup();
let e2136 = e2131.dup() + e2135.dup();
let e2137 = e1616.dup() * AB::Expr::from(h19);
let e2138 = e1617.dup() * AB::Expr::from(h21);
let e2139 = e2137.dup() + e2138.dup();
let e2140 = e1618.dup() * AB::Expr::from(h23);
let e2141 = e2139.dup() + e2140.dup();
let e2142 = e1619.dup() * AB::Expr::from(h25);
let e2143 = e2141.dup() + e2142.dup();
let e2144 = e2136.dup() + e2143.dup();
let e2145 = e2127.dup() * e2144.dup();
let e2146 = e2145.dup() - h9.dup();
let e2148 = e2146.dup() * b214.dup();
let e2149 = e2123.dup() + e2148.dup();
let h172: AB::Expr = AB::Expr::from(Felt::from_u64(92));
let e2152 = e1624.dup() * h172.dup();
let e2153 = e2019.dup() + e2152.dup();
let e2154 = e2153.dup() * e2144.dup();
let e2155 = e2154.dup() * e2083.dup();
let e2156 = e2155.dup() - h9.dup();
let e2157 = e2156.dup() * b34.dup();
let e2158 = e2149.dup() + e2157.dup();
let e2159 = e2018.dup() + AB::Expr::from(h23);
let e2160 = e1615.dup() * AB::Expr::from(h41);
let e2162 = e1616.dup() * AB::Expr::from(h42);
let e2163 = e2160.dup() + e2162.dup();
let e2165 = e1617.dup() * AB::Expr::from(h44);
let e2166 = e2163.dup() + e2165.dup();
let e2168 = e1618.dup() * AB::Expr::from(h46);
let e2169 = e2166.dup() + e2168.dup();
let e2171 = e1619.dup() * AB::Expr::from(h48);
let e2172 = e2169.dup() + e2171.dup();
let e2174 = e1620.dup() * AB::Expr::from(h50);
let e2175 = e2172.dup() + e2174.dup();
let e2177 = e1621.dup() * AB::Expr::from(h52);
let e2178 = e2175.dup() + e2177.dup();
let e2180 = e1622.dup() * AB::Expr::from(h54);
let e2181 = e2178.dup() + e2180.dup();
let e2183 = e1623.dup() * AB::Expr::from(h56);
let e2184 = e2181.dup() + e2183.dup();
let e2186 = e1624.dup() * AB::Expr::from(h58);
let e2187 = e2184.dup() + e2186.dup();
let e2189 = e1625.dup() * AB::Expr::from(h60);
let e2190 = e2187.dup() + e2189.dup();
let e2192 = e1626.dup() * AB::Expr::from(h62);
let e2193 = e2190.dup() + e2192.dup();
let e2194 = e2159.dup() + e2193.dup();
let e2196 = e1629.dup() * h112.dup();
let e2197 = h151.dup() + e2196.dup();
let b2198 = h23 + h9.dup();
let e2200 = e2197.dup() + b2198.dup();
let e2201 = e1615.dup() * AB::Expr::from(h37);
let e2202 = e1616.dup() * AB::Expr::from(h43);
let e2203 = e2201.dup() + e2202.dup();
let e2204 = e1617.dup() * AB::Expr::from(h45);
let e2205 = e2203.dup() + e2204.dup();
let e2206 = e1618.dup() * AB::Expr::from(h47);
let e2207 = e2205.dup() + e2206.dup();
let e2209 = e1619.dup() * AB::Expr::from(h49);
let e2210 = e2207.dup() + e2209.dup();
let e2212 = e1620.dup() * AB::Expr::from(h51);
let e2213 = e2210.dup() + e2212.dup();
let e2215 = e1621.dup() * AB::Expr::from(h53);
let e2216 = e2213.dup() + e2215.dup();
let e2218 = e1622.dup() * AB::Expr::from(h55);
let e2219 = e2216.dup() + e2218.dup();
let e2221 = e1623.dup() * AB::Expr::from(h57);
let e2222 = e2219.dup() + e2221.dup();
let e2224 = e1624.dup() * AB::Expr::from(h59);
let e2225 = e2222.dup() + e2224.dup();
let e2227 = e1625.dup() * AB::Expr::from(h61);
let e2228 = e2225.dup() + e2227.dup();
let e2230 = e1626.dup() * AB::Expr::from(h63);
let e2231 = e2228.dup() + e2230.dup();
let e2232 = e2200.dup() + e2231.dup();
let e2233 = e2194.dup() * e2232.dup();
let e2234 = e2233.dup() - h9.dup();
let e2236 = e2234.dup() * b527.dup();
let e2237 = e2158.dup() + e2236.dup();
let e2239 = e1629.dup() * h31.dup();
let e2240 = h151.dup() + e2239.dup();
let e2241 = h152.dup() * AB::Expr::from(h50);
let e2242 = e2241.dup() + AB::Expr::from(h23);
let e2243 = e2240.dup() + e2242.dup();
let e2244 = e2243.dup() + e2169.dup();
let b2245 = h48 * h83.dup();
let b2246 = h23 + b2245.dup();
let b2247 = b2246.dup() - h9.dup();
let e2249 = e2116.dup() + b2247.dup();
let e2250 = e1615.dup() * AB::Expr::from(h52);
let e2251 = e1616.dup() * AB::Expr::from(h54);
let e2252 = e2250.dup() + e2251.dup();
let e2253 = e1617.dup() * AB::Expr::from(h56);
let e2254 = e2252.dup() + e2253.dup();
let e2255 = e1618.dup() * AB::Expr::from(h58);
let e2256 = e2254.dup() + e2255.dup();
let e2257 = e2249.dup() + e2256.dup();
let e2258 = e2244.dup() * e2257.dup();
let e2259 = e2258.dup() - h9.dup();
let e2261 = e2259.dup() * b133.dup();
let e2262 = e2237.dup() + e2261.dup();
let h173: AB::Expr = AB::Expr::from(Felt::from_u64(10));
let e2265 = e1629.dup() * h173.dup();
let e2266 = h151.dup() + e2265.dup();
let e2267 = e2266.dup() + e2242.dup();
let e2268 = e2267.dup() + e2169.dup();
let e2269 = e2268.dup() * e2257.dup();
let h174: AB::Expr = AB::Expr::from(Felt::from_u64(11));
let e2272 = e1629.dup() * h174.dup();
let e2273 = h151.dup() + e2272.dup();
let e2275 = e2241.dup() + b2246.dup();
let e2276 = e2273.dup() + e2275.dup();
let e2277 = e1615.dup() * AB::Expr::from(h60);
let e2278 = e1616.dup() * AB::Expr::from(h62);
let e2279 = e2277.dup() + e2278.dup();
let e2281 = e1617.dup() * AB::Expr::from(h64);
let e2282 = e2279.dup() + e2281.dup();
let e2284 = e1618.dup() * AB::Expr::from(h66);
let e2285 = e2282.dup() + e2284.dup();
let e2286 = e2276.dup() + e2285.dup();
let e2287 = e2269.dup() * e2286.dup();
let b2288 = h48 * h110.dup();
let b2289 = h23 + b2288.dup();
let b2290 = b2289.dup() - h9.dup();
let e2292 = e2116.dup() + b2290.dup();
let e2293 = e2292.dup() + e2207.dup();
let e2294 = e2287.dup() * e2293.dup();
let e2295 = e2294.dup() - h9.dup();
let e2297 = e2295.dup() * b379.dup();
let e2298 = e2262.dup() + e2297.dup();
let h175: AB::Expr = AB::Expr::from(Felt::from_u64(12));
let e2301 = e1629.dup() * h175.dup();
let e2302 = h151.dup() + e2301.dup();
let e2303 = e1616.dup() * AB::Expr::from(h37);
let e2304 = e2135.dup() + e2303.dup();
let e2305 = e2302.dup() + e2304.dup();
let e2306 = e2305.dup() - h9.dup();
let b2307 = b122.dup() * b119.dup();
let b2308 = b2307.dup() * b20.dup();
let b2309 = b2308.dup() * b135.dup();
let b2310 = b2309.dup() * h16;
let e2312 = e2306.dup() * b2310.dup();
let e2313 = e2298.dup() + e2312.dup();
let e2314 = e2135.dup() + e2162.dup();
let e2315 = e2071.dup() + e2314.dup();
let e2316 = e2315.dup() - h9.dup();
let b2317 = b602.dup() * b30.dup();
let b2318 = b2317.dup() * h16;
let e2320 = e2316.dup() * b2318.dup();
let e2321 = e2313.dup() + e2320.dup();
let e2322 = e1617.dup() * AB::Expr::from(h43);
let e2323 = e2303.dup() + e2322.dup();
let e2324 = e1618.dup() * AB::Expr::from(h45);
let e2325 = e2323.dup() + e2324.dup();
let e2326 = e1619.dup() * AB::Expr::from(h47);
let e2327 = e2325.dup() + e2326.dup();
let e2328 = e2136.dup() + e2327.dup();
let e2329 = e2328.dup() - h9.dup();
let b2330 = b2317.dup() * b32.dup();
let e2332 = e2329.dup() * b2330.dup();
let e2333 = e2321.dup() + e2332.dup();
let h176: AB::Expr = AB::Expr::from(Felt::from_u64(15));
let e2336 = e1629.dup() * h176.dup();
let e2337 = h151.dup() + e2336.dup();
let e2338 = e2337.dup() + e2135.dup();
let e2339 = e2162.dup() + e2165.dup();
let e2340 = e2339.dup() + e2168.dup();
let e2341 = e2340.dup() + e2171.dup();
let e2342 = e2338.dup() + e2341.dup();
let e2343 = e2342.dup() - h9.dup();
let b2344 = b602.dup() * b148.dup();
let b2345 = b2344.dup() * b32.dup();
let e2347 = e2343.dup() * b2345.dup();
let e2348 = e2333.dup() + e2347.dup();
let e2349 = h152.dup() * AB::Expr::from(h64);
let e2350 = e2349.dup() + AB::Expr::from(h2);
let e2351 = e2350.dup() + e2077.dup();
let e2352 = e2131.dup() + e2351.dup();
let e2353 = e2352.dup() + e2327.dup();
let b2354 = h64 + h110.dup();
let e2356 = h152.dup() * b2354.dup();
let e2357 = e2356.dup() + AB::Expr::from(h2);
let e2358 = e2357.dup() + e2077.dup();
let e2359 = e2131.dup() + e2358.dup();
let e2360 = e1616.dup() * AB::Expr::from(h49);
let e2361 = e1617.dup() * AB::Expr::from(h51);
let e2362 = e2360.dup() + e2361.dup();
let e2363 = e1618.dup() * AB::Expr::from(h53);
let e2364 = e2362.dup() + e2363.dup();
let e2365 = e1619.dup() * AB::Expr::from(h55);
let e2366 = e2364.dup() + e2365.dup();
let e2367 = e2359.dup() + e2366.dup();
let e2368 = e2353.dup() * e2367.dup();
let e2369 = e2368.dup() - h9.dup();
let e2371 = e2369.dup() * b463.dup();
let e2372 = e2348.dup() + e2371.dup();
let e2373 = e2337.dup() + e2351.dup();
let e2374 = e2373.dup() + e2327.dup();
let e2375 = e2337.dup() + e2358.dup();
let e2376 = e2375.dup() + e2366.dup();
let e2377 = e2374.dup() * e2376.dup();
let e2378 = e2377.dup() - h9.dup();
let e2380 = e2378.dup() * b465.dup();
let e2381 = e2372.dup() + e2380.dup();
let e2383 = e1616.dup() * b1224.dup();
let e2385 = e1617.dup() * b1226.dup();
let e2386 = e2383.dup() + e2385.dup();
let b2387 = h45 - h44;
let e2389 = e1618.dup() * b2387.dup();
let e2390 = e2386.dup() + e2389.dup();
let b2391 = h47 - h46;
let e2393 = e1619.dup() * b2391.dup();
let e2394 = e2390.dup() + e2393.dup();
let e2395 = e2352.dup() + e2394.dup();
let b2396 = h49 - h48;
let e2398 = e1616.dup() * b2396.dup();
let b2399 = h51 - h50;
let e2401 = e1617.dup() * b2399.dup();
let e2402 = e2398.dup() + e2401.dup();
let b2403 = h53 - h52;
let e2405 = e1618.dup() * b2403.dup();
let e2406 = e2402.dup() + e2405.dup();
let b2407 = h55 - h54;
let e2409 = e1619.dup() * b2407.dup();
let e2410 = e2406.dup() + e2409.dup();
let e2411 = e2359.dup() + e2410.dup();
let e2412 = e2395.dup() * e2411.dup();
let e2413 = h152.dup() * AB::Expr::from(h66);
let e2414 = e2413.dup() + AB::Expr::from(h2);
let e2415 = e2414.dup() + e2077.dup();
let e2416 = e2337.dup() + e2415.dup();
let e2417 = e2416.dup() + e2327.dup();
let e2418 = e2412.dup() * e2417.dup();
let b2419 = h66 + h110.dup();
let e2421 = h152.dup() * b2419.dup();
let e2422 = e2421.dup() + AB::Expr::from(h2);
let e2423 = e2422.dup() + e2077.dup();
let e2424 = e2337.dup() + e2423.dup();
let e2425 = e2424.dup() + e2366.dup();
let e2426 = e2418.dup() * e2425.dup();
let e2427 = e2426.dup() - h9.dup();
let e2429 = e2427.dup() * b902.dup();
let e2430 = e2381.dup() + e2429.dup();
let e2431 = e1616.dup() * AB::Expr::from(h23);
let e2432 = e2415.dup() + e2431.dup();
let e2433 = e2302.dup() + e2432.dup();
let b2434 = h66 + h9.dup();
let e2436 = h152.dup() * b2434.dup();
let e2437 = e2436.dup() + AB::Expr::from(h2);
let e2438 = e2437.dup() + e2077.dup();
let e2439 = e2438.dup() + e1835.dup();
let e2440 = e2302.dup() + e2439.dup();
let e2441 = e2433.dup() * e2440.dup();
let e2442 = e2441.dup() - h9.dup();
let e2444 = e2442.dup() * b168.dup();
let e2445 = e2430.dup() + e2444.dup();
let e2446 = e2131.dup() + e2415.dup();
let e2447 = e1617.dup() * AB::Expr::from(h25);
let e2448 = e2431.dup() + e2447.dup();
let e2449 = e1618.dup() * AB::Expr::from(h82);
let e2450 = e2448.dup() + e2449.dup();
let e2451 = e1619.dup() * AB::Expr::from(h40);
let e2452 = e2450.dup() + e2451.dup();
let e2453 = e2446.dup() + e2452.dup();
let e2454 = e2453.dup() - h9.dup();
let e2456 = e2454.dup() * b171.dup();
let e2457 = e2445.dup() + e2456.dup();
let e2459 = e1629.dup() * h73.dup();
let e2460 = h151.dup() + e2459.dup();
let e2461 = e2460.dup() + e2133.dup();
let e2462 = e1615.dup() * AB::Expr::from(h42);
let e2463 = e2461.dup() + e2462.dup();
let e2464 = e2463.dup() + e2303.dup();
let e2465 = e2464.dup() - h9.dup();
let b2466 = b602.dup() * b135.dup();
let b2467 = b2466.dup() * b32.dup();
let e2469 = e2465.dup() * b2467.dup();
let e2470 = e2457.dup() + e2469.dup();
let e2471 = e2460.dup() + h9.dup();
let e2472 = e2471.dup() + e2133.dup();
let e2473 = e2472.dup() + e2462.dup();
let e2474 = e2473.dup() + e2303.dup();
let e2475 = e2474.dup() - h9.dup();
let b2476 = b2466.dup() * h16;
let e2478 = e2475.dup() * b2476.dup();
let e2479 = e2470.dup() + e2478.dup();
let h177: AB::Expr = AB::Expr::from(Felt::from_u64(17));
let e2482 = e1629.dup() * h177.dup();
let e2483 = h151.dup() + e2482.dup();
let e2484 = e2483.dup() + AB::Expr::from(h1);
let e2485 = h152.dup() * AB::Expr::from(h2);
let e2486 = e2484.dup() + e2485.dup();
let e2487 = e2486.dup() + e2160.dup();
let e2488 = e2487.dup() + e2162.dup();
let e2489 = e2488.dup() + e2165.dup();
let e2490 = e2489.dup() - h9.dup();
let e2492 = e2490.dup() * b165.dup();
let e2493 = e2479.dup() + e2492.dup();
let e2494 = e1616.dup() * AB::Expr::from(h82);
let e2495 = e1934.dup() + e2494.dup();
let e2496 = e1617.dup() * AB::Expr::from(h40);
let e2497 = e2495.dup() + e2496.dup();
let e2498 = e1618.dup() * AB::Expr::from(h76);
let e2499 = e2497.dup() + e2498.dup();
let e2500 = e2499.dup() + e2171.dup();
let e2501 = e2500.dup() + e2174.dup();
let e2502 = e2501.dup() + e2177.dup();
let e2503 = e2502.dup() + e2180.dup();
let e2504 = e2503.dup() + e1623.dup();
let e2505 = e2159.dup() + e2504.dup();
let e2506 = e2505.dup() * e2232.dup();
let e2507 = e2506.dup() - h9.dup();
let e2508 = e2507.dup() * b530.dup();
let e2509 = e2493.dup() + e2508.dup();
let e2510 = e2509.dup() * Into::<AB::ExprEF>::into(h157);
let e2511 = -AB::ExprEF::from(b141.dup());
let e2512 = e2511.dup() - b206.dup();
let e2513 = e2512.dup() - b144.dup();
let e2514 = e2513.dup() - b137.dup();
let e2515 = e2083.dup() * h85.dup();
let e2516 = e2515.dup() - e2067.dup();
let e2517 = e2516.dup() * b26.dup();
let e2518 = e2514.dup() + e2517.dup();
let e2519 = e2100.dup() * h85.dup();
let e2520 = e2519.dup() - e2093.dup();
let e2521 = e2520.dup() * b42.dup();
let e2522 = e2518.dup() + e2521.dup();
let e2523 = e2522.dup() - b152.dup();
let e2524 = e2523.dup() - b49.dup();
let e2525 = e2144.dup() * h85.dup();
let e2526 = e2525.dup() - e2127.dup();
let e2527 = e2526.dup() * b214.dup();
let e2528 = e2524.dup() + e2527.dup();
let e2529 = e2525.dup() - e2153.dup();
let e2530 = e2529.dup() * e2083.dup();
let e2531 = e2530.dup() - e2154.dup();
let e2532 = e2531.dup() * b34.dup();
let e2533 = e2528.dup() + e2532.dup();
let e2534 = e2232.dup() * h85.dup();
let e2535 = e2534.dup() - e2194.dup();
let e2536 = e2535.dup() * b527.dup();
let e2537 = e2533.dup() + e2536.dup();
let e2538 = e2257.dup() * h85.dup();
let e2539 = e2538.dup() - e2244.dup();
let e2540 = e2539.dup() * b133.dup();
let e2541 = e2537.dup() + e2540.dup();
let e2542 = e2538.dup() - e2268.dup();
let e2543 = e2542.dup() * e2286.dup();
let e2544 = e2543.dup() - e2269.dup();
let e2545 = e2544.dup() * e2293.dup();
let e2546 = e2545.dup() - e2287.dup();
let e2547 = e2546.dup() * b379.dup();
let e2548 = e2541.dup() + e2547.dup();
let e2549 = e2548.dup() - b2310.dup();
let e2550 = e2549.dup() - b2318.dup();
let e2551 = e2550.dup() - b2330.dup();
let e2552 = e2551.dup() - b2345.dup();
let e2553 = e2367.dup() * h85.dup();
let e2554 = e2553.dup() - e2353.dup();
let e2555 = e2554.dup() * b463.dup();
let e2556 = e2552.dup() + e2555.dup();
let e2557 = e2376.dup() * h85.dup();
let e2558 = e2557.dup() - e2374.dup();
let e2559 = e2558.dup() * b465.dup();
let e2560 = e2556.dup() + e2559.dup();
let e2561 = e2411.dup() * h85.dup();
let e2562 = e2561.dup() - e2395.dup();
let e2563 = e2562.dup() * e2417.dup();
let e2564 = e2563.dup() - e2412.dup();
let e2565 = e2564.dup() * e2425.dup();
let e2566 = e2565.dup() - e2418.dup();
let e2567 = e2566.dup() * b902.dup();
let e2568 = e2560.dup() + e2567.dup();
let e2569 = e2440.dup() * h85.dup();
let e2570 = e2569.dup() - e2433.dup();
let e2571 = e2570.dup() * b168.dup();
let e2572 = e2568.dup() + e2571.dup();
let e2573 = e2572.dup() - b171.dup();
let e2574 = e2573.dup() - b2467.dup();
let e2575 = e2574.dup() - b2476.dup();
let e2576 = e2575.dup() - b165.dup();
let e2577 = e2534.dup() - e2505.dup();
let e2578 = e2577.dup() * b530.dup();
let e2579 = e2576.dup() + e2578.dup();
let e2580 = e2510.dup() - e2579.dup();
builder.assert_zero_ext(e2580.dup());
let h178: AB::Expr = AB::Expr::from(Felt::from_u64(20));
let e2583 = e1629.dup() * h178.dup();
let e2584 = h151.dup() + e2583.dup();
let e2585 = e2584.dup() + AB::Expr::from(h1);
let e2587 = h152.dup() * AB::Expr::from(h70);
let e2588 = e2585.dup() + e2587.dup();
let e2589 = e1615.dup() * AB::Expr::from(h74);
let e2590 = e2588.dup() + e2589.dup();
let e2591 = e2590.dup() - h9.dup();
let e2593 = e2591.dup() * b614.dup();
let e2594 = e2593.dup() + h9.dup();
let e2595 = e2584.dup() + AB::Expr::from(h74);
let e2597 = h152.dup() * AB::Expr::from(h71);
let e2598 = e2595.dup() + e2597.dup();
let e2599 = e1615.dup() * AB::Expr::from(h79);
let e2600 = e2598.dup() + e2599.dup();
let e2601 = e2600.dup() - h9.dup();
let b2602 = b605.dup() + b206.dup();
let b2603 = b2602.dup() + b208.dup();
let b2604 = b2603.dup() + b212.dup();
let b2605 = b2604.dup() + b214.dup();
let b2606 = b2605.dup() * b609.dup();
let e2608 = e2601.dup() * b2606.dup();
let e2609 = e2594.dup() + e2608.dup();
let e2610 = e2598.dup() + e1692.dup();
let e2611 = e2610.dup() - h9.dup();
let b2612 = b34.dup() * b609.dup();
let e2614 = e2611.dup() * b2612.dup();
let e2615 = e2609.dup() + e2614.dup();
let e2616 = e2615.dup() * Into::<AB::ExprEF>::into(h158);
let e2617 = AB::ExprEF::from(b614.dup()) - b2606.dup();
let e2618 = e2617.dup() - b2612.dup();
let e2619 = e2616.dup() - e2618.dup();
builder.assert_zero_ext(e2619.dup());
}
#[inline(never)]
pub fn eval_chiplets<AB: LiftedAirBuilder<F = Felt>>(builder: &mut AB) {
let main = builder.main();
let m0 = main.current_slice();
let m1 = main.next_slice();
let aux = builder.permutation();
let a0 = aux.current_slice();
let a1 = aux.next_slice();
let _ = (&m1, &a0, &a1);
let h0 = m0[0];
let h1: AB::Expr = AB::Expr::from(Felt::from_u64(1));
let b2 = h0 - h1.dup();
let b3 = h0 * b2.dup();
builder.assert_zero(b3.dup());
let h2: AB::Expr = builder.is_transition();
let h3 = m1[0];
let b6 = h3 - h1.dup();
let b7 = h0 * b6.dup();
let b8 = h2.dup() * b7.dup();
builder.assert_zero(b8.dup());
let h4 = m0[1];
let b10 = h4 - h1.dup();
let b11 = h4 * b10.dup();
let b12 = h0 * b11.dup();
builder.assert_zero(b12.dup());
let b13 = h0 * h4;
let h5 = m0[2];
let b15 = h5 - h1.dup();
let b16 = h5 * b15.dup();
let b17 = b13.dup() * b16.dup();
builder.assert_zero(b17.dup());
let b18 = b13.dup() * h5;
let h6 = m0[3];
let b20 = h6 - h1.dup();
let b21 = h6 * b20.dup();
let b22 = b18.dup() * b21.dup();
builder.assert_zero(b22.dup());
let b23 = b18.dup() * h6;
let h7 = m0[4];
let b25 = h7 - h1.dup();
let b26 = h7 * b25.dup();
let b27 = b23.dup() * b26.dup();
builder.assert_zero(b27.dup());
let h8 = m1[1];
let b29 = h8 - h4;
let b30 = b13.dup() * b29.dup();
let b31 = h2.dup() * b30.dup();
builder.assert_zero(b31.dup());
let h9 = m1[2];
let b33 = h9 - h5;
let b34 = b18.dup() * b33.dup();
let b35 = h2.dup() * b34.dup();
builder.assert_zero(b35.dup());
let h10 = m1[3];
let b37 = h10 - h6;
let b38 = b23.dup() * b37.dup();
let b39 = h2.dup() * b38.dup();
builder.assert_zero(b39.dup());
let b40 = b23.dup() * h7;
let h11 = m1[4];
let b42 = h11 - h7;
let b43 = b40.dup() * b42.dup();
let b44 = h2.dup() * b43.dup();
builder.assert_zero(b44.dup());
let h12: AB::Expr = builder.is_last_row();
let b46 = h12.dup() * b2.dup();
builder.assert_zero(b46.dup());
let b47 = h12.dup() * b10.dup();
builder.assert_zero(b47.dup());
let b48 = h12.dup() * b15.dup();
builder.assert_zero(b48.dup());
let b49 = h12.dup() * b20.dup();
builder.assert_zero(b49.dup());
let b50 = h12.dup() * b25.dup();
builder.assert_zero(b50.dup());
let h13: AB::Expr = builder.is_first_row();
let h14 = m0[21];
let b53 = h14 - h1.dup();
let b54 = h13.dup() * b53.dup();
builder.assert_zero(b54.dup());
let h15 = m1[21];
let b56 = h14 + h1.dup();
let b57 = h15 - b56.dup();
let b58 = h2.dup() * b57.dup();
builder.assert_zero(b58.dup());
let b59 = h1.dup() - h0;
let b60 = b59.dup() * h4;
let b61 = b60.dup() - h1.dup();
let b62 = h13.dup() * b61.dup();
builder.assert_zero(b62.dup());
let b63 = b59.dup() * b11.dup();
builder.assert_zero(b63.dup());
let b64 = b59.dup() * b16.dup();
builder.assert_zero(b64.dup());
let b65 = b59.dup() * b21.dup();
builder.assert_zero(b65.dup());
let h16 = m0[18];
let b67 = h16 - h1.dup();
let b68 = h16 * b67.dup();
let b69 = b59.dup() * b68.dup();
builder.assert_zero(b69.dup());
let b70 = h2.dup() * b59.dup();
let b71 = h1.dup() - h3;
let b72 = b70.dup() * b71.dup();
let b73 = h1.dup() - h4;
let b74 = h1.dup() - h5;
let b75 = b73.dup() * b74.dup();
let b76 = h1.dup() - h8;
let b77 = h1.dup() - h9;
let b78 = b76.dup() * b77.dup();
let b79 = b75.dup() * b78.dup();
let b80 = b72.dup() * b79.dup();
builder.assert_zero(b80.dup());
let b81 = b73.dup() * h5;
let b82 = b76.dup() * h9;
let b83 = b82.dup() - h1.dup();
let b84 = b81.dup() * b83.dup();
let b85 = b72.dup() * b84.dup();
builder.assert_zero(b85.dup());
let b86 = b81.dup() * h16;
let b87 = b59.dup() * b86.dup();
builder.assert_zero(b87.dup());
let h17 = m0[19];
let b89 = b81.dup() * h17;
let b90 = b59.dup() * b89.dup();
builder.assert_zero(b90.dup());
let h18 = m0[20];
let b92 = b81.dup() * h18;
let b93 = b59.dup() * b92.dup();
builder.assert_zero(b93.dup());
let b94 = b59.dup() * h3;
let b95 = b94.dup() * h4;
builder.assert_zero(b95.dup());
let b96 = b75.dup() * b67.dup();
let b97 = b94.dup() * b96.dup();
builder.assert_zero(b97.dup());
let b98 = b78.dup() - h1.dup();
let b99 = h4 * b98.dup();
let b100 = b72.dup() * b99.dup();
builder.assert_zero(b100.dup());
let h19 = m1[20];
let b102 = h19 - h18;
let b103 = h4 * b102.dup();
let b104 = b72.dup() * b103.dup();
builder.assert_zero(b104.dup());
let b105 = h4 * b74.dup();
let b106 = h1.dup() - h6;
let b107 = b105.dup() * b106.dup();
let h20 = m0[16];
let b109 = b107.dup() * h20;
let b110 = b59.dup() * b109.dup();
builder.assert_zero(b110.dup());
let b111 = b107.dup() * h17;
let b112 = b59.dup() * b111.dup();
builder.assert_zero(b112.dup());
let b113 = h8 * b77.dup();
let b114 = h1.dup() - h10;
let b115 = b113.dup() * b114.dup();
let b116 = b72.dup() * b115.dup();
let h21 = m1[18];
let b118 = h1.dup() - h21;
let b119 = b116.dup() * b118.dup();
let h22 = m1[12];
let h23 = m0[12];
let b122 = h22 - h23;
let b123 = b119.dup() * b122.dup();
builder.assert_zero(b123.dup());
let h24 = m1[13];
let h25 = m0[13];
let b126 = h24 - h25;
let b127 = b119.dup() * b126.dup();
builder.assert_zero(b127.dup());
let h26 = m1[14];
let h27 = m0[14];
let b130 = h26 - h27;
let b131 = b119.dup() * b130.dup();
builder.assert_zero(b131.dup());
let h28 = m1[15];
let h29 = m0[15];
let b134 = h28 - h29;
let b135 = b119.dup() * b134.dup();
builder.assert_zero(b135.dup());
let b136 = h5 + h6;
let b137 = h5 * h6;
let b138 = b136.dup() - b137.dup();
let b139 = h4 * b138.dup();
let b140 = b59.dup() * b139.dup();
let h30 = m1[16];
let b142 = h30 + h30;
let b143 = b142.dup() + h17;
let b144 = h20 - b143.dup();
let b145 = b140.dup() * b144.dup();
builder.assert_zero(b145.dup());
let b146 = h17 - h1.dup();
let b147 = h17 * b146.dup();
let b148 = b140.dup() * b147.dup();
builder.assert_zero(b148.dup());
let b149 = b140.dup() * h23;
builder.assert_zero(b149.dup());
let b150 = b140.dup() * h25;
builder.assert_zero(b150.dup());
let b151 = b140.dup() * h27;
builder.assert_zero(b151.dup());
let b152 = b140.dup() * h29;
builder.assert_zero(b152.dup());
let b153 = h1.dup() - h16;
let b154 = h9 + h10;
let b155 = h9 * h10;
let b156 = b154.dup() - b155.dup();
let b157 = h8 * b156.dup();
let b158 = h30 - h20;
let b159 = b157.dup() * b158.dup();
let b160 = b153.dup() * b159.dup();
let b161 = b75.dup() * b160.dup();
let b162 = b59.dup() * b161.dup();
builder.assert_zero(b162.dup());
let b163 = b59.dup() * b75.dup();
let b164 = b163.dup() * b153.dup();
let b165 = b164.dup() * b157.dup();
let h31 = m1[19];
let b167 = h17 - h31;
let b168 = b165.dup() * b167.dup();
builder.assert_zero(b168.dup());
let h32 = m1[8];
let b170 = h32 - h11;
let b171 = h17 * b170.dup();
let b172 = h11 + b171.dup();
let b173 = h7 - b172.dup();
let b174 = b165.dup() * b173.dup();
builder.assert_zero(b174.dup());
let h33 = m0[5];
let h34 = m1[5];
let h35 = m1[9];
let b178 = h35 - h34;
let b179 = h17 * b178.dup();
let b180 = h34 + b179.dup();
let b181 = h33 - b180.dup();
let b182 = b165.dup() * b181.dup();
builder.assert_zero(b182.dup());
let h36 = m0[6];
let h37 = m1[6];
let h38 = m1[10];
let b186 = h38 - h37;
let b187 = h17 * b186.dup();
let b188 = h37 + b187.dup();
let b189 = h36 - b188.dup();
let b190 = b165.dup() * b189.dup();
builder.assert_zero(b190.dup());
let h39 = m0[7];
let h40 = m1[7];
let h41 = m1[11];
let b194 = h41 - h40;
let b195 = h17 * b194.dup();
let b196 = h40 + b195.dup();
let b197 = h39 - b196.dup();
let b198 = b165.dup() * b197.dup();
builder.assert_zero(b198.dup());
let h42 = m1[17];
let h43 = m0[17];
let b201 = h8 * h9;
let b202 = b201.dup() * b114.dup();
let b203 = b202.dup() * h21;
let b204 = h43 + b203.dup();
let b205 = h42 - b204.dup();
let b206 = b72.dup() * b205.dup();
builder.assert_zero(b206.dup());
let b207 = b75.dup() * b106.dup();
let b208 = b207.dup() * h20;
let b209 = b59.dup() * b208.dup();
builder.assert_zero(b209.dup());
let b210 = b207.dup() * h17;
let b211 = b59.dup() * b210.dup();
builder.assert_zero(b211.dup());
let b212 = b75.dup() * h6;
let b213 = h16 * h17;
let b214 = b212.dup() * b213.dup();
let b215 = b59.dup() * b214.dup();
builder.assert_zero(b215.dup());
let b216 = b94.dup() * b76.dup();
let h44: AB::Expr = builder.periodic_values()[1].into();
let b218 = b216.dup() * h44.dup();
builder.assert_zero(b218.dup());
let b219 = h0 - b13.dup();
let b220 = b219.dup() * b16.dup();
builder.assert_zero(b220.dup());
let b221 = h5 - h9;
let b222 = h44.dup() * b221.dup();
let b223 = b219.dup() * b222.dup();
builder.assert_zero(b223.dup());
let b224 = h33 - h1.dup();
let b225 = h33 * b224.dup();
let b226 = b219.dup() * b225.dup();
builder.assert_zero(b226.dup());
let b227 = h36 - h1.dup();
let b228 = h36 * b227.dup();
let b229 = b219.dup() * b228.dup();
builder.assert_zero(b229.dup());
let b230 = h39 - h1.dup();
let b231 = h39 * b230.dup();
let b232 = b219.dup() * b231.dup();
builder.assert_zero(b232.dup());
let h45 = m0[8];
let b234 = h45 - h1.dup();
let b235 = h45 * b234.dup();
let b236 = b219.dup() * b235.dup();
builder.assert_zero(b236.dup());
let h46 = m0[9];
let b238 = h46 - h1.dup();
let b239 = h46 * b238.dup();
let b240 = b219.dup() * b239.dup();
builder.assert_zero(b240.dup());
let h47 = m0[10];
let b242 = h47 - h1.dup();
let b243 = h47 * b242.dup();
let b244 = b219.dup() * b243.dup();
builder.assert_zero(b244.dup());
let h48 = m0[11];
let b246 = h48 - h1.dup();
let b247 = h48 * b246.dup();
let b248 = b219.dup() * b247.dup();
builder.assert_zero(b248.dup());
let b249 = h23 - h1.dup();
let b250 = h23 * b249.dup();
let b251 = b219.dup() * b250.dup();
builder.assert_zero(b251.dup());
let h49: AB::Expr = builder.periodic_values()[0].into();
let b253 = h45 + h45;
let b254 = b253.dup() + h39;
let b255 = b254.dup() + b254.dup();
let b256 = b255.dup() + h36;
let b257 = b256.dup() + b256.dup();
let b258 = b257.dup() + h33;
let b259 = h6 - b258.dup();
let b260 = h49.dup() * b259.dup();
let b261 = b219.dup() * b260.dup();
builder.assert_zero(b261.dup());
let b262 = h23 + h23;
let b263 = b262.dup() + h48;
let b264 = b263.dup() + b263.dup();
let b265 = b264.dup() + h47;
let b266 = b265.dup() + b265.dup();
let b267 = b266.dup() + h46;
let b268 = h7 - b267.dup();
let b269 = h49.dup() * b268.dup();
let b270 = b219.dup() * b269.dup();
builder.assert_zero(b270.dup());
let b271 = h49.dup() * h25;
let b272 = b219.dup() * b271.dup();
builder.assert_zero(b272.dup());
let h50: AB::Expr = AB::Expr::from(Felt::from_u64(16));
let b274 = h6 * h50.dup();
let b275 = h32 + h32;
let b276 = b275.dup() + h40;
let b277 = b276.dup() + b276.dup();
let b278 = b277.dup() + h37;
let b279 = b278.dup() + b278.dup();
let b280 = b279.dup() + h34;
let b281 = b274.dup() + b280.dup();
let b282 = h10 - b281.dup();
let b283 = h44.dup() * b282.dup();
let b284 = b219.dup() * b283.dup();
builder.assert_zero(b284.dup());
let b285 = h7 * h50.dup();
let b286 = h22 + h22;
let b287 = b286.dup() + h41;
let b288 = b287.dup() + b287.dup();
let b289 = b288.dup() + h38;
let b290 = b289.dup() + b289.dup();
let b291 = b290.dup() + h35;
let b292 = b285.dup() + b291.dup();
let b293 = h11 - b292.dup();
let b294 = h44.dup() * b293.dup();
let b295 = b219.dup() * b294.dup();
builder.assert_zero(b295.dup());
let b296 = h27 - h24;
let b297 = h44.dup() * b296.dup();
let b298 = b219.dup() * b297.dup();
builder.assert_zero(b298.dup());
let b299 = h25 * h50.dup();
let b300 = h45 * h23;
let b301 = b300.dup() + b300.dup();
let b302 = h39 * h48;
let b303 = b301.dup() + b302.dup();
let b304 = b303.dup() + b303.dup();
let b305 = h36 * h47;
let b306 = b304.dup() + b305.dup();
let b307 = b306.dup() + b306.dup();
let b308 = h33 * h46;
let b309 = b307.dup() + b308.dup();
let b310 = b299.dup() + b309.dup();
let b311 = h45 + h23;
let b312 = b311.dup() - b301.dup();
let b313 = b312.dup() + b312.dup();
let b314 = h39 + h48;
let b315 = b302.dup() + b302.dup();
let b316 = b314.dup() - b315.dup();
let b317 = b313.dup() + b316.dup();
let b318 = b317.dup() + b317.dup();
let b319 = h36 + h47;
let b320 = b305.dup() + b305.dup();
let b321 = b319.dup() - b320.dup();
let b322 = b318.dup() + b321.dup();
let b323 = b322.dup() + b322.dup();
let b324 = h33 + h46;
let b325 = b308.dup() + b308.dup();
let b326 = b324.dup() - b325.dup();
let b327 = b323.dup() + b326.dup();
let b328 = b327.dup() - b309.dup();
let b329 = h5 * b328.dup();
let b330 = b310.dup() + b329.dup();
let b331 = h27 - b330.dup();
let b332 = b219.dup() * b331.dup();
builder.assert_zero(b332.dup());
let b333 = b13.dup() - b18.dup();
let b334 = b333.dup() * b21.dup();
builder.assert_zero(b334.dup());
let b335 = b333.dup() * b26.dup();
builder.assert_zero(b335.dup());
let b336 = b333.dup() * b231.dup();
builder.assert_zero(b336.dup());
let b337 = b333.dup() * b235.dup();
builder.assert_zero(b337.dup());
let h51: AB::Expr = AB::Expr::from(Felt::from_u64(65536));
let b339 = h17 * h51.dup();
let b340 = b339.dup() + h16;
let h52: AB::Expr = AB::Expr::from(Felt::from_u64(4));
let b342 = b340.dup() * h52.dup();
let b343 = h36 - b342.dup();
let b344 = b333.dup() * b343.dup();
builder.assert_zero(b344.dup());
let b345 = h7 * h39;
let b346 = b333.dup() * b345.dup();
builder.assert_zero(b346.dup());
let b347 = h7 * h45;
let b348 = b333.dup() * b347.dup();
builder.assert_zero(b348.dup());
let b349 = b219.dup() + b94.dup();
let b350 = b349.dup() * h8;
let b351 = b350.dup() * b77.dup();
let b352 = h1.dup() - h11;
let b353 = b114.dup() * b352.dup();
let b354 = h1.dup() - h32;
let b355 = h1.dup() - h40;
let b356 = b354.dup() * b355.dup();
let b357 = h1.dup() - b356.dup();
let b358 = b353.dup() * b357.dup();
let b359 = h10 + b358.dup();
let b360 = b359.dup() * h38;
let b361 = b351.dup() * b360.dup();
builder.assert_zero(b361.dup());
let b362 = b354.dup() * h40;
let b363 = h1.dup() - b362.dup();
let b364 = b353.dup() * b363.dup();
let b365 = h10 + b364.dup();
let b366 = b365.dup() * h41;
let b367 = b351.dup() * b366.dup();
builder.assert_zero(b367.dup());
let b368 = h32 * b355.dup();
let b369 = h1.dup() - b368.dup();
let b370 = b353.dup() * b369.dup();
let b371 = h10 + b370.dup();
let b372 = b371.dup() * h22;
let b373 = b351.dup() * b372.dup();
builder.assert_zero(b373.dup());
let b374 = h32 * h40;
let b375 = h1.dup() - b374.dup();
let b376 = b353.dup() * b375.dup();
let b377 = h10 + b376.dup();
let b378 = b377.dup() * h24;
let b379 = b351.dup() * b378.dup();
builder.assert_zero(b379.dup());
let b380 = h2.dup() * b13.dup();
let b381 = b380.dup() * b77.dup();
let b382 = h34 - h33;
let b383 = b382.dup() * h30;
let b384 = b383.dup() - h1.dup();
let b385 = b383.dup() * b384.dup();
let b386 = b381.dup() * b385.dup();
builder.assert_zero(b386.dup());
let b387 = h1.dup() - b383.dup();
let b388 = b387.dup() * b382.dup();
let b389 = b381.dup() * b388.dup();
builder.assert_zero(b389.dup());
let b390 = h37 - h36;
let b391 = b390.dup() * h30;
let b392 = b391.dup() - h1.dup();
let b393 = b391.dup() * b392.dup();
let b394 = b387.dup() * b393.dup();
let b395 = b381.dup() * b394.dup();
builder.assert_zero(b395.dup());
let b396 = h1.dup() - b391.dup();
let b397 = b396.dup() * b390.dup();
let b398 = b387.dup() * b397.dup();
let b399 = b381.dup() * b398.dup();
builder.assert_zero(b399.dup());
let b400 = b387.dup() * b396.dup();
let b401 = h42 - b400.dup();
let b402 = b381.dup() * b401.dup();
builder.assert_zero(b402.dup());
let b403 = b383.dup() * b382.dup();
let b404 = b391.dup() * b390.dup();
let b405 = h35 - h46;
let b406 = b396.dup() * b405.dup();
let b407 = b404.dup() + b406.dup();
let b408 = b387.dup() * b407.dup();
let b409 = b403.dup() + b408.dup();
let b410 = h28 * h51.dup();
let b411 = b410.dup() + h26;
let b412 = b409.dup() - b411.dup();
let b413 = b381.dup() * b412.dup();
builder.assert_zero(b413.dup());
let b414 = b405.dup() * h30;
let b415 = h1.dup() - b414.dup();
let b416 = b106.dup() + b114.dup();
let b417 = b415.dup() * b416.dup();
let b418 = h42 * b417.dup();
let b419 = b381.dup() * b418.dup();
builder.assert_zero(b419.dup());
let b420 = h42 * h47;
let b421 = h38 - b420.dup();
let b422 = b359.dup() * b421.dup();
let b423 = b381.dup() * b422.dup();
builder.assert_zero(b423.dup());
let b424 = h42 * h48;
let b425 = h41 - b424.dup();
let b426 = b365.dup() * b425.dup();
let b427 = b381.dup() * b426.dup();
builder.assert_zero(b427.dup());
let b428 = h42 * h23;
let b429 = h22 - b428.dup();
let b430 = b371.dup() * b429.dup();
let b431 = b381.dup() * b430.dup();
builder.assert_zero(b431.dup());
let b432 = h42 * h25;
let b433 = h24 - b432.dup();
let b434 = b377.dup() * b433.dup();
let b435 = b381.dup() * b434.dup();
builder.assert_zero(b435.dup());
let b436 = h3 * h8;
let b437 = b436.dup() * h9;
let b438 = b437.dup() * b114.dup();
let b439 = h1.dup() - b18.dup();
let b440 = b438.dup() * b439.dup();
let b441 = h11 - h1.dup();
let b442 = b440.dup() * b441.dup();
builder.assert_zero(b442.dup());
let b443 = b18.dup() - b23.dup();
let b444 = b443.dup() * b26.dup();
builder.assert_zero(b444.dup());
let b445 = b443.dup() * b225.dup();
builder.assert_zero(b445.dup());
let b446 = b443.dup() * h10;
let b447 = b446.dup() * h7;
builder.assert_zero(b447.dup());
let b448 = h2.dup() * b18.dup();
let b449 = b448.dup() * b114.dup();
let b450 = h7 * h11;
let b451 = b449.dup() * b450.dup();
builder.assert_zero(b451.dup());
let b452 = h7 * h33;
let b453 = b443.dup() * b452.dup();
builder.assert_zero(b453.dup());
let b454 = h1.dup() - h34;
let b455 = h33 * b454.dup();
let b456 = b352.dup() * b455.dup();
let b457 = b449.dup() * b456.dup();
builder.assert_zero(b457.dup());
let b458 = b449.dup() * b352.dup();
let b459 = b458.dup() * b390.dup();
builder.assert_zero(b459.dup());
let b460 = h32 - h45;
let b461 = b458.dup() * b460.dup();
builder.assert_zero(b461.dup());
let b462 = h1.dup() - h33;
let b463 = b462.dup() * h52.dup();
let b464 = h39 + b463.dup();
let b465 = b464.dup() + h33;
let b466 = h40 - b465.dup();
let b467 = b458.dup() * b466.dup();
builder.assert_zero(b467.dup());
let b468 = b462.dup() + b462.dup();
let b469 = h38 + b468.dup();
let b470 = b469.dup() + h33;
let b471 = h47 - b470.dup();
let b472 = b458.dup() * b471.dup();
builder.assert_zero(b472.dup());
let b473 = h25 - b242.dup();
let b474 = b462.dup() * b473.dup();
let b475 = b443.dup() * b474.dup();
builder.assert_zero(b475.dup());
let b476 = b454.dup() * h30;
let b477 = h34 * h38;
let b478 = b476.dup() + b477.dup();
let b479 = b478.dup() - h20;
let b480 = b462.dup() * b479.dup();
let b481 = b449.dup() * b480.dup();
builder.assert_zero(b481.dup());
let b482 = b443.dup() * h33;
let b483 = h46 * h46;
let b484 = b483.dup() - h1.dup();
let b485 = h46 * b484.dup();
let b486 = b482.dup() * b485.dup();
builder.assert_zero(b486.dup());
let b487 = h43 * h46;
let b488 = h27 + b487.dup();
let b489 = h27 * h43;
let h53: AB::Expr = AB::Expr::from(Felt::from_u64(7));
let b491 = h29 * h16;
let b492 = h53.dup() * b491.dup();
let b493 = b489.dup() + b492.dup();
let b494 = b488.dup() - b493.dup();
let b495 = b494.dup() * b483.dup();
let b496 = b495.dup() + b493.dup();
let b497 = h48 - b496.dup();
let b498 = b482.dup() * b497.dup();
builder.assert_zero(b498.dup());
let b499 = h16 * h46;
let b500 = h29 + b499.dup();
let b501 = h27 * h16;
let b502 = h29 * h43;
let b503 = b501.dup() + b502.dup();
let b504 = b500.dup() - b503.dup();
let b505 = b504.dup() * b483.dup();
let b506 = b505.dup() + b503.dup();
let b507 = h23 - b506.dup();
let b508 = b482.dup() * b507.dup();
builder.assert_zero(b508.dup());
let b509 = b449.dup() * h11;
let b510 = b446.dup() + b509.dup();
let b511 = b510.dup() * b462.dup();
builder.assert_zero(b511.dup());
let b512 = b510.dup() * h48;
builder.assert_zero(b512.dup());
let b513 = b510.dup() * h23;
builder.assert_zero(b513.dup());
let b514 = b510.dup() * h47;
builder.assert_zero(b514.dup());
let h54 = a0[0];
let e517 = Into::<AB::ExprEF>::into(h54) * h13.dup();
builder.assert_zero_ext(e517.dup());
let h55: AB::ExprEF = builder.permutation_randomness()[0].into();
let h56: AB::ExprEF = builder.permutation_randomness()[1].into();
let e521 = h56.dup() * h56.dup();
let e522 = e521.dup() * h56.dup();
let e523 = e522.dup() * h56.dup();
let e524 = e523.dup() * h56.dup();
let e525 = e524.dup() * h56.dup();
let e526 = e525.dup() * h56.dup();
let e527 = e526.dup() * h56.dup();
let e528 = e527.dup() * h56.dup();
let e529 = e528.dup() * h56.dup();
let e530 = e529.dup() * h56.dup();
let e531 = e530.dup() * h56.dup();
let e532 = e531.dup() * h56.dup();
let e533 = e532.dup() * h56.dup();
let e534 = e533.dup() * h56.dup();
let e535 = e534.dup() * h56.dup();
let h57: AB::Expr = AB::Expr::from(Felt::from_u64(5));
let e538 = e535.dup() * h57.dup();
let e539 = h55.dup() + e538.dup();
let e541 = e539.dup() + AB::Expr::from(h14);
let e543 = e521.dup() * AB::Expr::from(h7);
let e545 = e522.dup() * AB::Expr::from(h33);
let e546 = e543.dup() + e545.dup();
let e548 = e523.dup() * AB::Expr::from(h36);
let e549 = e546.dup() + e548.dup();
let e551 = e524.dup() * AB::Expr::from(h39);
let e552 = e549.dup() + e551.dup();
let e554 = e525.dup() * AB::Expr::from(h45);
let e555 = e552.dup() + e554.dup();
let e557 = e526.dup() * AB::Expr::from(h46);
let e558 = e555.dup() + e557.dup();
let e560 = e527.dup() * AB::Expr::from(h47);
let e561 = e558.dup() + e560.dup();
let e563 = e528.dup() * AB::Expr::from(h48);
let e564 = e561.dup() + e563.dup();
let e566 = e529.dup() * AB::Expr::from(h23);
let e567 = e564.dup() + e566.dup();
let e569 = e530.dup() * AB::Expr::from(h25);
let e570 = e567.dup() + e569.dup();
let e572 = e531.dup() * AB::Expr::from(h27);
let e573 = e570.dup() + e572.dup();
let e575 = e532.dup() * AB::Expr::from(h29);
let e576 = e573.dup() + e575.dup();
let e577 = e541.dup() + e576.dup();
let e578 = e577.dup() - h1.dup();
let b579 = b60.dup() * b74.dup();
let b580 = b579.dup() * b106.dup();
let b581 = b580.dup() * h16;
let e583 = e578.dup() * b581.dup();
let e584 = e583.dup() + h1.dup();
let e586 = e535.dup() * h53.dup();
let e587 = h55.dup() + e586.dup();
let e588 = e587.dup() + AB::Expr::from(h14);
let e589 = e588.dup() + e564.dup();
let e590 = e589.dup() - h1.dup();
let b591 = b580.dup() * b153.dup();
let e593 = e590.dup() * b591.dup();
let e594 = e584.dup() + e593.dup();
let h58: AB::Expr = AB::Expr::from(Felt::from_u64(9));
let e597 = e535.dup() * h58.dup();
let e598 = h55.dup() + e597.dup();
let e600 = h56.dup() * AB::Expr::from(h20);
let e601 = e600.dup() + AB::Expr::from(h14);
let e602 = e598.dup() + e601.dup();
let b603 = h20 - b142.dup();
let b604 = h1.dup() - b603.dup();
let b605 = b604.dup() * h7;
let b606 = b603.dup() * h45;
let b607 = b605.dup() + b606.dup();
let e609 = e521.dup() * b607.dup();
let b610 = b604.dup() * h33;
let b611 = b603.dup() * h46;
let b612 = b610.dup() + b611.dup();
let e614 = e522.dup() * b612.dup();
let e615 = e609.dup() + e614.dup();
let b616 = b604.dup() * h36;
let b617 = b603.dup() * h47;
let b618 = b616.dup() + b617.dup();
let e620 = e523.dup() * b618.dup();
let e621 = e615.dup() + e620.dup();
let b622 = b604.dup() * h39;
let b623 = b603.dup() * h48;
let b624 = b622.dup() + b623.dup();
let e626 = e524.dup() * b624.dup();
let e627 = e621.dup() + e626.dup();
let e628 = e602.dup() + e627.dup();
let e629 = e628.dup() - h1.dup();
let b630 = b579.dup() * h6;
let b631 = b630.dup() * h16;
let e633 = e629.dup() * b631.dup();
let e634 = e594.dup() + e633.dup();
let h59: AB::Expr = AB::Expr::from(Felt::from_u64(10));
let e637 = e535.dup() * h59.dup();
let e638 = h55.dup() + e637.dup();
let e639 = e638.dup() + e601.dup();
let e640 = e639.dup() + e627.dup();
let e641 = e640.dup() - h1.dup();
let b642 = b60.dup() * h5;
let b643 = b642.dup() * b106.dup();
let b644 = b643.dup() * h16;
let e646 = e641.dup() * b644.dup();
let e647 = e634.dup() + e646.dup();
let h60: AB::Expr = AB::Expr::from(Felt::from_u64(11));
let e650 = e535.dup() * h60.dup();
let e651 = h55.dup() + e650.dup();
let e652 = e651.dup() + e601.dup();
let e653 = e652.dup() + e627.dup();
let e654 = e653.dup() - h1.dup();
let b655 = b642.dup() * h6;
let b656 = b655.dup() * h16;
let e658 = e654.dup() * b656.dup();
let e659 = e647.dup() + e658.dup();
let h61: AB::Expr = AB::Expr::from(Felt::from_u64(8));
let e662 = e535.dup() * h61.dup();
let e663 = h55.dup() + e662.dup();
let e664 = e663.dup() + e601.dup();
let e665 = e664.dup() + e552.dup();
let e666 = e665.dup() - h1.dup();
let b667 = b59.dup() * b73.dup();
let b668 = b667.dup() * b74.dup();
let b669 = b668.dup() * b106.dup();
let e671 = e666.dup() * b669.dup();
let e672 = e659.dup() + e671.dup();
let h62: AB::Expr = AB::Expr::from(Felt::from_u64(6));
let e675 = e535.dup() * h62.dup();
let e676 = h55.dup() + e675.dup();
let e677 = e676.dup() + AB::Expr::from(h14);
let e678 = e677.dup() + e576.dup();
let e679 = e678.dup() - h1.dup();
let b680 = b668.dup() * h6;
let b681 = b680.dup() * h16;
let e683 = e679.dup() * b681.dup();
let e684 = e672.dup() + e683.dup();
let e686 = e535.dup() * h50.dup();
let e687 = h55.dup() + e686.dup();
let e689 = e687.dup() + AB::Expr::from(h5);
let e691 = h56.dup() * AB::Expr::from(h6);
let e692 = e689.dup() + e691.dup();
let e693 = e692.dup() + e543.dup();
let e694 = e522.dup() * AB::Expr::from(h27);
let e695 = e693.dup() + e694.dup();
let e696 = e695.dup() - h1.dup();
let b697 = h1.dup() - h44.dup();
let b698 = b219.dup() * b697.dup();
let e700 = e696.dup() * b698.dup();
let e701 = e684.dup() + e700.dup();
let h63: AB::Expr = AB::Expr::from(Felt::from_u64(12));
let e704 = e535.dup() * h63.dup();
let e705 = h55.dup() + e704.dup();
let e706 = e705.dup() * AB::Expr::from(h6);
let h64: AB::Expr = AB::Expr::from(Felt::from_u64(13));
let e709 = e535.dup() * h64.dup();
let e710 = h55.dup() + e709.dup();
let e712 = e710.dup() * b106.dup();
let e713 = e706.dup() + e712.dup();
let b714 = h1.dup() - h7;
let e716 = e713.dup() * b714.dup();
let h65: AB::Expr = AB::Expr::from(Felt::from_u64(14));
let e719 = e535.dup() * h65.dup();
let e720 = h55.dup() + e719.dup();
let e721 = e720.dup() * AB::Expr::from(h6);
let h66: AB::Expr = AB::Expr::from(Felt::from_u64(15));
let e724 = e535.dup() * h66.dup();
let e725 = h55.dup() + e724.dup();
let e726 = e725.dup() * b106.dup();
let e727 = e721.dup() + e726.dup();
let e728 = e727.dup() * AB::Expr::from(h7);
let e729 = e716.dup() + e728.dup();
let e730 = e729.dup() + AB::Expr::from(h33);
let h67: AB::Expr = AB::Expr::from(Felt::from_u64(2));
let b732 = h45 * h67.dup();
let b733 = h36 + b732.dup();
let b734 = b733.dup() + h39;
let e736 = h56.dup() * b734.dup();
let e737 = e730.dup() + e736.dup();
let e738 = e521.dup() * AB::Expr::from(h46);
let e739 = e737.dup() + e738.dup();
let b740 = h1.dup() - h39;
let b741 = h47 * b740.dup();
let b742 = h1.dup() - h45;
let b743 = b741.dup() * b742.dup();
let b744 = h48 * h39;
let b745 = b744.dup() * b742.dup();
let b746 = b743.dup() + b745.dup();
let b747 = h23 * b740.dup();
let b748 = b747.dup() * h45;
let b749 = b746.dup() + b748.dup();
let b750 = h25 * h39;
let b751 = b750.dup() * h45;
let b752 = b749.dup() + b751.dup();
let e754 = e522.dup() * b752.dup();
let e755 = e754.dup() * b714.dup();
let e756 = e739.dup() + e755.dup();
let e757 = e522.dup() * AB::Expr::from(h47);
let e758 = e523.dup() * AB::Expr::from(h48);
let e759 = e757.dup() + e758.dup();
let e760 = e524.dup() * AB::Expr::from(h23);
let e761 = e759.dup() + e760.dup();
let e762 = e525.dup() * AB::Expr::from(h25);
let e763 = e761.dup() + e762.dup();
let e764 = e763.dup() * AB::Expr::from(h7);
let e765 = e756.dup() + e764.dup();
let e766 = e765.dup() - h1.dup();
let e768 = e766.dup() * b333.dup();
let e769 = e701.dup() + e768.dup();
let h68: AB::Expr = AB::Expr::from(Felt::from_u64(17));
let e772 = e535.dup() * h68.dup();
let e773 = h55.dup() + e772.dup();
let e774 = e773.dup() + AB::Expr::from(h45);
let e775 = h56.dup() * AB::Expr::from(h36);
let e776 = e774.dup() + e775.dup();
let e777 = e521.dup() * AB::Expr::from(h39);
let e778 = e776.dup() + e777.dup();
let b779 = h47 + h1.dup();
let b780 = h20 + h1.dup();
let b781 = b779.dup() - b780.dup();
let e783 = e522.dup() * b781.dup();
let e784 = e778.dup() + e783.dup();
let e786 = e523.dup() * b780.dup();
let e787 = e784.dup() + e786.dup();
let e788 = e787.dup() - h1.dup();
let b789 = b443.dup() * h7;
let e791 = e788.dup() * b789.dup();
let e792 = e769.dup() + e791.dup();
let e793 = h55.dup() + e535.dup();
let e794 = e793.dup() + AB::Expr::from(h36);
let e795 = h56.dup() * AB::Expr::from(h39);
let e796 = e794.dup() + e795.dup();
let e797 = e521.dup() * AB::Expr::from(h45);
let e798 = e796.dup() + e797.dup();
let e799 = e522.dup() * AB::Expr::from(h46);
let e800 = e798.dup() + e799.dup();
let e802 = e535.dup() * h52.dup();
let e803 = h55.dup() + e802.dup();
let e804 = e803.dup() + AB::Expr::from(h36);
let e805 = e804.dup() + e795.dup();
let e806 = e805.dup() + e797.dup();
let e807 = e806.dup() + e799.dup();
let e808 = e800.dup() * e807.dup();
let e809 = e808.dup() - h1.dup();
let b810 = b23.dup() - b40.dup();
let e812 = e809.dup() * b810.dup();
let e813 = e792.dup() + e812.dup();
let h69 = a1[0];
let h70 = a0[1];
let e816 = Into::<AB::ExprEF>::into(h54) + Into::<AB::ExprEF>::into(h70);
let h71 = a0[2];
let e818 = e816.dup() + Into::<AB::ExprEF>::into(h71);
let e819 = Into::<AB::ExprEF>::into(h69) - e818.dup();
let h72: AB::ExprEF = builder.permutation_values()[0].clone().into();
let e821 = e819.dup() + h72.dup();
let e822 = e813.dup() * e821.dup();
let e823 = AB::ExprEF::from(b581.dup()) + b591.dup();
let e824 = e823.dup() + b631.dup();
let e825 = e824.dup() + b644.dup();
let e826 = e825.dup() + b656.dup();
let e827 = e826.dup() + b669.dup();
let e828 = e827.dup() + b681.dup();
let e829 = e828.dup() + b698.dup();
let e830 = e829.dup() + b333.dup();
let e831 = e830.dup() + b789.dup();
let h73: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584320));
let e834 = e807.dup() * h73.dup();
let e835 = e800.dup() * AB::Expr::from(h33);
let e836 = e834.dup() + e835.dup();
let e837 = e836.dup() * b810.dup();
let e838 = e831.dup() + e837.dup();
let e839 = e822.dup() - e838.dup();
builder.assert_zero_ext(e839.dup());
let h74: AB::Expr = AB::Expr::from(Felt::from_u64(21));
let e842 = e535.dup() * h74.dup();
let e843 = h55.dup() + e842.dup();
let e845 = h56.dup() * AB::Expr::from(h43);
let e846 = e521.dup() * AB::Expr::from(h20);
let e847 = e845.dup() + e846.dup();
let e848 = e843.dup() + e847.dup();
let e849 = e526.dup() * AB::Expr::from(h45);
let e850 = e527.dup() * AB::Expr::from(h46);
let e851 = e849.dup() + e850.dup();
let e852 = e528.dup() * AB::Expr::from(h47);
let e853 = e851.dup() + e852.dup();
let e854 = e529.dup() * AB::Expr::from(h48);
let e855 = e853.dup() + e854.dup();
let e856 = e848.dup() + e855.dup();
let e857 = e856.dup() - h1.dup();
let b858 = b643.dup() * b604.dup();
let e860 = e857.dup() * b858.dup();
let e861 = e860.dup() + h1.dup();
let e862 = e522.dup() * AB::Expr::from(h7);
let e863 = e523.dup() * AB::Expr::from(h33);
let e864 = e862.dup() + e863.dup();
let e865 = e524.dup() * AB::Expr::from(h36);
let e866 = e864.dup() + e865.dup();
let e867 = e525.dup() * AB::Expr::from(h39);
let e868 = e866.dup() + e867.dup();
let e869 = e848.dup() + e868.dup();
let e870 = e869.dup() - h1.dup();
let b871 = b643.dup() * b603.dup();
let e873 = e870.dup() * b871.dup();
let e874 = e861.dup() + e873.dup();
let b875 = b655.dup() * b604.dup();
let e877 = e857.dup() * b875.dup();
let e878 = e874.dup() + e877.dup();
let b879 = b655.dup() * b603.dup();
let e881 = e870.dup() * b879.dup();
let e882 = e878.dup() + e881.dup();
let e883 = e795.dup() + AB::Expr::from(h36);
let e884 = e883.dup() + e797.dup();
let e885 = e720.dup() + e884.dup();
let e886 = e522.dup() * AB::Expr::from(h48);
let e887 = e523.dup() * AB::Expr::from(h23);
let e888 = e886.dup() + e887.dup();
let e889 = e524.dup() * AB::Expr::from(h27);
let e890 = e888.dup() + e889.dup();
let e891 = e525.dup() * AB::Expr::from(h29);
let e892 = e890.dup() + e891.dup();
let e893 = e885.dup() + e892.dup();
let e894 = e893.dup() - h1.dup();
let b895 = b443.dup() * b462.dup();
let e897 = e894.dup() * b895.dup();
let e898 = e882.dup() + e897.dup();
let h75: AB::Expr = AB::Expr::from(Felt::from_u64(1073741824));
let b900 = h20 * h75.dup();
let b901 = h25 + b900.dup();
let b902 = h46 + h1.dup();
let h76: AB::Expr = AB::Expr::from(Felt::from_u64(1152921504606846976));
let b904 = b902.dup() * h76.dup();
let b905 = b901.dup() + b904.dup();
let e907 = e522.dup() * b905.dup();
let e908 = e884.dup() + e907.dup();
let e909 = e705.dup() + e908.dup();
let e910 = e909.dup() - h1.dup();
let e912 = e910.dup() * b482.dup();
let e913 = e898.dup() + e912.dup();
let h77: AB::Expr = AB::Expr::from(Felt::from_u64(22));
let e916 = e535.dup() * h77.dup();
let e917 = h55.dup() + e916.dup();
let e918 = e917.dup() + AB::Expr::from(h27);
let e919 = e917.dup() + AB::Expr::from(h29);
let e920 = e918.dup() * e919.dup();
let e922 = e917.dup() + AB::Expr::from(h16);
let e923 = e920.dup() * e922.dup();
let e925 = e917.dup() + AB::Expr::from(h17);
let e926 = e923.dup() * e925.dup();
let b927 = h17 * h52.dup();
let e929 = e917.dup() + b927.dup();
let e930 = e926.dup() * e929.dup();
let e931 = e930.dup() - h1.dup();
let e932 = e931.dup() * b333.dup();
let e933 = e913.dup() + e932.dup();
let e934 = e933.dup() * Into::<AB::ExprEF>::into(h70);
let e935 = AB::ExprEF::from(b858.dup()) + b871.dup();
let e936 = e935.dup() - b875.dup();
let e937 = e936.dup() - b879.dup();
let e938 = e937.dup() - b895.dup();
let e939 = e938.dup() - b482.dup();
let e940 = e919.dup() * h73.dup();
let e941 = e940.dup() - e918.dup();
let e942 = e941.dup() * e922.dup();
let e943 = e942.dup() - e920.dup();
let e944 = e943.dup() * e925.dup();
let e945 = e944.dup() - e923.dup();
let e946 = e945.dup() * e929.dup();
let e947 = e946.dup() - e926.dup();
let e948 = e947.dup() * b333.dup();
let e949 = e939.dup() + e948.dup();
let e950 = e934.dup() - e949.dup();
builder.assert_zero_ext(e950.dup());
let h78: AB::Expr = AB::Expr::from(Felt::from_u64(23));
let e953 = e535.dup() * h78.dup();
let e954 = h55.dup() + e953.dup();
let e955 = e954.dup() + AB::Expr::from(h45);
let e956 = e955.dup() + e775.dup();
let e957 = e521.dup() * AB::Expr::from(h47);
let e958 = e956.dup() + e957.dup();
let e959 = e958.dup() + e886.dup();
let e960 = e959.dup() + e887.dup();
let e961 = e521.dup() * AB::Expr::from(h25);
let e962 = e956.dup() + e961.dup();
let e963 = e962.dup() + e694.dup();
let e964 = e523.dup() * AB::Expr::from(h29);
let e965 = e963.dup() + e964.dup();
let e966 = e960.dup() * e965.dup();
let e967 = e956.dup() + e846.dup();
let e968 = e522.dup() * AB::Expr::from(h43);
let e969 = e967.dup() + e968.dup();
let e970 = e523.dup() * AB::Expr::from(h16);
let e971 = e969.dup() + e970.dup();
let e972 = e966.dup() * e971.dup();
let e973 = e972.dup() - h1.dup();
let e975 = e973.dup() * b443.dup();
let e976 = e975.dup() + h1.dup();
let h79: AB::Expr = AB::Expr::from(Felt::from_u64(24));
let e979 = e535.dup() * h79.dup();
let e980 = h55.dup() + e979.dup();
let e982 = e980.dup() + AB::Expr::from(h18);
let e983 = e982.dup() + e576.dup();
let e984 = e983.dup() - h1.dup();
let e986 = e984.dup() * b60.dup();
let e987 = e976.dup() + e986.dup();
let h80: AB::Expr = AB::Expr::from(Felt::from_u64(25));
let e990 = e535.dup() * h80.dup();
let e991 = h55.dup() + e990.dup();
let e992 = e991.dup() + AB::Expr::from(h18);
let e993 = e992.dup() + e576.dup();
let e994 = e993.dup() - h1.dup();
let e996 = e994.dup() * b163.dup();
let e997 = e987.dup() + e996.dup();
let e998 = e997.dup() * Into::<AB::ExprEF>::into(h71);
let e999 = e965.dup() * AB::Expr::from(h17);
let b1000 = b462.dup() * h16;
let b1001 = b1000.dup() - h33;
let e1003 = e960.dup() * b1001.dup();
let e1004 = e999.dup() + e1003.dup();
let e1005 = e1004.dup() * e971.dup();
let b1006 = -AB::Expr::from(h33);
let e1008 = e966.dup() * b1006.dup();
let e1009 = e1005.dup() + e1008.dup();
let e1010 = e1009.dup() * b443.dup();
let e1011 = e1010.dup() + b60.dup();
let e1012 = e1011.dup() + b163.dup();
let e1013 = e998.dup() - e1012.dup();
builder.assert_zero_ext(e1013.dup());
}
#[inline(never)]
pub fn eval_poseidon2_permutation<AB: LiftedAirBuilder<F = Felt>>(builder: &mut AB) {
let main = builder.main();
let m0 = main.current_slice();
let m1 = main.next_slice();
let aux = builder.permutation();
let a0 = aux.current_slice();
let a1 = aux.next_slice();
let _ = (&m1, &a0, &a1);
let h0: AB::Expr = builder.periodic_values()[1].into();
let h1 = m0[0];
let b2 = h0.dup() * h1;
builder.assert_zero(b2.dup());
let h2: AB::Expr = AB::Expr::from(Felt::from_u64(1));
let h3: AB::Expr = builder.periodic_values()[2].into();
let b5 = h2.dup() - h3.dup();
let h4 = m0[1];
let b7 = b5.dup() * h4;
builder.assert_zero(b7.dup());
let h5 = m0[2];
let b9 = b5.dup() * h5;
builder.assert_zero(b9.dup());
let h6: AB::Expr = builder.periodic_values()[0].into();
let h7 = m1[3];
let h8 = m0[3];
let h9 = m0[4];
let b14 = h8 + h9;
let h10 = m0[5];
let h11 = m0[6];
let b17 = h10 + h11;
let b18 = b14.dup() + b17.dup();
let b19 = b18.dup() + h9;
let b20 = b19.dup() + b14.dup();
let h12 = m0[7];
let h13 = m0[8];
let b23 = h12 + h13;
let h14 = m0[9];
let h15 = m0[10];
let b26 = h14 + h15;
let b27 = b23.dup() + b26.dup();
let b28 = b27.dup() + h13;
let b29 = b28.dup() + b23.dup();
let b30 = b20.dup() + b29.dup();
let h16 = m0[11];
let h17 = m0[12];
let b33 = h16 + h17;
let h18 = m0[13];
let h19 = m0[14];
let b36 = h18 + h19;
let b37 = b33.dup() + b36.dup();
let b38 = b37.dup() + h17;
let b39 = b38.dup() + b33.dup();
let b40 = b30.dup() + b39.dup();
let b41 = b20.dup() + b40.dup();
let h20: AB::Expr = builder.periodic_values()[4].into();
let b43 = b41.dup() + h20.dup();
let b44 = b43.dup() * b43.dup();
let b45 = b44.dup() * b43.dup();
let b46 = b44.dup() * b44.dup();
let b47 = b45.dup() * b46.dup();
let b48 = h10 + h10;
let b49 = b19.dup() + b48.dup();
let b50 = h14 + h14;
let b51 = b28.dup() + b50.dup();
let b52 = b49.dup() + b51.dup();
let b53 = h18 + h18;
let b54 = b38.dup() + b53.dup();
let b55 = b52.dup() + b54.dup();
let b56 = b49.dup() + b55.dup();
let h21: AB::Expr = builder.periodic_values()[5].into();
let b58 = b56.dup() + h21.dup();
let b59 = b58.dup() * b58.dup();
let b60 = b59.dup() * b58.dup();
let b61 = b59.dup() * b59.dup();
let b62 = b60.dup() * b61.dup();
let b63 = b47.dup() + b62.dup();
let b64 = b18.dup() + h11;
let b65 = b64.dup() + b17.dup();
let b66 = b27.dup() + h15;
let b67 = b66.dup() + b26.dup();
let b68 = b65.dup() + b67.dup();
let b69 = b37.dup() + h19;
let b70 = b69.dup() + b36.dup();
let b71 = b68.dup() + b70.dup();
let b72 = b65.dup() + b71.dup();
let h22: AB::Expr = builder.periodic_values()[6].into();
let b74 = b72.dup() + h22.dup();
let b75 = b74.dup() * b74.dup();
let b76 = b75.dup() * b74.dup();
let b77 = b75.dup() * b75.dup();
let b78 = b76.dup() * b77.dup();
let b79 = h8 + h8;
let b80 = b64.dup() + b79.dup();
let b81 = h12 + h12;
let b82 = b66.dup() + b81.dup();
let b83 = b80.dup() + b82.dup();
let b84 = h16 + h16;
let b85 = b69.dup() + b84.dup();
let b86 = b83.dup() + b85.dup();
let b87 = b80.dup() + b86.dup();
let h23: AB::Expr = builder.periodic_values()[7].into();
let b89 = b87.dup() + h23.dup();
let b90 = b89.dup() * b89.dup();
let b91 = b90.dup() * b89.dup();
let b92 = b90.dup() * b90.dup();
let b93 = b91.dup() * b92.dup();
let b94 = b78.dup() + b93.dup();
let b95 = b63.dup() + b94.dup();
let b96 = b95.dup() + b62.dup();
let b97 = b96.dup() + b63.dup();
let b98 = b29.dup() + b40.dup();
let h24: AB::Expr = builder.periodic_values()[8].into();
let b100 = b98.dup() + h24.dup();
let b101 = b100.dup() * b100.dup();
let b102 = b101.dup() * b100.dup();
let b103 = b101.dup() * b101.dup();
let b104 = b102.dup() * b103.dup();
let b105 = b51.dup() + b55.dup();
let h25: AB::Expr = builder.periodic_values()[9].into();
let b107 = b105.dup() + h25.dup();
let b108 = b107.dup() * b107.dup();
let b109 = b108.dup() * b107.dup();
let b110 = b108.dup() * b108.dup();
let b111 = b109.dup() * b110.dup();
let b112 = b104.dup() + b111.dup();
let b113 = b67.dup() + b71.dup();
let h26: AB::Expr = builder.periodic_values()[10].into();
let b115 = b113.dup() + h26.dup();
let b116 = b115.dup() * b115.dup();
let b117 = b116.dup() * b115.dup();
let b118 = b116.dup() * b116.dup();
let b119 = b117.dup() * b118.dup();
let b120 = b82.dup() + b86.dup();
let h27: AB::Expr = builder.periodic_values()[11].into();
let b122 = b120.dup() + h27.dup();
let b123 = b122.dup() * b122.dup();
let b124 = b123.dup() * b122.dup();
let b125 = b123.dup() * b123.dup();
let b126 = b124.dup() * b125.dup();
let b127 = b119.dup() + b126.dup();
let b128 = b112.dup() + b127.dup();
let b129 = b128.dup() + b111.dup();
let b130 = b129.dup() + b112.dup();
let b131 = b97.dup() + b130.dup();
let b132 = b39.dup() + b40.dup();
let h28: AB::Expr = builder.periodic_values()[12].into();
let b134 = b132.dup() + h28.dup();
let b135 = b134.dup() * b134.dup();
let b136 = b135.dup() * b134.dup();
let b137 = b135.dup() * b135.dup();
let b138 = b136.dup() * b137.dup();
let b139 = b54.dup() + b55.dup();
let h29: AB::Expr = builder.periodic_values()[13].into();
let b141 = b139.dup() + h29.dup();
let b142 = b141.dup() * b141.dup();
let b143 = b142.dup() * b141.dup();
let b144 = b142.dup() * b142.dup();
let b145 = b143.dup() * b144.dup();
let b146 = b138.dup() + b145.dup();
let b147 = b70.dup() + b71.dup();
let h30: AB::Expr = builder.periodic_values()[14].into();
let b149 = b147.dup() + h30.dup();
let b150 = b149.dup() * b149.dup();
let b151 = b150.dup() * b149.dup();
let b152 = b150.dup() * b150.dup();
let b153 = b151.dup() * b152.dup();
let b154 = b85.dup() + b86.dup();
let h31: AB::Expr = builder.periodic_values()[15].into();
let b156 = b154.dup() + h31.dup();
let b157 = b156.dup() * b156.dup();
let b158 = b157.dup() * b156.dup();
let b159 = b157.dup() * b157.dup();
let b160 = b158.dup() * b159.dup();
let b161 = b153.dup() + b160.dup();
let b162 = b146.dup() + b161.dup();
let b163 = b162.dup() + b145.dup();
let b164 = b163.dup() + b146.dup();
let b165 = b131.dup() + b164.dup();
let b166 = b97.dup() + b165.dup();
let b167 = h7 - b166.dup();
let b168 = h6.dup() * b167.dup();
builder.assert_zero(b168.dup());
let h32 = m1[4];
let b170 = b78.dup() + b78.dup();
let b171 = b96.dup() + b170.dup();
let b172 = b119.dup() + b119.dup();
let b173 = b129.dup() + b172.dup();
let b174 = b171.dup() + b173.dup();
let b175 = b153.dup() + b153.dup();
let b176 = b163.dup() + b175.dup();
let b177 = b174.dup() + b176.dup();
let b178 = b171.dup() + b177.dup();
let b179 = h32 - b178.dup();
let b180 = h6.dup() * b179.dup();
builder.assert_zero(b180.dup());
let h33 = m1[5];
let b182 = b95.dup() + b93.dup();
let b183 = b182.dup() + b94.dup();
let b184 = b128.dup() + b126.dup();
let b185 = b184.dup() + b127.dup();
let b186 = b183.dup() + b185.dup();
let b187 = b162.dup() + b160.dup();
let b188 = b187.dup() + b161.dup();
let b189 = b186.dup() + b188.dup();
let b190 = b183.dup() + b189.dup();
let b191 = h33 - b190.dup();
let b192 = h6.dup() * b191.dup();
builder.assert_zero(b192.dup());
let h34 = m1[6];
let b194 = b47.dup() + b47.dup();
let b195 = b182.dup() + b194.dup();
let b196 = b104.dup() + b104.dup();
let b197 = b184.dup() + b196.dup();
let b198 = b195.dup() + b197.dup();
let b199 = b138.dup() + b138.dup();
let b200 = b187.dup() + b199.dup();
let b201 = b198.dup() + b200.dup();
let b202 = b195.dup() + b201.dup();
let b203 = h34 - b202.dup();
let b204 = h6.dup() * b203.dup();
builder.assert_zero(b204.dup());
let h35 = m1[7];
let b206 = b130.dup() + b165.dup();
let b207 = h35 - b206.dup();
let b208 = h6.dup() * b207.dup();
builder.assert_zero(b208.dup());
let h36 = m1[8];
let b210 = b173.dup() + b177.dup();
let b211 = h36 - b210.dup();
let b212 = h6.dup() * b211.dup();
builder.assert_zero(b212.dup());
let h37 = m1[9];
let b214 = b185.dup() + b189.dup();
let b215 = h37 - b214.dup();
let b216 = h6.dup() * b215.dup();
builder.assert_zero(b216.dup());
let h38 = m1[10];
let b218 = b197.dup() + b201.dup();
let b219 = h38 - b218.dup();
let b220 = h6.dup() * b219.dup();
builder.assert_zero(b220.dup());
let h39 = m1[11];
let b222 = b164.dup() + b165.dup();
let b223 = h39 - b222.dup();
let b224 = h6.dup() * b223.dup();
builder.assert_zero(b224.dup());
let h40 = m1[12];
let b226 = b176.dup() + b177.dup();
let b227 = h40 - b226.dup();
let b228 = h6.dup() * b227.dup();
builder.assert_zero(b228.dup());
let h41 = m1[13];
let b230 = b188.dup() + b189.dup();
let b231 = h41 - b230.dup();
let b232 = h6.dup() * b231.dup();
builder.assert_zero(b232.dup());
let h42 = m1[14];
let b234 = b200.dup() + b201.dup();
let b235 = h42 - b234.dup();
let b236 = h6.dup() * b235.dup();
builder.assert_zero(b236.dup());
let b237 = h8 + h20.dup();
let b238 = b237.dup() * b237.dup();
let b239 = b238.dup() * b237.dup();
let b240 = b238.dup() * b238.dup();
let b241 = b239.dup() * b240.dup();
let b242 = h9 + h21.dup();
let b243 = b242.dup() * b242.dup();
let b244 = b243.dup() * b242.dup();
let b245 = b243.dup() * b243.dup();
let b246 = b244.dup() * b245.dup();
let b247 = b241.dup() + b246.dup();
let b248 = h10 + h22.dup();
let b249 = b248.dup() * b248.dup();
let b250 = b249.dup() * b248.dup();
let b251 = b249.dup() * b249.dup();
let b252 = b250.dup() * b251.dup();
let b253 = h11 + h23.dup();
let b254 = b253.dup() * b253.dup();
let b255 = b254.dup() * b253.dup();
let b256 = b254.dup() * b254.dup();
let b257 = b255.dup() * b256.dup();
let b258 = b252.dup() + b257.dup();
let b259 = b247.dup() + b258.dup();
let b260 = b259.dup() + b246.dup();
let b261 = b260.dup() + b247.dup();
let b262 = h12 + h24.dup();
let b263 = b262.dup() * b262.dup();
let b264 = b263.dup() * b262.dup();
let b265 = b263.dup() * b263.dup();
let b266 = b264.dup() * b265.dup();
let b267 = h13 + h25.dup();
let b268 = b267.dup() * b267.dup();
let b269 = b268.dup() * b267.dup();
let b270 = b268.dup() * b268.dup();
let b271 = b269.dup() * b270.dup();
let b272 = b266.dup() + b271.dup();
let b273 = h14 + h26.dup();
let b274 = b273.dup() * b273.dup();
let b275 = b274.dup() * b273.dup();
let b276 = b274.dup() * b274.dup();
let b277 = b275.dup() * b276.dup();
let b278 = h15 + h27.dup();
let b279 = b278.dup() * b278.dup();
let b280 = b279.dup() * b278.dup();
let b281 = b279.dup() * b279.dup();
let b282 = b280.dup() * b281.dup();
let b283 = b277.dup() + b282.dup();
let b284 = b272.dup() + b283.dup();
let b285 = b284.dup() + b271.dup();
let b286 = b285.dup() + b272.dup();
let b287 = b261.dup() + b286.dup();
let b288 = h16 + h28.dup();
let b289 = b288.dup() * b288.dup();
let b290 = b289.dup() * b288.dup();
let b291 = b289.dup() * b289.dup();
let b292 = b290.dup() * b291.dup();
let b293 = h17 + h29.dup();
let b294 = b293.dup() * b293.dup();
let b295 = b294.dup() * b293.dup();
let b296 = b294.dup() * b294.dup();
let b297 = b295.dup() * b296.dup();
let b298 = b292.dup() + b297.dup();
let b299 = h18 + h30.dup();
let b300 = b299.dup() * b299.dup();
let b301 = b300.dup() * b299.dup();
let b302 = b300.dup() * b300.dup();
let b303 = b301.dup() * b302.dup();
let b304 = h19 + h31.dup();
let b305 = b304.dup() * b304.dup();
let b306 = b305.dup() * b304.dup();
let b307 = b305.dup() * b305.dup();
let b308 = b306.dup() * b307.dup();
let b309 = b303.dup() + b308.dup();
let b310 = b298.dup() + b309.dup();
let b311 = b310.dup() + b297.dup();
let b312 = b311.dup() + b298.dup();
let b313 = b287.dup() + b312.dup();
let b314 = b261.dup() + b313.dup();
let b315 = h7 - b314.dup();
let b316 = h0.dup() * b315.dup();
builder.assert_zero(b316.dup());
let b317 = b252.dup() + b252.dup();
let b318 = b260.dup() + b317.dup();
let b319 = b277.dup() + b277.dup();
let b320 = b285.dup() + b319.dup();
let b321 = b318.dup() + b320.dup();
let b322 = b303.dup() + b303.dup();
let b323 = b311.dup() + b322.dup();
let b324 = b321.dup() + b323.dup();
let b325 = b318.dup() + b324.dup();
let b326 = h32 - b325.dup();
let b327 = h0.dup() * b326.dup();
builder.assert_zero(b327.dup());
let b328 = b259.dup() + b257.dup();
let b329 = b328.dup() + b258.dup();
let b330 = b284.dup() + b282.dup();
let b331 = b330.dup() + b283.dup();
let b332 = b329.dup() + b331.dup();
let b333 = b310.dup() + b308.dup();
let b334 = b333.dup() + b309.dup();
let b335 = b332.dup() + b334.dup();
let b336 = b329.dup() + b335.dup();
let b337 = h33 - b336.dup();
let b338 = h0.dup() * b337.dup();
builder.assert_zero(b338.dup());
let b339 = b241.dup() + b241.dup();
let b340 = b328.dup() + b339.dup();
let b341 = b266.dup() + b266.dup();
let b342 = b330.dup() + b341.dup();
let b343 = b340.dup() + b342.dup();
let b344 = b292.dup() + b292.dup();
let b345 = b333.dup() + b344.dup();
let b346 = b343.dup() + b345.dup();
let b347 = b340.dup() + b346.dup();
let b348 = h34 - b347.dup();
let b349 = h0.dup() * b348.dup();
builder.assert_zero(b349.dup());
let b350 = b286.dup() + b313.dup();
let b351 = h35 - b350.dup();
let b352 = h0.dup() * b351.dup();
builder.assert_zero(b352.dup());
let b353 = b320.dup() + b324.dup();
let b354 = h36 - b353.dup();
let b355 = h0.dup() * b354.dup();
builder.assert_zero(b355.dup());
let b356 = b331.dup() + b335.dup();
let b357 = h37 - b356.dup();
let b358 = h0.dup() * b357.dup();
builder.assert_zero(b358.dup());
let b359 = b342.dup() + b346.dup();
let b360 = h38 - b359.dup();
let b361 = h0.dup() * b360.dup();
builder.assert_zero(b361.dup());
let b362 = b312.dup() + b313.dup();
let b363 = h39 - b362.dup();
let b364 = h0.dup() * b363.dup();
builder.assert_zero(b364.dup());
let b365 = b323.dup() + b324.dup();
let b366 = h40 - b365.dup();
let b367 = h0.dup() * b366.dup();
builder.assert_zero(b367.dup());
let b368 = b334.dup() + b335.dup();
let b369 = h41 - b368.dup();
let b370 = h0.dup() * b369.dup();
builder.assert_zero(b370.dup());
let b371 = b345.dup() + b346.dup();
let b372 = h42 - b371.dup();
let b373 = h0.dup() * b372.dup();
builder.assert_zero(b373.dup());
let b374 = h1 - b241.dup();
let b375 = h3.dup() * b374.dup();
builder.assert_zero(b375.dup());
let h43: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584319));
let b377 = h1 * h43.dup();
let b378 = h1 + h9;
let b379 = b378.dup() + b17.dup();
let b380 = b379.dup() + b27.dup();
let b381 = b380.dup() + b37.dup();
let b382 = b377.dup() + b381.dup();
let b383 = b382.dup() + h21.dup();
let b384 = b383.dup() * b383.dup();
let b385 = b384.dup() * b383.dup();
let b386 = b384.dup() * b384.dup();
let b387 = b385.dup() * b386.dup();
let b388 = h4 - b387.dup();
let b389 = h3.dup() * b388.dup();
builder.assert_zero(b389.dup());
let b390 = h4 * h43.dup();
let b391 = h9 + b381.dup();
let b392 = h4 + b391.dup();
let h44: AB::Expr = AB::Expr::from(Felt::from_u64(2));
let b394 = h10 * h44.dup();
let b395 = b394.dup() + b381.dup();
let h45: AB::Expr = AB::Expr::from(Felt::from_u64(9223372034707292161));
let b397 = h11 * h45.dup();
let b398 = b397.dup() + b381.dup();
let b399 = b395.dup() + b398.dup();
let b400 = b392.dup() + b399.dup();
let h46: AB::Expr = AB::Expr::from(Felt::from_u64(3));
let b402 = h12 * h46.dup();
let b403 = b402.dup() + b381.dup();
let h47: AB::Expr = AB::Expr::from(Felt::from_u64(4));
let b405 = h13 * h47.dup();
let b406 = b405.dup() + b381.dup();
let b407 = b403.dup() + b406.dup();
let h48: AB::Expr = AB::Expr::from(Felt::from_u64(9223372034707292160));
let b409 = h14 * h48.dup();
let b410 = b409.dup() + b381.dup();
let h49: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584318));
let b412 = h15 * h49.dup();
let b413 = b412.dup() + b381.dup();
let b414 = b410.dup() + b413.dup();
let b415 = b407.dup() + b414.dup();
let b416 = b400.dup() + b415.dup();
let h50: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584317));
let b418 = h16 * h50.dup();
let b419 = b418.dup() + b381.dup();
let h51: AB::Expr = AB::Expr::from(Felt::from_u64(13835058052060938241));
let b421 = h17 * h51.dup();
let b422 = b421.dup() + b381.dup();
let b423 = b419.dup() + b422.dup();
let h52: AB::Expr = AB::Expr::from(Felt::from_u64(4611686017353646080));
let b425 = h18 * h52.dup();
let b426 = b425.dup() + b381.dup();
let h53: AB::Expr = AB::Expr::from(Felt::from_u64(16140901060737761281));
let b428 = h19 * h53.dup();
let b429 = b428.dup() + b381.dup();
let b430 = b426.dup() + b429.dup();
let b431 = b423.dup() + b430.dup();
let b432 = b416.dup() + b431.dup();
let b433 = b390.dup() + b432.dup();
let b434 = b433.dup() + h22.dup();
let b435 = b434.dup() * b434.dup();
let b436 = b435.dup() * b434.dup();
let b437 = b435.dup() * b435.dup();
let b438 = b436.dup() * b437.dup();
let b439 = h5 - b438.dup();
let b440 = h3.dup() * b439.dup();
builder.assert_zero(b440.dup());
let b441 = h5 * h43.dup();
let b442 = b391.dup() + b432.dup();
let b443 = h5 + b442.dup();
let b444 = b395.dup() * h44.dup();
let b445 = b444.dup() + b432.dup();
let b446 = b398.dup() * h45.dup();
let b447 = b446.dup() + b432.dup();
let b448 = b445.dup() + b447.dup();
let b449 = b443.dup() + b448.dup();
let b450 = b403.dup() * h46.dup();
let b451 = b450.dup() + b432.dup();
let b452 = b406.dup() * h47.dup();
let b453 = b452.dup() + b432.dup();
let b454 = b451.dup() + b453.dup();
let b455 = b410.dup() * h48.dup();
let b456 = b455.dup() + b432.dup();
let b457 = b413.dup() * h49.dup();
let b458 = b457.dup() + b432.dup();
let b459 = b456.dup() + b458.dup();
let b460 = b454.dup() + b459.dup();
let b461 = b449.dup() + b460.dup();
let b462 = b419.dup() * h50.dup();
let b463 = b462.dup() + b432.dup();
let b464 = b422.dup() * h51.dup();
let b465 = b464.dup() + b432.dup();
let b466 = b463.dup() + b465.dup();
let b467 = b426.dup() * h52.dup();
let b468 = b467.dup() + b432.dup();
let b469 = b429.dup() * h53.dup();
let b470 = b469.dup() + b432.dup();
let b471 = b468.dup() + b470.dup();
let b472 = b466.dup() + b471.dup();
let b473 = b461.dup() + b472.dup();
let b474 = b441.dup() + b473.dup();
let b475 = h7 - b474.dup();
let b476 = h3.dup() * b475.dup();
builder.assert_zero(b476.dup());
let b477 = b442.dup() + b473.dup();
let b478 = h32 - b477.dup();
let b479 = h3.dup() * b478.dup();
builder.assert_zero(b479.dup());
let b480 = b445.dup() * h44.dup();
let b481 = b480.dup() + b473.dup();
let b482 = h33 - b481.dup();
let b483 = h3.dup() * b482.dup();
builder.assert_zero(b483.dup());
let b484 = b447.dup() * h45.dup();
let b485 = b484.dup() + b473.dup();
let b486 = h34 - b485.dup();
let b487 = h3.dup() * b486.dup();
builder.assert_zero(b487.dup());
let b488 = b451.dup() * h46.dup();
let b489 = b488.dup() + b473.dup();
let b490 = h35 - b489.dup();
let b491 = h3.dup() * b490.dup();
builder.assert_zero(b491.dup());
let b492 = b453.dup() * h47.dup();
let b493 = b492.dup() + b473.dup();
let b494 = h36 - b493.dup();
let b495 = h3.dup() * b494.dup();
builder.assert_zero(b495.dup());
let b496 = b456.dup() * h48.dup();
let b497 = b496.dup() + b473.dup();
let b498 = h37 - b497.dup();
let b499 = h3.dup() * b498.dup();
builder.assert_zero(b499.dup());
let b500 = b458.dup() * h49.dup();
let b501 = b500.dup() + b473.dup();
let b502 = h38 - b501.dup();
let b503 = h3.dup() * b502.dup();
builder.assert_zero(b503.dup());
let b504 = b463.dup() * h50.dup();
let b505 = b504.dup() + b473.dup();
let b506 = h39 - b505.dup();
let b507 = h3.dup() * b506.dup();
builder.assert_zero(b507.dup());
let b508 = b465.dup() * h51.dup();
let b509 = b508.dup() + b473.dup();
let b510 = h40 - b509.dup();
let b511 = h3.dup() * b510.dup();
builder.assert_zero(b511.dup());
let b512 = b468.dup() * h52.dup();
let b513 = b512.dup() + b473.dup();
let b514 = h41 - b513.dup();
let b515 = h3.dup() * b514.dup();
builder.assert_zero(b515.dup());
let b516 = b470.dup() * h53.dup();
let b517 = b516.dup() + b473.dup();
let b518 = h42 - b517.dup();
let b519 = h3.dup() * b518.dup();
builder.assert_zero(b519.dup());
let h54: AB::Expr = builder.periodic_values()[3].into();
let h55: AB::Expr = AB::Expr::from(Felt::from_u64(17850970025369572891));
let b522 = h8 + h55.dup();
let b523 = b522.dup() * b522.dup();
let b524 = b523.dup() * b522.dup();
let b525 = b523.dup() * b523.dup();
let b526 = b524.dup() * b525.dup();
let b527 = h1 - b526.dup();
let b528 = h54.dup() * b527.dup();
builder.assert_zero(b528.dup());
let b529 = b382.dup() + h20.dup();
let b530 = b529.dup() * b529.dup();
let b531 = b530.dup() * b529.dup();
let b532 = b530.dup() * b530.dup();
let b533 = b531.dup() * b532.dup();
let b534 = b391.dup() + h21.dup();
let b535 = b534.dup() * b534.dup();
let b536 = b535.dup() * b534.dup();
let b537 = b535.dup() * b535.dup();
let b538 = b536.dup() * b537.dup();
let b539 = b533.dup() + b538.dup();
let b540 = b395.dup() + h22.dup();
let b541 = b540.dup() * b540.dup();
let b542 = b541.dup() * b540.dup();
let b543 = b541.dup() * b541.dup();
let b544 = b542.dup() * b543.dup();
let b545 = b398.dup() + h23.dup();
let b546 = b545.dup() * b545.dup();
let b547 = b546.dup() * b545.dup();
let b548 = b546.dup() * b546.dup();
let b549 = b547.dup() * b548.dup();
let b550 = b544.dup() + b549.dup();
let b551 = b539.dup() + b550.dup();
let b552 = b551.dup() + b538.dup();
let b553 = b552.dup() + b539.dup();
let b554 = b403.dup() + h24.dup();
let b555 = b554.dup() * b554.dup();
let b556 = b555.dup() * b554.dup();
let b557 = b555.dup() * b555.dup();
let b558 = b556.dup() * b557.dup();
let b559 = b406.dup() + h25.dup();
let b560 = b559.dup() * b559.dup();
let b561 = b560.dup() * b559.dup();
let b562 = b560.dup() * b560.dup();
let b563 = b561.dup() * b562.dup();
let b564 = b558.dup() + b563.dup();
let b565 = b410.dup() + h26.dup();
let b566 = b565.dup() * b565.dup();
let b567 = b566.dup() * b565.dup();
let b568 = b566.dup() * b566.dup();
let b569 = b567.dup() * b568.dup();
let b570 = b413.dup() + h27.dup();
let b571 = b570.dup() * b570.dup();
let b572 = b571.dup() * b570.dup();
let b573 = b571.dup() * b571.dup();
let b574 = b572.dup() * b573.dup();
let b575 = b569.dup() + b574.dup();
let b576 = b564.dup() + b575.dup();
let b577 = b576.dup() + b563.dup();
let b578 = b577.dup() + b564.dup();
let b579 = b553.dup() + b578.dup();
let b580 = b419.dup() + h28.dup();
let b581 = b580.dup() * b580.dup();
let b582 = b581.dup() * b580.dup();
let b583 = b581.dup() * b581.dup();
let b584 = b582.dup() * b583.dup();
let b585 = b422.dup() + h29.dup();
let b586 = b585.dup() * b585.dup();
let b587 = b586.dup() * b585.dup();
let b588 = b586.dup() * b586.dup();
let b589 = b587.dup() * b588.dup();
let b590 = b584.dup() + b589.dup();
let b591 = b426.dup() + h30.dup();
let b592 = b591.dup() * b591.dup();
let b593 = b592.dup() * b591.dup();
let b594 = b592.dup() * b592.dup();
let b595 = b593.dup() * b594.dup();
let b596 = b429.dup() + h31.dup();
let b597 = b596.dup() * b596.dup();
let b598 = b597.dup() * b596.dup();
let b599 = b597.dup() * b597.dup();
let b600 = b598.dup() * b599.dup();
let b601 = b595.dup() + b600.dup();
let b602 = b590.dup() + b601.dup();
let b603 = b602.dup() + b589.dup();
let b604 = b603.dup() + b590.dup();
let b605 = b579.dup() + b604.dup();
let b606 = b553.dup() + b605.dup();
let b607 = h7 - b606.dup();
let b608 = h54.dup() * b607.dup();
builder.assert_zero(b608.dup());
let b609 = b544.dup() + b544.dup();
let b610 = b552.dup() + b609.dup();
let b611 = b569.dup() + b569.dup();
let b612 = b577.dup() + b611.dup();
let b613 = b610.dup() + b612.dup();
let b614 = b595.dup() + b595.dup();
let b615 = b603.dup() + b614.dup();
let b616 = b613.dup() + b615.dup();
let b617 = b610.dup() + b616.dup();
let b618 = h32 - b617.dup();
let b619 = h54.dup() * b618.dup();
builder.assert_zero(b619.dup());
let b620 = b551.dup() + b549.dup();
let b621 = b620.dup() + b550.dup();
let b622 = b576.dup() + b574.dup();
let b623 = b622.dup() + b575.dup();
let b624 = b621.dup() + b623.dup();
let b625 = b602.dup() + b600.dup();
let b626 = b625.dup() + b601.dup();
let b627 = b624.dup() + b626.dup();
let b628 = b621.dup() + b627.dup();
let b629 = h33 - b628.dup();
let b630 = h54.dup() * b629.dup();
builder.assert_zero(b630.dup());
let b631 = b533.dup() + b533.dup();
let b632 = b620.dup() + b631.dup();
let b633 = b558.dup() + b558.dup();
let b634 = b622.dup() + b633.dup();
let b635 = b632.dup() + b634.dup();
let b636 = b584.dup() + b584.dup();
let b637 = b625.dup() + b636.dup();
let b638 = b635.dup() + b637.dup();
let b639 = b632.dup() + b638.dup();
let b640 = h34 - b639.dup();
let b641 = h54.dup() * b640.dup();
builder.assert_zero(b641.dup());
let b642 = b578.dup() + b605.dup();
let b643 = h35 - b642.dup();
let b644 = h54.dup() * b643.dup();
builder.assert_zero(b644.dup());
let b645 = b612.dup() + b616.dup();
let b646 = h36 - b645.dup();
let b647 = h54.dup() * b646.dup();
builder.assert_zero(b647.dup());
let b648 = b623.dup() + b627.dup();
let b649 = h37 - b648.dup();
let b650 = h54.dup() * b649.dup();
builder.assert_zero(b650.dup());
let b651 = b634.dup() + b638.dup();
let b652 = h38 - b651.dup();
let b653 = h54.dup() * b652.dup();
builder.assert_zero(b653.dup());
let b654 = b604.dup() + b605.dup();
let b655 = h39 - b654.dup();
let b656 = h54.dup() * b655.dup();
builder.assert_zero(b656.dup());
let b657 = b615.dup() + b616.dup();
let b658 = h40 - b657.dup();
let b659 = h54.dup() * b658.dup();
builder.assert_zero(b659.dup());
let b660 = b626.dup() + b627.dup();
let b661 = h41 - b660.dup();
let b662 = h54.dup() * b661.dup();
builder.assert_zero(b662.dup());
let b663 = b637.dup() + b638.dup();
let b664 = h42 - b663.dup();
let b665 = h54.dup() * b664.dup();
builder.assert_zero(b665.dup());
let h56: AB::Expr = builder.is_first_row();
let h57 = m0[15];
let b668 = h56.dup() * h57;
builder.assert_zero(b668.dup());
let h58: AB::Expr = builder.is_transition();
let b670 = h6.dup() + h0.dup();
let b671 = b670.dup() + h3.dup();
let b672 = b671.dup() + h54.dup();
let h59 = m1[15];
let b674 = h59 - h57;
let b675 = b672.dup() * b674.dup();
let b676 = h58.dup() * b675.dup();
builder.assert_zero(b676.dup());
let b677 = h2.dup() - b672.dup();
let b678 = h57 + h2.dup();
let b679 = h59 - b678.dup();
let b680 = b677.dup() * b679.dup();
let b681 = h58.dup() * b680.dup();
builder.assert_zero(b681.dup());
let h60 = a0[0];
let e684 = Into::<AB::ExprEF>::into(h60) * h56.dup();
builder.assert_zero_ext(e684.dup());
let h61: AB::ExprEF = builder.permutation_randomness()[0].into();
let h62: AB::ExprEF = builder.permutation_randomness()[1].into();
let e688 = h62.dup() * h62.dup();
let e689 = e688.dup() * h62.dup();
let e690 = e689.dup() * h62.dup();
let e691 = e690.dup() * h62.dup();
let e692 = e691.dup() * h62.dup();
let e693 = e692.dup() * h62.dup();
let e694 = e693.dup() * h62.dup();
let e695 = e694.dup() * h62.dup();
let e696 = e695.dup() * h62.dup();
let e697 = e696.dup() * h62.dup();
let e698 = e697.dup() * h62.dup();
let e699 = e698.dup() * h62.dup();
let e700 = e699.dup() * h62.dup();
let e701 = e700.dup() * h62.dup();
let e702 = e701.dup() * h62.dup();
let h63: AB::Expr = AB::Expr::from(Felt::from_u64(24));
let e705 = e702.dup() * h63.dup();
let e706 = h61.dup() + e705.dup();
let e708 = e706.dup() + AB::Expr::from(h57);
let e710 = e688.dup() * AB::Expr::from(h8);
let e712 = e689.dup() * AB::Expr::from(h9);
let e713 = e710.dup() + e712.dup();
let e715 = e690.dup() * AB::Expr::from(h10);
let e716 = e713.dup() + e715.dup();
let e718 = e691.dup() * AB::Expr::from(h11);
let e719 = e716.dup() + e718.dup();
let e721 = e692.dup() * AB::Expr::from(h12);
let e722 = e719.dup() + e721.dup();
let e724 = e693.dup() * AB::Expr::from(h13);
let e725 = e722.dup() + e724.dup();
let e727 = e694.dup() * AB::Expr::from(h14);
let e728 = e725.dup() + e727.dup();
let e730 = e695.dup() * AB::Expr::from(h15);
let e731 = e728.dup() + e730.dup();
let e733 = e696.dup() * AB::Expr::from(h16);
let e734 = e731.dup() + e733.dup();
let e736 = e697.dup() * AB::Expr::from(h17);
let e737 = e734.dup() + e736.dup();
let e739 = e698.dup() * AB::Expr::from(h18);
let e740 = e737.dup() + e739.dup();
let e742 = e699.dup() * AB::Expr::from(h19);
let e743 = e740.dup() + e742.dup();
let e744 = e708.dup() + e743.dup();
let e745 = e744.dup() - h2.dup();
let e747 = e745.dup() * h6.dup();
let e748 = e747.dup() + h2.dup();
let h64: AB::Expr = AB::Expr::from(Felt::from_u64(25));
let e751 = e702.dup() * h64.dup();
let e752 = h61.dup() + e751.dup();
let e753 = e752.dup() + AB::Expr::from(h57);
let e754 = e753.dup() + e743.dup();
let e755 = e754.dup() - h2.dup();
let e757 = e755.dup() * b677.dup();
let e758 = e748.dup() + e757.dup();
let h65 = a1[0];
let e760 = Into::<AB::ExprEF>::into(h65) - Into::<AB::ExprEF>::into(h60);
let h66: AB::ExprEF = builder.permutation_values()[0].clone().into();
let e762 = e760.dup() + h66.dup();
let e763 = e758.dup() * e762.dup();
let b764 = -AB::Expr::from(h1);
let b765 = h6.dup() * b764.dup();
let b767 = b677.dup() * b764.dup();
let e769 = AB::ExprEF::from(b765.dup()) + b767.dup();
let e770 = e763.dup() - e769.dup();
builder.assert_zero_ext(e770.dup());
}