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 h18 = m0[20];
let b51 = b49.dup() * h18;
let b52 = b45.dup() + b51.dup();
let b53 = h9.dup() - b52.dup();
let b54 = h17 - h2;
let b55 = b53.dup() * b54.dup();
let b56 = h7.dup() * b55.dup();
builder.assert_zero(b56.dup());
let h19 = m1[2];
let h20 = m0[14];
let b59 = h19 - h20;
let b60 = b35.dup() * b59.dup();
builder.assert_zero(b60.dup());
let h21 = m1[3];
let h22 = m0[15];
let b63 = h21 - h22;
let b64 = b35.dup() * b63.dup();
builder.assert_zero(b64.dup());
let h23 = m1[4];
let h24 = m0[16];
let b67 = h23 - h24;
let b68 = b35.dup() * b67.dup();
builder.assert_zero(b68.dup());
let h25 = m1[5];
let h26 = m0[17];
let b71 = h25 - h26;
let b72 = b35.dup() * b71.dup();
builder.assert_zero(b72.dup());
let b73 = b35.dup() + b51.dup();
let b74 = h9.dup() - b73.dup();
let b75 = h19 - h3;
let b76 = b74.dup() * b75.dup();
let b77 = h7.dup() * b76.dup();
builder.assert_zero(b77.dup());
let b78 = h21 - h4;
let b79 = b74.dup() * b78.dup();
let b80 = h7.dup() * b79.dup();
builder.assert_zero(b80.dup());
let b81 = h23 - h5;
let b82 = b74.dup() * b81.dup();
let b83 = h7.dup() * b82.dup();
builder.assert_zero(b83.dup());
let b84 = h25 - h6;
let b85 = b74.dup() * b84.dup();
let b86 = h7.dup() * b85.dup();
builder.assert_zero(b86.dup());
let h27 = m0[50];
let b88 = h0.dup() * h27;
builder.assert_zero(b88.dup());
let h28: AB::Expr = builder.is_last_row();
let h29: AB::Expr = AB::Expr::from(Felt::from_u64(65535));
let b91 = h27 - h29.dup();
let b92 = h28.dup() * b91.dup();
builder.assert_zero(b92.dup());
let h30 = m1[50];
let b94 = h30 - h27;
let b95 = b94.dup() - h9.dup();
let b96 = b94.dup() * b95.dup();
let h31: AB::Expr = AB::Expr::from(Felt::from_u64(3));
let b98 = b94.dup() - h31.dup();
let b99 = b96.dup() * b98.dup();
let h32: AB::Expr = AB::Expr::from(Felt::from_u64(9));
let b101 = b94.dup() - h32.dup();
let b102 = b99.dup() * b101.dup();
let h33: AB::Expr = AB::Expr::from(Felt::from_u64(27));
let b104 = b94.dup() - h33.dup();
let b105 = b102.dup() * b104.dup();
let h34: AB::Expr = AB::Expr::from(Felt::from_u64(81));
let b107 = b94.dup() - h34.dup();
let b108 = b105.dup() * b107.dup();
let h35: AB::Expr = AB::Expr::from(Felt::from_u64(243));
let b110 = b94.dup() - h35.dup();
let b111 = b108.dup() * b110.dup();
let h36: AB::Expr = AB::Expr::from(Felt::from_u64(729));
let b113 = b94.dup() - h36.dup();
let b114 = b111.dup() * b113.dup();
let h37: AB::Expr = AB::Expr::from(Felt::from_u64(2187));
let b116 = b94.dup() - h37.dup();
let b117 = b114.dup() * b116.dup();
let b118 = h7.dup() * b117.dup();
builder.assert_zero(b118.dup());
let h38 = m1[30];
let h39 = m0[12];
let b121 = h9.dup() - h39;
let b122 = b121.dup() * b20.dup();
let h40 = m0[13];
let b124 = h9.dup() - h40;
let b125 = b122.dup() * b124.dup();
let b126 = b47.dup() * b29.dup();
let b127 = b125.dup() * b126.dup();
let b128 = b127.dup() * b32.dup();
let b129 = b46.dup() * h12;
let b130 = b129.dup() * h15;
let b131 = b125.dup() * b130.dup();
let b132 = b131.dup() * b32.dup();
let b133 = b128.dup() + b132.dup();
let b134 = h40 * b121.dup();
let b135 = b134.dup() * b20.dup();
let b136 = b40.dup() * h15;
let b137 = b135.dup() * b136.dup();
let b138 = b126.dup() * h16;
let b139 = h14 * b138.dup();
let b140 = b137.dup() + b139.dup();
let b141 = b133.dup() + b140.dup();
let b142 = b130.dup() * b32.dup();
let b143 = h14 * b142.dup();
let b144 = b130.dup() * h16;
let b145 = h14 * b144.dup();
let b146 = b143.dup() + b145.dup();
let b147 = b129.dup() * b29.dup();
let b148 = b147.dup() * h16;
let b149 = h14 * b148.dup();
let b150 = b121.dup() * h10;
let b151 = b150.dup() * b124.dup();
let b152 = b23.dup() * h15;
let b153 = b151.dup() * b152.dup();
let b154 = b153.dup() * h16;
let b155 = b149.dup() + b154.dup();
let b156 = b146.dup() + b155.dup();
let b157 = b141.dup() + b156.dup();
let b158 = h10 * b40.dup();
let b159 = b158.dup() * h13;
let b160 = h10 * b23.dup();
let b161 = b160.dup() * h13;
let b162 = b159.dup() + b161.dup();
let b163 = b162.dup() + b44.dup();
let h41 = m0[19];
let b165 = h9.dup() - h41;
let b166 = b49.dup() * b165.dup();
let b167 = b30.dup() * h16;
let b168 = h14 * b167.dup();
let b169 = b166.dup() + b168.dup();
let b170 = b40.dup() * b29.dup();
let b171 = b170.dup() * h16;
let b172 = h14 * b171.dup();
let b173 = b136.dup() * b32.dup();
let b174 = h14 * b173.dup();
let b175 = b172.dup() + b174.dup();
let b176 = b169.dup() + b175.dup();
let b177 = b163.dup() + b176.dup();
let b178 = b157.dup() + b177.dup();
let b179 = h39 * b20.dup();
let b180 = b179.dup() * b124.dup();
let b181 = b180.dup() * b126.dup();
let b182 = b181.dup() * b32.dup();
let b183 = b125.dup() * b136.dup();
let b184 = b125.dup() * b30.dup();
let b185 = b183.dup() + b184.dup();
let b186 = b151.dup() * b126.dup();
let b187 = b47.dup() * h15;
let b188 = b151.dup() * b187.dup();
let b189 = b186.dup() + b188.dup();
let b190 = b185.dup() + b189.dup();
let b191 = b151.dup() * b147.dup();
let b192 = b151.dup() * b130.dup();
let b193 = b191.dup() + b192.dup();
let b194 = b151.dup() * b136.dup();
let b195 = b193.dup() + b194.dup();
let b196 = b190.dup() + b195.dup();
let b197 = b196.dup() * h16;
let b198 = b182.dup() + b197.dup();
let b199 = b180.dup() * b170.dup();
let b200 = b199.dup() * h16;
let b201 = b180.dup() * b30.dup();
let b202 = b201.dup() * h16;
let b203 = b200.dup() + b202.dup();
let b204 = b198.dup() + b203.dup();
let b205 = b180.dup() * b152.dup();
let b206 = b205.dup() * b32.dup();
let b207 = b205.dup() * h16;
let b208 = b206.dup() + b207.dup();
let b209 = b147.dup() * b32.dup();
let b210 = h14 * b209.dup();
let b211 = h10 * b129.dup();
let b212 = b211.dup() * h13;
let b213 = b210.dup() + b212.dup();
let b214 = b208.dup() + b213.dup();
let b215 = b204.dup() + b214.dup();
let b216 = b49.dup() * h41;
let b217 = b170.dup() * b32.dup();
let b218 = h14 * b217.dup();
let b219 = b216.dup() + b218.dup();
let b220 = b219.dup() + b34.dup();
let b221 = b215.dup() + b220.dup();
let b222 = b178.dup() + b221.dup();
let b223 = h38 * b222.dup();
let h42 = m0[30];
let b225 = b178.dup() * h42;
let h43 = m0[31];
let b227 = b221.dup() * h43;
let b228 = b225.dup() + b227.dup();
let b229 = b223.dup() - b228.dup();
let b230 = h7.dup() * b229.dup();
builder.assert_zero(b230.dup());
let h44 = m1[31];
let b232 = b127.dup() * h16;
let b233 = b128.dup() + b232.dup();
let b234 = b125.dup() * b187.dup();
let b235 = b234.dup() * b32.dup();
let b236 = b233.dup() + b235.dup();
let b237 = b234.dup() * h16;
let b238 = b236.dup() + b237.dup();
let b239 = b125.dup() * b147.dup();
let b240 = b239.dup() * b32.dup();
let b241 = b238.dup() + b240.dup();
let b242 = b239.dup() * h16;
let b243 = b241.dup() + b242.dup();
let b244 = b243.dup() + b132.dup();
let b245 = b131.dup() * h16;
let b246 = b244.dup() + b245.dup();
let b247 = b246.dup() - b128.dup();
let b248 = b247.dup() - b132.dup();
let b249 = b178.dup() + b248.dup();
let b250 = b181.dup() * h16;
let b251 = b182.dup() + b250.dup();
let b252 = b180.dup() * b187.dup();
let b253 = b252.dup() * b32.dup();
let b254 = b251.dup() + b253.dup();
let b255 = b252.dup() * h16;
let b256 = b254.dup() + b255.dup();
let b257 = b180.dup() * b147.dup();
let b258 = b257.dup() * b32.dup();
let b259 = b256.dup() + b258.dup();
let b260 = b257.dup() * h16;
let b261 = b259.dup() + b260.dup();
let b262 = b180.dup() * b130.dup();
let b263 = b262.dup() * b32.dup();
let b264 = b261.dup() + b263.dup();
let b265 = b262.dup() * h16;
let b266 = b264.dup() + b265.dup();
let b267 = b266.dup() - b182.dup();
let b268 = b221.dup() + b267.dup();
let b269 = b249.dup() + b268.dup();
let b270 = h39 * h10;
let b271 = b270.dup() * b124.dup();
let b272 = b271.dup() * b126.dup();
let b273 = b272.dup() * b32.dup();
let b274 = b272.dup() * h16;
let b275 = b273.dup() + b274.dup();
let b276 = b271.dup() * b187.dup();
let b277 = b276.dup() * b32.dup();
let b278 = b275.dup() + b277.dup();
let b279 = b276.dup() * h16;
let b280 = b278.dup() + b279.dup();
let b281 = b271.dup() * b147.dup();
let b282 = b281.dup() * b32.dup();
let b283 = b280.dup() + b282.dup();
let b284 = b281.dup() * h16;
let b285 = b283.dup() + b284.dup();
let b286 = b271.dup() * b130.dup();
let b287 = b286.dup() * b32.dup();
let b288 = b285.dup() + b287.dup();
let b289 = b286.dup() * h16;
let b290 = b288.dup() + b289.dup();
let b291 = b271.dup() * b170.dup();
let b292 = b291.dup() * b32.dup();
let b293 = b290.dup() + b292.dup();
let b294 = b291.dup() * h16;
let b295 = b293.dup() + b294.dup();
let b296 = b271.dup() * b136.dup();
let b297 = b296.dup() * b32.dup();
let b298 = b295.dup() + b297.dup();
let b299 = b296.dup() * h16;
let b300 = b298.dup() + b299.dup();
let b301 = b271.dup() * b30.dup();
let b302 = b301.dup() * b32.dup();
let b303 = b300.dup() + b302.dup();
let b304 = b301.dup() * h16;
let b305 = b303.dup() + b304.dup();
let b306 = b271.dup() * b152.dup();
let b307 = b306.dup() * b32.dup();
let b308 = b305.dup() + b307.dup();
let b309 = b306.dup() * h16;
let b310 = b308.dup() + b309.dup();
let b311 = b136.dup() * h16;
let b312 = h14 * b311.dup();
let b313 = b310.dup() + b312.dup();
let b314 = b196.dup() * b32.dup();
let b315 = b313.dup() + b314.dup();
let b316 = b269.dup() + b315.dup();
let b317 = h44 * b316.dup();
let b318 = b249.dup() * h43;
let h45 = m0[32];
let b320 = b268.dup() * h45;
let b321 = b318.dup() + b320.dup();
let b322 = b315.dup() * h42;
let b323 = b321.dup() + b322.dup();
let b324 = b317.dup() - b323.dup();
let b325 = h7.dup() * b324.dup();
builder.assert_zero(b325.dup());
let h46 = m1[32];
let b327 = b125.dup() * b170.dup();
let b328 = b327.dup() * b32.dup();
let b329 = b135.dup() * b46.dup();
let b330 = b328.dup() + b329.dup();
let b331 = b249.dup() + b330.dup();
let b332 = b180.dup() * b136.dup();
let b333 = b332.dup() * b32.dup();
let b334 = b135.dup() * b30.dup();
let b335 = b333.dup() + b334.dup();
let b336 = b135.dup() * b152.dup();
let b337 = b335.dup() + b336.dup();
let b338 = b183.dup() * h16;
let b339 = b337.dup() - b338.dup();
let b340 = b268.dup() + b339.dup();
let b341 = b331.dup() + b340.dup();
let b342 = b135.dup() * b170.dup();
let b343 = b315.dup() + b342.dup();
let b344 = b341.dup() + b343.dup();
let b345 = h46 * b344.dup();
let b346 = b331.dup() * h45;
let h47 = m0[33];
let b348 = b340.dup() * h47;
let b349 = b346.dup() + b348.dup();
let b350 = b343.dup() * h43;
let b351 = b349.dup() + b350.dup();
let b352 = b345.dup() - b351.dup();
let b353 = h7.dup() * b352.dup();
builder.assert_zero(b353.dup());
let h48 = m1[33];
let b355 = b331.dup() + b183.dup();
let b356 = b184.dup() * h16;
let b357 = -b356.dup();
let b358 = b340.dup() + b357.dup();
let b359 = b355.dup() + b358.dup();
let b360 = b183.dup() * b32.dup();
let b361 = -b360.dup();
let b362 = b343.dup() + b361.dup();
let b363 = b359.dup() + b362.dup();
let b364 = h48 * b363.dup();
let b365 = b355.dup() * h47;
let h49 = m0[34];
let b367 = b358.dup() * h49;
let b368 = b365.dup() + b367.dup();
let b369 = b362.dup() * h45;
let b370 = b368.dup() + b369.dup();
let b371 = b364.dup() - b370.dup();
let b372 = h7.dup() * b371.dup();
builder.assert_zero(b372.dup());
let h50 = m1[34];
let b374 = b125.dup() * b152.dup();
let b375 = b184.dup() + b374.dup();
let b376 = b151.dup() * b30.dup();
let b377 = b151.dup() * b170.dup();
let b378 = b377.dup() * h16;
let b379 = b376.dup() + b378.dup();
let b380 = b375.dup() + b379.dup();
let b381 = b20.dup() * b47.dup();
let b382 = b381.dup() * h13;
let b383 = b327.dup() * h16;
let b384 = b382.dup() + b383.dup();
let b385 = b380.dup() + b384.dup();
let b386 = b355.dup() + b385.dup();
let b387 = b201.dup() * b32.dup();
let b388 = b186.dup() * h16;
let b389 = b387.dup() - b388.dup();
let b390 = b358.dup() + b389.dup();
let b391 = b386.dup() + b390.dup();
let b392 = b184.dup() * b32.dup();
let b393 = -b392.dup();
let b394 = b362.dup() + b393.dup();
let b395 = b391.dup() + b394.dup();
let b396 = h50 * b395.dup();
let b397 = b386.dup() * h49;
let h51 = m0[35];
let b399 = b390.dup() * h51;
let b400 = b397.dup() + b399.dup();
let b401 = b394.dup() * h47;
let b402 = b400.dup() + b401.dup();
let b403 = b396.dup() - b402.dup();
let b404 = h7.dup() * b403.dup();
builder.assert_zero(b404.dup());
let h52 = m1[35];
let b406 = b386.dup() + b186.dup();
let b407 = b188.dup() * h16;
let b408 = -b407.dup();
let b409 = b390.dup() + b408.dup();
let b410 = b406.dup() + b409.dup();
let b411 = b186.dup() * b32.dup();
let b412 = -b411.dup();
let b413 = b394.dup() + b412.dup();
let b414 = b410.dup() + b413.dup();
let b415 = h52 * b414.dup();
let b416 = b406.dup() * h51;
let h53 = m0[36];
let b418 = b409.dup() * h53;
let b419 = b416.dup() + b418.dup();
let b420 = b413.dup() * h49;
let b421 = b419.dup() + b420.dup();
let b422 = b415.dup() - b421.dup();
let b423 = h7.dup() * b422.dup();
builder.assert_zero(b423.dup());
let h54 = m1[36];
let b425 = b406.dup() + b188.dup();
let b426 = b191.dup() * h16;
let b427 = -b426.dup();
let b428 = b409.dup() + b427.dup();
let b429 = b425.dup() + b428.dup();
let b430 = b188.dup() * b32.dup();
let b431 = -b430.dup();
let b432 = b413.dup() + b431.dup();
let b433 = b429.dup() + b432.dup();
let b434 = h54 * b433.dup();
let b435 = b425.dup() * h53;
let h55 = m0[37];
let b437 = b428.dup() * h55;
let b438 = b435.dup() + b437.dup();
let b439 = b432.dup() * h51;
let b440 = b438.dup() + b439.dup();
let b441 = b434.dup() - b440.dup();
let b442 = h7.dup() * b441.dup();
builder.assert_zero(b442.dup());
let h56 = m1[37];
let b444 = b425.dup() + b191.dup();
let b445 = b192.dup() * h16;
let b446 = -b445.dup();
let b447 = b428.dup() + b446.dup();
let b448 = b444.dup() + b447.dup();
let b449 = b191.dup() * b32.dup();
let b450 = -b449.dup();
let b451 = b432.dup() + b450.dup();
let b452 = b448.dup() + b451.dup();
let b453 = h56 * b452.dup();
let b454 = b444.dup() * h55;
let h57 = m0[38];
let b456 = b447.dup() * h57;
let b457 = b454.dup() + b456.dup();
let b458 = b451.dup() * h53;
let b459 = b457.dup() + b458.dup();
let b460 = b453.dup() - b459.dup();
let b461 = h7.dup() * b460.dup();
builder.assert_zero(b461.dup());
let h58 = m1[38];
let b463 = b377.dup() * b32.dup();
let b464 = b192.dup() + b463.dup();
let b465 = b187.dup() * h16;
let b466 = h14 * b465.dup();
let b467 = b187.dup() * b32.dup();
let b468 = h14 * b467.dup();
let b469 = b466.dup() + b468.dup();
let b470 = b464.dup() + b469.dup();
let b471 = b376.dup() * b32.dup();
let b472 = b470.dup() - b471.dup();
let b473 = b444.dup() + b472.dup();
let b474 = b332.dup() * h16;
let b475 = b194.dup() * h16;
let b476 = b474.dup() - b475.dup();
let b477 = b447.dup() + b476.dup();
let b478 = b473.dup() + b477.dup();
let b479 = b192.dup() * b32.dup();
let b480 = -b479.dup();
let b481 = b451.dup() + b480.dup();
let b482 = b478.dup() + b481.dup();
let b483 = h58 * b482.dup();
let b484 = b473.dup() * h57;
let h59 = m0[39];
let b486 = b477.dup() * h59;
let b487 = b484.dup() + b486.dup();
let b488 = b481.dup() * h55;
let b489 = b487.dup() + b488.dup();
let b490 = b483.dup() - b489.dup();
let b491 = h7.dup() * b490.dup();
builder.assert_zero(b491.dup());
let h60 = m1[39];
let b493 = b473.dup() + b194.dup();
let b494 = b493.dup() + b477.dup();
let b495 = b194.dup() * b32.dup();
let b496 = -b495.dup();
let b497 = b481.dup() + b496.dup();
let b498 = b494.dup() + b497.dup();
let b499 = h60 * b498.dup();
let b500 = b493.dup() * h59;
let h61 = m0[40];
let b502 = b477.dup() * h61;
let b503 = b500.dup() + b502.dup();
let b504 = b497.dup() * h57;
let b505 = b503.dup() + b504.dup();
let b506 = b499.dup() - b505.dup();
let b507 = h7.dup() * b506.dup();
builder.assert_zero(b507.dup());
let h62 = m1[40];
let b509 = h62 * b498.dup();
let b510 = b493.dup() * h61;
let h63 = m0[41];
let b512 = b477.dup() * h63;
let b513 = b510.dup() + b512.dup();
let b514 = b497.dup() * h59;
let b515 = b513.dup() + b514.dup();
let b516 = b509.dup() - b515.dup();
let b517 = h7.dup() * b516.dup();
builder.assert_zero(b517.dup());
let h64 = m1[41];
let b519 = h64 * b498.dup();
let b520 = b493.dup() * h63;
let h65 = m0[42];
let b522 = b477.dup() * h65;
let b523 = b520.dup() + b522.dup();
let b524 = b497.dup() * h61;
let b525 = b523.dup() + b524.dup();
let b526 = b519.dup() - b525.dup();
let b527 = h7.dup() * b526.dup();
builder.assert_zero(b527.dup());
let h66 = m1[42];
let b529 = b126.dup() * b32.dup();
let b530 = h14 * b529.dup();
let b531 = b471.dup() + b530.dup();
let b532 = b152.dup() * b32.dup();
let b533 = h14 * b532.dup();
let b534 = b531.dup() + b533.dup();
let b535 = b534.dup() - b469.dup();
let b536 = b376.dup() * h16;
let b537 = b535.dup() - b536.dup();
let b538 = b493.dup() + b537.dup();
let b539 = b538.dup() + b477.dup();
let b540 = b539.dup() + b497.dup();
let b541 = h66 * b540.dup();
let b542 = b538.dup() * h65;
let h67 = m0[43];
let b544 = b477.dup() * h67;
let b545 = b542.dup() + b544.dup();
let b546 = b497.dup() * h63;
let b547 = b545.dup() + b546.dup();
let b548 = b541.dup() - b547.dup();
let b549 = h7.dup() * b548.dup();
builder.assert_zero(b549.dup());
let h68 = m1[43];
let b551 = b538.dup() + b469.dup();
let b552 = b551.dup() + b477.dup();
let b553 = b552.dup() + b497.dup();
let b554 = h68 * b553.dup();
let b555 = b551.dup() * h67;
let h69 = m0[44];
let b557 = b477.dup() * h69;
let b558 = b555.dup() + b557.dup();
let b559 = b497.dup() * h65;
let b560 = b558.dup() + b559.dup();
let b561 = b554.dup() - b560.dup();
let b562 = h7.dup() * b561.dup();
builder.assert_zero(b562.dup());
let h70 = m1[44];
let b564 = -b175.dup();
let b565 = b551.dup() + b564.dup();
let b566 = b565.dup() + b477.dup();
let b567 = b566.dup() + b497.dup();
let b568 = h70 * b567.dup();
let b569 = b565.dup() * h69;
let h71 = m0[45];
let b571 = b477.dup() * h71;
let b572 = b569.dup() + b571.dup();
let b573 = b497.dup() * h67;
let b574 = b572.dup() + b573.dup();
let b575 = b568.dup() - b574.dup();
let b576 = h7.dup() * b575.dup();
builder.assert_zero(b576.dup());
let h72 = m1[45];
let b578 = b565.dup() + b497.dup();
let b579 = h72 * b578.dup();
let b580 = b565.dup() * h71;
let b581 = b497.dup() * h69;
let b582 = b580.dup() + b581.dup();
let b583 = b579.dup() - b582.dup();
let b584 = h7.dup() * b583.dup();
builder.assert_zero(b584.dup());
let h73 = m0[46];
let h74: AB::Expr = AB::Expr::from(Felt::from_u64(16));
let b587 = h73 - h74.dup();
let b588 = h0.dup() * b587.dup();
builder.assert_zero(b588.dup());
let b589 = h28.dup() * b587.dup();
builder.assert_zero(b589.dup());
let h75 = m0[47];
let b591 = h0.dup() * h75;
builder.assert_zero(b591.dup());
let b592 = h28.dup() * h75;
builder.assert_zero(b592.dup());
let h76 = m1[46];
let b594 = h76 - h73;
let b595 = b35.dup() + b42.dup();
let b596 = h9.dup() - b595.dup();
let b597 = b596.dup() - b51.dup();
let b598 = b594.dup() * b597.dup();
let b599 = b124.dup() * h39;
let b600 = b599.dup() * b20.dup();
let b601 = b135.dup() * h11;
let b602 = b601.dup() * h12;
let b603 = b600.dup() + b602.dup();
let b604 = b603.dup() + b213.dup();
let b605 = b604.dup() + b219.dup();
let h77 = m0[48];
let b607 = b587.dup() * h77;
let b608 = b605.dup() * b607.dup();
let b609 = b598.dup() + b608.dup();
let b610 = b599.dup() * h10;
let b611 = b610.dup() + b312.dup();
let b612 = b611.dup() + b342.dup();
let b613 = b609.dup() - b612.dup();
let b614 = h76 - h74.dup();
let b615 = b595.dup() * b614.dup();
let b616 = b613.dup() + b615.dup();
let b617 = h7.dup() * b616.dup();
builder.assert_zero(b617.dup());
let b618 = h9.dup() - b607.dup();
let b619 = b618.dup() * b587.dup();
builder.assert_zero(b619.dup());
let h78 = m1[47];
let b621 = h78 - h1;
let b622 = b612.dup() * b621.dup();
builder.assert_zero(b622.dup());
let b623 = b595.dup() * h78;
let b624 = h7.dup() * b623.dup();
builder.assert_zero(b624.dup());
let b625 = b595.dup() + b51.dup();
let b626 = b625.dup() + b612.dup();
let b627 = b626.dup() + b608.dup();
let b628 = h9.dup() - b627.dup();
let b629 = h78 - h75;
let b630 = b628.dup() * b629.dup();
let b631 = h7.dup() * b630.dup();
builder.assert_zero(b631.dup());
let b632 = b605.dup() + b34.dup();
let b633 = b632.dup() * h72;
let b634 = b618.dup() * b633.dup();
builder.assert_zero(b634.dup());
let b635 = h42 - h9.dup();
let b636 = b182.dup() * b635.dup();
builder.assert_zero(b636.dup());
let b637 = b333.dup() + b474.dup();
let b638 = h42 * b635.dup();
let b639 = b637.dup() * b638.dup();
builder.assert_zero(b639.dup());
let b640 = b303.dup() + b309.dup();
let b641 = b640.dup() + b328.dup();
let b642 = b641.dup() + b360.dup();
let b643 = b642.dup() + b392.dup();
let b644 = b643.dup() + b411.dup();
let b645 = b644.dup() + b430.dup();
let b646 = b645.dup() + b449.dup();
let b647 = b646.dup() + b479.dup();
let b648 = b647.dup() + b495.dup();
let b649 = b648.dup() + b463.dup();
let b650 = b649.dup() + b471.dup();
let b651 = b650.dup() + b536.dup();
let b652 = b153.dup() * b32.dup();
let b653 = b651.dup() + b652.dup();
let b654 = b653.dup() + b333.dup();
let b655 = b654.dup() + b474.dup();
let b656 = b655.dup() + b383.dup();
let b657 = b656.dup() + b307.dup();
let b658 = h38 * b657.dup();
let b659 = b274.dup() * h42;
let b660 = b277.dup() * h43;
let b661 = b659.dup() + b660.dup();
let b662 = b279.dup() * h45;
let b663 = b661.dup() + b662.dup();
let b664 = b282.dup() * h47;
let b665 = b663.dup() + b664.dup();
let b666 = b284.dup() * h49;
let b667 = b665.dup() + b666.dup();
let b668 = b287.dup() * h51;
let b669 = b667.dup() + b668.dup();
let b670 = b289.dup() * h53;
let b671 = b669.dup() + b670.dup();
let b672 = b292.dup() * h55;
let b673 = b671.dup() + b672.dup();
let b674 = b294.dup() * h59;
let b675 = b673.dup() + b674.dup();
let b676 = b297.dup() * h63;
let b677 = b675.dup() + b676.dup();
let b678 = b299.dup() * h67;
let b679 = b677.dup() + b678.dup();
let b680 = b302.dup() * h71;
let b681 = b679.dup() + b680.dup();
let b682 = b309.dup() * h1;
let b683 = b681.dup() + b682.dup();
let b684 = b328.dup() * h43;
let b685 = b683.dup() + b684.dup();
let b686 = b360.dup() * h45;
let b687 = b685.dup() + b686.dup();
let b688 = b392.dup() * h47;
let b689 = b687.dup() + b688.dup();
let b690 = b411.dup() * h49;
let b691 = b689.dup() + b690.dup();
let b692 = b430.dup() * h51;
let b693 = b691.dup() + b692.dup();
let b694 = b449.dup() * h53;
let b695 = b693.dup() + b694.dup();
let b696 = b479.dup() * h55;
let b697 = b695.dup() + b696.dup();
let b698 = b495.dup() * h57;
let b699 = b697.dup() + b698.dup();
let b700 = b463.dup() * h49;
let b701 = b699.dup() + b700.dup();
let b702 = b471.dup() * h57;
let b703 = b701.dup() + b702.dup();
let b704 = b536.dup() * h65;
let b705 = b703.dup() + b704.dup();
let b706 = b652.dup() * h57;
let b707 = b705.dup() + b706.dup();
let b708 = h42 * h45;
let b709 = h9.dup() - h42;
let b710 = b709.dup() * h43;
let b711 = b708.dup() + b710.dup();
let b712 = b333.dup() * b711.dup();
let b713 = b707.dup() + b712.dup();
let b714 = h42 * h51;
let b715 = b714.dup() + b710.dup();
let b716 = b474.dup() * b715.dup();
let b717 = b713.dup() + b716.dup();
let b718 = b383.dup() * h3;
let b719 = b717.dup() + b718.dup();
let b720 = b307.dup() * h73;
let b721 = b719.dup() + b720.dup();
let b722 = b658.dup() - b721.dup();
builder.assert_zero(b722.dup());
let b723 = b328.dup() + b463.dup();
let b724 = b723.dup() + b471.dup();
let b725 = b724.dup() + b536.dup();
let b726 = b725.dup() + b652.dup();
let b727 = b726.dup() + b333.dup();
let b728 = b727.dup() + b474.dup();
let b729 = b728.dup() + b383.dup();
let b730 = h44 * b729.dup();
let b731 = b328.dup() * h42;
let b732 = b463.dup() * h51;
let b733 = b731.dup() + b732.dup();
let b734 = b471.dup() * h59;
let b735 = b733.dup() + b734.dup();
let b736 = b536.dup() * h67;
let b737 = b735.dup() + b736.dup();
let b738 = b652.dup() * h59;
let b739 = b737.dup() + b738.dup();
let b740 = h42 * h43;
let b741 = b709.dup() * h45;
let b742 = b740.dup() + b741.dup();
let b743 = b333.dup() * b742.dup();
let b744 = b739.dup() + b743.dup();
let b745 = h42 * h53;
let b746 = b745.dup() + b741.dup();
let b747 = b474.dup() * b746.dup();
let b748 = b744.dup() + b747.dup();
let b749 = b383.dup() * h4;
let b750 = b748.dup() + b749.dup();
let b751 = b730.dup() - b750.dup();
builder.assert_zero(b751.dup());
let b752 = b338.dup() + b463.dup();
let b753 = b752.dup() + b471.dup();
let b754 = b753.dup() + b536.dup();
let b755 = b754.dup() + b652.dup();
let b756 = b755.dup() + b474.dup();
let b757 = b756.dup() + b383.dup();
let b758 = h46 * b757.dup();
let b759 = b338.dup() * h42;
let b760 = b463.dup() * h53;
let b761 = b759.dup() + b760.dup();
let b762 = b471.dup() * h61;
let b763 = b761.dup() + b762.dup();
let b764 = b536.dup() * h69;
let b765 = b763.dup() + b764.dup();
let b766 = b652.dup() * h61;
let b767 = b765.dup() + b766.dup();
let b768 = h42 * h55;
let b769 = b709.dup() * h47;
let b770 = b768.dup() + b769.dup();
let b771 = b474.dup() * b770.dup();
let b772 = b767.dup() + b771.dup();
let b773 = b383.dup() * h5;
let b774 = b772.dup() + b773.dup();
let b775 = b758.dup() - b774.dup();
builder.assert_zero(b775.dup());
let b776 = b356.dup() + b463.dup();
let b777 = b776.dup() + b471.dup();
let b778 = b777.dup() + b536.dup();
let b779 = b778.dup() + b652.dup();
let b780 = b779.dup() + b474.dup();
let b781 = b780.dup() + b383.dup();
let b782 = h48 * b781.dup();
let b783 = b356.dup() * h42;
let b784 = b463.dup() * h55;
let b785 = b783.dup() + b784.dup();
let b786 = b471.dup() * h63;
let b787 = b785.dup() + b786.dup();
let b788 = b536.dup() * h71;
let b789 = b787.dup() + b788.dup();
let b790 = b652.dup() * h63;
let b791 = b789.dup() + b790.dup();
let b792 = h42 * h57;
let b793 = b709.dup() * h49;
let b794 = b792.dup() + b793.dup();
let b795 = b474.dup() * b794.dup();
let b796 = b791.dup() + b795.dup();
let b797 = b383.dup() * h6;
let b798 = b796.dup() + b797.dup();
let b799 = b782.dup() - b798.dup();
builder.assert_zero(b799.dup());
let b800 = b388.dup() + b463.dup();
let b801 = b800.dup() + b652.dup();
let b802 = b801.dup() + b474.dup();
let b803 = h50 * b802.dup();
let b804 = b388.dup() * h42;
let b805 = b463.dup() * h42;
let b806 = b804.dup() + b805.dup();
let b807 = b652.dup() * h65;
let b808 = b806.dup() + b807.dup();
let b809 = b709.dup() * h51;
let b810 = b740.dup() + b809.dup();
let b811 = b474.dup() * b810.dup();
let b812 = b808.dup() + b811.dup();
let b813 = b803.dup() - b812.dup();
builder.assert_zero(b813.dup());
let b814 = b407.dup() + b463.dup();
let b815 = b814.dup() + b652.dup();
let b816 = b815.dup() + b474.dup();
let b817 = h52 * b816.dup();
let b818 = b407.dup() * h42;
let b819 = b463.dup() * h43;
let b820 = b818.dup() + b819.dup();
let b821 = b652.dup() * h67;
let b822 = b820.dup() + b821.dup();
let b823 = b709.dup() * h53;
let b824 = b708.dup() + b823.dup();
let b825 = b474.dup() * b824.dup();
let b826 = b822.dup() + b825.dup();
let b827 = b817.dup() - b826.dup();
builder.assert_zero(b827.dup());
let b828 = b426.dup() + b463.dup();
let b829 = b828.dup() + b652.dup();
let b830 = b829.dup() + b474.dup();
let b831 = h54 * b830.dup();
let b832 = b426.dup() * h42;
let b833 = b463.dup() * h45;
let b834 = b832.dup() + b833.dup();
let b835 = b652.dup() * h69;
let b836 = b834.dup() + b835.dup();
let b837 = h42 * h47;
let b838 = b709.dup() * h55;
let b839 = b837.dup() + b838.dup();
let b840 = b474.dup() * b839.dup();
let b841 = b836.dup() + b840.dup();
let b842 = b831.dup() - b841.dup();
builder.assert_zero(b842.dup());
let b843 = b445.dup() + b463.dup();
let b844 = b843.dup() + b652.dup();
let b845 = b844.dup() + b474.dup();
let b846 = h56 * b845.dup();
let b847 = b445.dup() * h42;
let b848 = b463.dup() * h47;
let b849 = b847.dup() + b848.dup();
let b850 = b652.dup() * h71;
let b851 = b849.dup() + b850.dup();
let b852 = h42 * h49;
let b853 = b709.dup() * h57;
let b854 = b852.dup() + b853.dup();
let b855 = b474.dup() * b854.dup();
let b856 = b851.dup() + b855.dup();
let b857 = b846.dup() - b856.dup();
builder.assert_zero(b857.dup());
let b858 = b475.dup() + b471.dup();
let b859 = b858.dup() + b652.dup();
let b860 = h58 * b859.dup();
let b861 = b475.dup() * h42;
let b862 = b471.dup() * h42;
let b863 = b861.dup() + b862.dup();
let b864 = b652.dup() * h42;
let b865 = b863.dup() + b864.dup();
let b866 = b860.dup() - b865.dup();
builder.assert_zero(b866.dup());
let b867 = b471.dup() + b652.dup();
let b868 = h60 * b867.dup();
let b869 = b471.dup() * h43;
let b870 = b652.dup() * h43;
let b871 = b869.dup() + b870.dup();
let b872 = b868.dup() - b871.dup();
builder.assert_zero(b872.dup());
let b873 = h62 * b867.dup();
let b874 = b471.dup() * h45;
let b875 = b652.dup() * h45;
let b876 = b874.dup() + b875.dup();
let b877 = b873.dup() - b876.dup();
builder.assert_zero(b877.dup());
let b878 = h64 * b867.dup();
let b879 = b471.dup() * h47;
let b880 = b652.dup() * h47;
let b881 = b879.dup() + b880.dup();
let b882 = b878.dup() - b881.dup();
builder.assert_zero(b882.dup());
let b883 = b536.dup() + b652.dup();
let b884 = b883.dup() + b469.dup();
let b885 = h66 * b884.dup();
let b886 = b536.dup() * h42;
let b887 = b652.dup() * h49;
let b888 = b886.dup() + b887.dup();
let h79: AB::Expr = AB::Expr::from(Felt::from_u64(8));
let b890 = h65 + h79.dup();
let b891 = b469.dup() * b890.dup();
let b892 = b888.dup() + b891.dup();
let b893 = b885.dup() - b892.dup();
builder.assert_zero(b893.dup());
let b894 = h68 * b883.dup();
let b895 = b536.dup() * h43;
let b896 = b652.dup() * h51;
let b897 = b895.dup() + b896.dup();
let b898 = b894.dup() - b897.dup();
builder.assert_zero(b898.dup());
let b899 = h70 * b883.dup();
let b900 = b536.dup() * h45;
let b901 = b652.dup() * h53;
let b902 = b900.dup() + b901.dup();
let b903 = b899.dup() - b902.dup();
builder.assert_zero(b903.dup());
let b904 = h72 * b883.dup();
let b905 = b536.dup() * h47;
let b906 = b652.dup() * h55;
let b907 = b905.dup() + b906.dup();
let b908 = b904.dup() - b907.dup();
builder.assert_zero(b908.dup());
let b909 = b20.dup() * b129.dup();
let b910 = b909.dup() * h13;
let b911 = h58 - h57;
let b912 = b910.dup() * b911.dup();
builder.assert_zero(b912.dup());
let b913 = h60 - h59;
let b914 = b910.dup() * b913.dup();
builder.assert_zero(b914.dup());
let b915 = h62 - h61;
let b916 = b910.dup() * b915.dup();
builder.assert_zero(b916.dup());
let b917 = h64 - h63;
let b918 = b910.dup() * b917.dup();
builder.assert_zero(b918.dup());
let b919 = h66 - b890.dup();
let b920 = b910.dup() * b919.dup();
builder.assert_zero(b920.dup());
let b921 = h67 + h79.dup();
let b922 = h68 - b921.dup();
let b923 = b910.dup() * b922.dup();
builder.assert_zero(b923.dup());
let b924 = h70 - h69;
let b925 = b910.dup() * b924.dup();
builder.assert_zero(b925.dup());
let b926 = h72 - h71;
let b927 = b910.dup() * b926.dup();
builder.assert_zero(b927.dup());
let b928 = h24 * h24;
let h80: AB::Expr = AB::Expr::from(Felt::from_u64(7));
let b930 = h26 * h26;
let b931 = h80.dup() * b930.dup();
let b932 = b928.dup() + b931.dup();
let b933 = h69 * b932.dup();
let b934 = h24 * h26;
let b935 = b934.dup() + b934.dup();
let b936 = h71 * b935.dup();
let b937 = h80.dup() * b936.dup();
let b938 = b933.dup() + b937.dup();
let b939 = h24 * h42;
let b940 = b938.dup() + b939.dup();
let b941 = b940.dup() + h43;
let b942 = h18 - b941.dup();
let b943 = b172.dup() * b942.dup();
builder.assert_zero(b943.dup());
let h81 = m0[21];
let b945 = h69 * b935.dup();
let b946 = h71 * b932.dup();
let b947 = b945.dup() + b946.dup();
let b948 = h26 * h42;
let b949 = b947.dup() + b948.dup();
let b950 = h81 - b949.dup();
let b951 = b172.dup() * b950.dup();
builder.assert_zero(b951.dup());
let h82 = m0[18];
let b953 = b932.dup() * h24;
let b954 = b935.dup() * h26;
let b955 = h80.dup() * b954.dup();
let b956 = b953.dup() + b955.dup();
let b957 = h18 * b956.dup();
let b958 = b932.dup() * h26;
let b959 = b935.dup() * h24;
let b960 = b958.dup() + b959.dup();
let b961 = h81 * b960.dup();
let b962 = h80.dup() * b961.dup();
let b963 = b957.dup() + b962.dup();
let b964 = b932.dup() * h45;
let b965 = b963.dup() + b964.dup();
let b966 = h24 * h47;
let b967 = b965.dup() + b966.dup();
let b968 = b967.dup() + h49;
let b969 = h82 - b968.dup();
let b970 = b172.dup() * b969.dup();
builder.assert_zero(b970.dup());
let b971 = h18 * b960.dup();
let b972 = h81 * b956.dup();
let b973 = b971.dup() + b972.dup();
let b974 = b935.dup() * h45;
let b975 = b973.dup() + b974.dup();
let b976 = h26 * h47;
let b977 = b975.dup() + b976.dup();
let b978 = h41 - b977.dup();
let b979 = b172.dup() * b978.dup();
builder.assert_zero(b979.dup());
let b980 = h82 * b956.dup();
let b981 = h41 * b960.dup();
let b982 = h80.dup() * b981.dup();
let b983 = b980.dup() + b982.dup();
let b984 = b932.dup() * h51;
let b985 = b983.dup() + b984.dup();
let b986 = h24 * h53;
let b987 = b985.dup() + b986.dup();
let b988 = b987.dup() + h55;
let b989 = h70 - b988.dup();
let b990 = b172.dup() * b989.dup();
builder.assert_zero(b990.dup());
let b991 = h82 * b960.dup();
let b992 = h41 * b956.dup();
let b993 = b991.dup() + b992.dup();
let b994 = b935.dup() * h51;
let b995 = b993.dup() + b994.dup();
let b996 = h26 * h53;
let b997 = b995.dup() + b996.dup();
let b998 = h72 - b997.dup();
let b999 = b172.dup() * b998.dup();
builder.assert_zero(b999.dup());
let b1000 = h26 * h43;
let b1001 = h80.dup() * b1000.dup();
let b1002 = b939.dup() + b1001.dup();
let b1003 = b938.dup() + b1002.dup();
let b1004 = b1003.dup() + h45;
let b1005 = h18 - b1004.dup();
let b1006 = b174.dup() * b1005.dup();
builder.assert_zero(b1006.dup());
let b1007 = h24 * h43;
let b1008 = b1007.dup() + b948.dup();
let b1009 = b947.dup() + b1008.dup();
let b1010 = b1009.dup() + h47;
let b1011 = h81 - b1010.dup();
let b1012 = b174.dup() * b1011.dup();
builder.assert_zero(b1012.dup());
let b1013 = h18 * b932.dup();
let b1014 = h81 * b935.dup();
let b1015 = h80.dup() * b1014.dup();
let b1016 = b1013.dup() + b1015.dup();
let b1017 = h24 * h49;
let b1018 = h26 * h51;
let b1019 = h80.dup() * b1018.dup();
let b1020 = b1017.dup() + b1019.dup();
let b1021 = b1016.dup() + b1020.dup();
let b1022 = b1021.dup() + h53;
let b1023 = h70 - b1022.dup();
let b1024 = b174.dup() * b1023.dup();
builder.assert_zero(b1024.dup());
let b1025 = h18 * b935.dup();
let b1026 = h81 * b932.dup();
let b1027 = b1025.dup() + b1026.dup();
let b1028 = h24 * h51;
let b1029 = h26 * h49;
let b1030 = b1028.dup() + b1029.dup();
let b1031 = b1027.dup() + b1030.dup();
let b1032 = b1031.dup() + h55;
let b1033 = h72 - b1032.dup();
let b1034 = b174.dup() * b1033.dup();
builder.assert_zero(b1034.dup());
let b1035 = b199.dup() * b32.dup();
let b1036 = h9.dup() - h50;
let b1037 = b1036.dup() - h52;
let b1038 = b1037.dup() - h54;
let b1039 = b1038.dup() - h9.dup();
let b1040 = b1038.dup() * b1039.dup();
let b1041 = b1035.dup() * b1040.dup();
builder.assert_zero(b1041.dup());
let b1042 = h50 - h9.dup();
let b1043 = h50 * b1042.dup();
let b1044 = b1035.dup() * b1043.dup();
builder.assert_zero(b1044.dup());
let b1045 = h52 - h9.dup();
let b1046 = h52 * b1045.dup();
let b1047 = b1035.dup() * b1046.dup();
builder.assert_zero(b1047.dup());
let b1048 = h54 - h9.dup();
let b1049 = h54 * b1048.dup();
let b1050 = b1035.dup() * b1049.dup();
builder.assert_zero(b1050.dup());
let h83: AB::Expr = AB::Expr::from(Felt::from_u64(2));
let b1052 = h52 * h83.dup();
let b1053 = h50 + b1052.dup();
let b1054 = h54 * h31.dup();
let b1055 = b1053.dup() + b1054.dup();
let b1056 = h59 - b1055.dup();
let b1057 = b1035.dup() * b1056.dup();
builder.assert_zero(b1057.dup());
let h84: AB::Expr = AB::Expr::from(Felt::from_u64(18446462594437873665));
let b1059 = h50 * h84.dup();
let b1060 = b1038.dup() + b1059.dup();
let h85: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584320));
let b1062 = h52 * h85.dup();
let b1063 = b1060.dup() + b1062.dup();
let h86: AB::Expr = AB::Expr::from(Felt::from_u64(281474976710656));
let b1065 = h54 * h86.dup();
let b1066 = b1063.dup() + b1065.dup();
let b1067 = h61 * b1066.dup();
let b1068 = h18 - b1067.dup();
let b1069 = b1035.dup() * b1068.dup();
builder.assert_zero(b1069.dup());
let b1070 = h18 * h81;
let b1071 = b1070.dup() - h9.dup();
let b1072 = b1035.dup() * b1071.dup();
builder.assert_zero(b1072.dup());
let b1073 = h67 * h81;
let b1074 = h24 - b1073.dup();
let b1075 = b1035.dup() * b1074.dup();
builder.assert_zero(b1075.dup());
let b1076 = h69 * h81;
let b1077 = h26 - b1076.dup();
let b1078 = b1035.dup() * b1077.dup();
builder.assert_zero(b1078.dup());
let b1079 = h82 - b932.dup();
let b1080 = b1035.dup() * b1079.dup();
builder.assert_zero(b1080.dup());
let b1081 = h41 - b935.dup();
let b1082 = b1035.dup() * b1081.dup();
builder.assert_zero(b1082.dup());
let b1083 = h38 + h38;
let b1084 = h42 + h45;
let b1085 = h42 - h45;
let b1086 = b1085.dup() * h24;
let b1087 = h43 - h47;
let b1088 = b1087.dup() * h26;
let b1089 = h80.dup() * b1088.dup();
let b1090 = b1086.dup() + b1089.dup();
let b1091 = b1084.dup() + b1090.dup();
let b1092 = b1083.dup() - b1091.dup();
let b1093 = b1035.dup() * b1092.dup();
builder.assert_zero(b1093.dup());
let b1094 = h44 + h44;
let b1095 = h43 + h47;
let b1096 = b1085.dup() * h26;
let b1097 = b1087.dup() * h24;
let b1098 = b1096.dup() + b1097.dup();
let b1099 = b1095.dup() + b1098.dup();
let b1100 = b1094.dup() - b1099.dup();
let b1101 = b1035.dup() * b1100.dup();
builder.assert_zero(b1101.dup());
let b1102 = h46 + h46;
let b1103 = h49 + h53;
let b1104 = h49 - h53;
let b1105 = h24 * h84.dup();
let b1106 = b1104.dup() * b1105.dup();
let b1107 = h51 - h55;
let b1108 = h26 * h84.dup();
let b1109 = b1107.dup() * b1108.dup();
let b1110 = h80.dup() * b1109.dup();
let b1111 = b1106.dup() + b1110.dup();
let b1112 = b1103.dup() + b1111.dup();
let b1113 = b1102.dup() - b1112.dup();
let b1114 = b1035.dup() * b1113.dup();
builder.assert_zero(b1114.dup());
let b1115 = h48 + h48;
let b1116 = h51 + h55;
let b1117 = b1104.dup() * b1108.dup();
let b1118 = b1107.dup() * b1105.dup();
let b1119 = b1117.dup() + b1118.dup();
let b1120 = b1116.dup() + b1119.dup();
let b1121 = b1115.dup() - b1120.dup();
let b1122 = b1035.dup() * b1121.dup();
builder.assert_zero(b1122.dup());
let b1123 = h66 + h66;
let b1124 = h38 + h46;
let b1125 = h38 - h46;
let b1126 = b1125.dup() * h82;
let b1127 = h44 - h48;
let b1128 = b1127.dup() * h41;
let b1129 = h80.dup() * b1128.dup();
let b1130 = b1126.dup() + b1129.dup();
let b1131 = b1124.dup() + b1130.dup();
let b1132 = b1123.dup() - b1131.dup();
let b1133 = b1035.dup() * b1132.dup();
builder.assert_zero(b1133.dup());
let b1134 = h68 + h68;
let b1135 = h44 + h48;
let b1136 = b1125.dup() * h41;
let b1137 = b1127.dup() * h82;
let b1138 = b1136.dup() + b1137.dup();
let b1139 = b1135.dup() + b1138.dup();
let b1140 = b1134.dup() - b1139.dup();
let b1141 = b1035.dup() * b1140.dup();
builder.assert_zero(b1141.dup());
let b1142 = h42 * b1038.dup();
let b1143 = h49 * h50;
let b1144 = b1142.dup() + b1143.dup();
let b1145 = h45 * h52;
let b1146 = b1144.dup() + b1145.dup();
let b1147 = h53 * h54;
let b1148 = b1146.dup() + b1147.dup();
let b1149 = h63 - b1148.dup();
let b1150 = b1035.dup() * b1149.dup();
builder.assert_zero(b1150.dup());
let b1151 = h43 * b1038.dup();
let b1152 = h51 * h50;
let b1153 = b1151.dup() + b1152.dup();
let b1154 = h47 * h52;
let b1155 = b1153.dup() + b1154.dup();
let b1156 = h55 * h54;
let b1157 = b1155.dup() + b1156.dup();
let b1158 = h65 - b1157.dup();
let b1159 = b1035.dup() * b1158.dup();
builder.assert_zero(b1159.dup());
let b1160 = h61 * h61;
let b1161 = h56 - b1160.dup();
let b1162 = b1035.dup() * b1161.dup();
builder.assert_zero(b1162.dup());
let b1163 = h56 * h56;
let b1164 = h62 - b1163.dup();
let b1165 = b1035.dup() * b1164.dup();
builder.assert_zero(b1165.dup());
let b1166 = h71 + h79.dup();
let b1167 = h58 - b1166.dup();
let b1168 = b1035.dup() * b1167.dup();
builder.assert_zero(b1168.dup());
let b1169 = h60 - b1166.dup();
let b1170 = b1035.dup() * b1169.dup();
builder.assert_zero(b1170.dup());
let b1171 = h70 - b1166.dup();
let b1172 = b1035.dup() * b1171.dup();
builder.assert_zero(b1172.dup());
let b1173 = h64 - h57;
let b1174 = b1035.dup() * b1173.dup();
builder.assert_zero(b1174.dup());
let b1175 = h42 + h43;
let b1176 = h38 - b1175.dup();
let b1177 = b253.dup() * b1176.dup();
builder.assert_zero(b1177.dup());
let b1178 = h38 + h42;
let b1179 = b235.dup() * b1178.dup();
builder.assert_zero(b1179.dup());
let b1180 = h38 - b740.dup();
let b1181 = b255.dup() * b1180.dup();
builder.assert_zero(b1181.dup());
let b1182 = h38 * h42;
let b1183 = b1182.dup() - h9.dup();
let b1184 = b237.dup() * b1183.dup();
builder.assert_zero(b1184.dup());
let b1185 = h42 + h9.dup();
let b1186 = h38 - b1185.dup();
let b1187 = b240.dup() * b1186.dup();
builder.assert_zero(b1187.dup());
let b1188 = b242.dup() * b638.dup();
builder.assert_zero(b1188.dup());
let b1189 = h42 + h38;
let b1190 = b1189.dup() - h9.dup();
let b1191 = b242.dup() * b1190.dup();
builder.assert_zero(b1191.dup());
let b1192 = b258.dup() * b638.dup();
builder.assert_zero(b1192.dup());
let b1193 = h43 - h9.dup();
let b1194 = h43 * b1193.dup();
let b1195 = b258.dup() * b1194.dup();
builder.assert_zero(b1195.dup());
let b1196 = b258.dup() * b1180.dup();
builder.assert_zero(b1196.dup());
let b1197 = b260.dup() * b638.dup();
builder.assert_zero(b1197.dup());
let b1198 = b260.dup() * b1194.dup();
builder.assert_zero(b1198.dup());
let b1199 = b1175.dup() - b740.dup();
let b1200 = h38 - b1199.dup();
let b1201 = b260.dup() * b1200.dup();
builder.assert_zero(b1201.dup());
let b1202 = h42 - h43;
let b1203 = b1202.dup() * h38;
let b1204 = b250.dup() * b1203.dup();
builder.assert_zero(b1204.dup());
let b1205 = b1202.dup() * h24;
let b1206 = h9.dup() - b1205.dup();
let b1207 = h38 - b1206.dup();
let b1208 = b250.dup() * b1207.dup();
builder.assert_zero(b1208.dup());
let b1209 = h42 * h38;
let b1210 = b232.dup() * b1209.dup();
builder.assert_zero(b1210.dup());
let b1211 = h42 * h24;
let b1212 = h9.dup() - b1211.dup();
let b1213 = h38 - b1212.dup();
let b1214 = b232.dup() * b1213.dup();
builder.assert_zero(b1214.dup());
let b1215 = b374.dup() * h16;
let b1216 = h43 * h43;
let b1217 = h44 - b1216.dup();
let b1218 = b1215.dup() * b1217.dup();
builder.assert_zero(b1218.dup());
let b1219 = b1193.dup() * h38;
let b1220 = b1219.dup() + h9.dup();
let b1221 = h24 - b1220.dup();
let b1222 = b1215.dup() * b1221.dup();
builder.assert_zero(b1222.dup());
let b1223 = h45 * h24;
let b1224 = h46 - b1223.dup();
let b1225 = b1215.dup() * b1224.dup();
builder.assert_zero(b1225.dup());
let b1226 = h48 * h83.dup();
let b1227 = b1226.dup() + h38;
let b1228 = h47 - b1227.dup();
let b1229 = b1215.dup() * b1228.dup();
builder.assert_zero(b1229.dup());
let b1230 = h38 - h9.dup();
let b1231 = h38 * b1230.dup();
let b1232 = b1215.dup() * b1231.dup();
builder.assert_zero(b1232.dup());
let b1233 = h38 - h42;
let b1234 = b378.dup() * b1233.dup();
builder.assert_zero(b1234.dup());
let b1235 = h44 - h43;
let b1236 = b378.dup() * b1235.dup();
builder.assert_zero(b1236.dup());
let b1237 = h45 * h42;
let b1238 = h47 * h43;
let b1239 = b1238.dup() * h80.dup();
let b1240 = b1237.dup() + b1239.dup();
let b1241 = h46 - b1240.dup();
let b1242 = b378.dup() * b1241.dup();
builder.assert_zero(b1242.dup());
let b1243 = h45 + h47;
let b1244 = b1243.dup() * b1175.dup();
let b1245 = b1244.dup() - b1237.dup();
let b1246 = b1245.dup() - b1238.dup();
let b1247 = h48 - b1246.dup();
let b1248 = b378.dup() * b1247.dup();
builder.assert_zero(b1248.dup());
let b1249 = b135.dup() * b147.dup();
let b1250 = b342.dup() + b1249.dup();
let b1251 = b1250.dup() + b336.dup();
let h87: AB::Expr = AB::Expr::from(Felt::from_u64(4294967295));
let h88: AB::Expr = AB::Expr::from(Felt::from_u64(65536));
let b1254 = h41 * h88.dup();
let b1255 = b1254.dup() + h82;
let b1256 = h87.dup() - b1255.dup();
let b1257 = h18 * b1256.dup();
let b1258 = h9.dup() - b1257.dup();
let b1259 = h26 * h88.dup();
let b1260 = b1259.dup() + h24;
let b1261 = b1258.dup() * b1260.dup();
let b1262 = b1251.dup() * b1261.dup();
builder.assert_zero(b1262.dup());
let b1263 = b135.dup() * b126.dup();
let b1264 = b342.dup() + b1263.dup();
let b1265 = b1264.dup() + b334.dup();
let b1266 = b1265.dup() + b1249.dup();
let b1267 = b1266.dup() + b336.dup();
let b1268 = h38 - b1260.dup();
let b1269 = b1267.dup() * b1268.dup();
builder.assert_zero(b1269.dup());
let b1270 = h44 - b1255.dup();
let b1271 = b1267.dup() * b1270.dup();
builder.assert_zero(b1271.dup());
let b1272 = h41 * h86.dup();
let h89: AB::Expr = AB::Expr::from(Felt::from_u64(4294967296));
let b1274 = h82 * h89.dup();
let b1275 = b1274.dup() + b1260.dup();
let b1276 = b1272.dup() + b1275.dup();
let b1277 = h42 - b1276.dup();
let b1278 = b342.dup() * b1277.dup();
builder.assert_zero(b1278.dup());
let b1279 = b1175.dup() - b1275.dup();
let b1280 = b1263.dup() * b1279.dup();
builder.assert_zero(b1280.dup());
let b1281 = b1175.dup() + h45;
let b1282 = b1281.dup() - b1275.dup();
let b1283 = b334.dup() * b1282.dup();
builder.assert_zero(b1283.dup());
let b1284 = b1263.dup() + b334.dup();
let b1285 = b1284.dup() * h41;
builder.assert_zero(b1285.dup());
let b1286 = b135.dup() * b187.dup();
let b1287 = h42 + h44;
let b1288 = h38 * h89.dup();
let b1289 = b1287.dup() - b1288.dup();
let b1290 = h43 - b1289.dup();
let b1291 = b1286.dup() * b1290.dup();
builder.assert_zero(b1291.dup());
let b1292 = b1286.dup() * b1231.dup();
builder.assert_zero(b1292.dup());
let b1293 = h44 - b1260.dup();
let b1294 = b1286.dup() * b1293.dup();
builder.assert_zero(b1294.dup());
let b1295 = b740.dup() - b1276.dup();
let b1296 = b1249.dup() * b1295.dup();
builder.assert_zero(b1296.dup());
let b1297 = b740.dup() + h45;
let b1298 = b1297.dup() - b1276.dup();
let b1299 = b336.dup() * b1298.dup();
builder.assert_zero(b1299.dup());
let b1300 = b135.dup() * b130.dup();
let b1301 = h42 * h44;
let b1302 = b1301.dup() + h38;
let b1303 = h43 - b1302.dup();
let b1304 = b1300.dup() * b1303.dup();
builder.assert_zero(b1304.dup());
let b1305 = b1300.dup() * b1293.dup();
builder.assert_zero(b1305.dup());
let b1306 = h38 - b1255.dup();
let b1307 = b1300.dup() * b1306.dup();
builder.assert_zero(b1307.dup());
let b1308 = h42 - h38;
let b1309 = h81 * h88.dup();
let b1310 = b1309.dup() + h18;
let b1311 = b1310.dup() + h9.dup();
let b1312 = b1308.dup() - b1311.dup();
let b1313 = b1300.dup() * b1312.dup();
builder.assert_zero(b1313.dup());
let b1314 = b137.dup() * b1306.dup();
builder.assert_zero(b1314.dup());
let b1315 = b137.dup() * b1293.dup();
builder.assert_zero(b1315.dup());
let h90 = m0[22];
let b1317 = h0.dup() * h90;
builder.assert_zero(b1317.dup());
let b1318 = h90 - h9.dup();
let b1319 = h90 * b1318.dup();
builder.assert_zero(b1319.dup());
let h91 = m1[22];
let b1321 = b143.dup() + b159.dup();
let h92 = m1[29];
let h93 = m1[11];
let b1324 = h92 * h93;
let h94 = m1[10];
let b1326 = h9.dup() - h94;
let h95 = m1[9];
let b1328 = h9.dup() - h95;
let b1329 = b1326.dup() * b1328.dup();
let b1330 = b1324.dup() * b1329.dup();
let b1331 = h94 * b1328.dup();
let b1332 = b1324.dup() * b1331.dup();
let b1333 = b1330.dup() + b1332.dup();
let b1334 = h9.dup() - b1333.dup();
let b1335 = h90 * b1334.dup();
let b1336 = b1321.dup() + b1335.dup();
let b1337 = h91 - b1336.dup();
let b1338 = h7.dup() * b1337.dup();
builder.assert_zero(b1338.dup());
let b1339 = h16 - h9.dup();
let b1340 = h16 * b1339.dup();
builder.assert_zero(b1340.dup());
let b1341 = h15 - h9.dup();
let b1342 = h15 * b1341.dup();
builder.assert_zero(b1342.dup());
let b1343 = h12 - h9.dup();
let b1344 = h12 * b1343.dup();
builder.assert_zero(b1344.dup());
let b1345 = h11 - h9.dup();
let b1346 = h11 * b1345.dup();
builder.assert_zero(b1346.dup());
let b1347 = h10 - h9.dup();
let b1348 = h10 * b1347.dup();
builder.assert_zero(b1348.dup());
let b1349 = h39 - h9.dup();
let b1350 = h39 * b1349.dup();
builder.assert_zero(b1350.dup());
let b1351 = h40 - h9.dup();
let b1352 = h40 * b1351.dup();
builder.assert_zero(b1352.dup());
let b1353 = b134.dup() * h10;
let b1354 = h14 - b1353.dup();
builder.assert_zero(b1354.dup());
let b1355 = h40 * h39;
let b1356 = h13 - b1355.dup();
builder.assert_zero(b1356.dup());
let b1357 = h40 - h14;
let b1358 = h14 * h11;
let b1359 = b1358.dup() * h12;
let b1360 = b1359.dup() * h15;
let b1361 = b1357.dup() + b1360.dup();
let b1362 = b1361.dup() * h16;
builder.assert_zero(b1362.dup());
let b1363 = h13 * h15;
builder.assert_zero(b1363.dup());
let b1364 = b210.dup() * b638.dup();
builder.assert_zero(b1364.dup());
let b1365 = b218.dup() * h82;
builder.assert_zero(b1365.dup());
let b1366 = b218.dup() * h41;
builder.assert_zero(b1366.dup());
let b1367 = b218.dup() * h18;
builder.assert_zero(b1367.dup());
let b1368 = b218.dup() * h81;
builder.assert_zero(b1368.dup());
let b1369 = h73 - b607.dup();
let b1370 = h82 - b1369.dup();
let b1371 = b34.dup() * b1370.dup();
builder.assert_zero(b1371.dup());
let b1372 = b618.dup() * h41;
let b1373 = b34.dup() * b1372.dup();
builder.assert_zero(b1373.dup());
let b1374 = b212.dup() * b635.dup();
builder.assert_zero(b1374.dup());
let b1375 = h41 * h42;
let b1376 = b49.dup() * b1375.dup();
builder.assert_zero(b1376.dup());
let b1377 = h41 - h9.dup();
let b1378 = h41 * b1377.dup();
let b1379 = b49.dup() * b1378.dup();
builder.assert_zero(b1379.dup());
let b1380 = h18 - h9.dup();
let b1381 = h18 * b1380.dup();
let b1382 = b49.dup() * b1381.dup();
builder.assert_zero(b1382.dup());
let b1383 = b49.dup() * h81;
builder.assert_zero(b1383.dup());
let b1384 = h41 * h18;
let b1385 = b49.dup() * b1384.dup();
builder.assert_zero(b1385.dup());
let b1386 = b1326.dup() * h95;
let b1387 = b1324.dup() * b1386.dup();
let b1388 = b49.dup() * h82;
let b1389 = b1388.dup() - h9.dup();
let b1390 = b1387.dup() * b1389.dup();
let b1391 = h7.dup() * b1390.dup();
builder.assert_zero(b1391.dup());
let b1392 = b149.dup() * b1330.dup();
let b1393 = h7.dup() * b1392.dup();
builder.assert_zero(b1393.dup());
let b1394 = h0.dup() * b212.dup();
builder.assert_zero(b1394.dup());
let b1395 = h94 * h95;
let b1396 = b1324.dup() * b1395.dup();
let b1397 = b1396.dup() - h9.dup();
let b1398 = b161.dup() * b1397.dup();
let b1399 = h7.dup() * b1398.dup();
builder.assert_zero(b1399.dup());
let b1400 = h7.dup() * h90;
let h96 = m0[23];
let h97 = m1[23];
let b1403 = h96 - h97;
let b1404 = b1403.dup() - h9.dup();
let b1405 = b1403.dup() * b1404.dup();
let b1406 = b1400.dup() * b1405.dup();
builder.assert_zero(b1406.dup());
let b1407 = h9.dup() - b312.dup();
let b1408 = b1407.dup() * h20;
let b1409 = b1403.dup() * b1408.dup();
let b1410 = b1400.dup() * b1409.dup();
builder.assert_zero(b1410.dup());
let b1411 = b1321.dup() + b312.dup();
let b1412 = b1411.dup() * b1404.dup();
builder.assert_zero(b1412.dup());
let b1413 = b1403.dup() * b1333.dup();
let b1414 = h7.dup() * b1413.dup();
builder.assert_zero(b1414.dup());
let b1415 = b49.dup() * h96;
builder.assert_zero(b1415.dup());
let b1416 = h90 * h91;
let b1417 = h9.dup() - b1403.dup();
let b1418 = b1416.dup() * b1417.dup();
let b1419 = b1411.dup() + b1418.dup();
let h98 = m1[14];
let h99: AB::Expr = AB::Expr::from(Felt::from_u64(128));
let b1422 = h98 * h99.dup();
let b1423 = h20 - b1422.dup();
let h100 = m1[13];
let b1425 = h100 + h100;
let h101 = m1[12];
let b1427 = b1425.dup() + h101;
let b1428 = b1427.dup() + b1427.dup();
let b1429 = b1428.dup() + h93;
let b1430 = b1429.dup() + b1429.dup();
let b1431 = b1430.dup() + h94;
let b1432 = b1431.dup() + b1431.dup();
let b1433 = b1432.dup() + h95;
let b1434 = b1433.dup() + b1433.dup();
let h102 = m1[8];
let b1436 = b1434.dup() + h102;
let b1437 = b1436.dup() + b1436.dup();
let h103 = m1[7];
let b1439 = b1437.dup() + h103;
let b1440 = b1423.dup() - b1439.dup();
let b1441 = b1419.dup() * b1440.dup();
let b1442 = h7.dup() * b1441.dup();
builder.assert_zero(b1442.dup());
let b1443 = b1333.dup() * h20;
let b1444 = h90 * b1443.dup();
let b1445 = h7.dup() * b1444.dup();
builder.assert_zero(b1445.dup());
let h104 = m1[24];
let b1447 = b1321.dup() * h104;
builder.assert_zero(b1447.dup());
let b1448 = b1403.dup() - b312.dup();
let b1449 = b1448.dup() * h104;
let b1450 = h90 * b1449.dup();
let b1451 = h7.dup() * b1450.dup();
builder.assert_zero(b1451.dup());
let b1452 = h9.dup() - b1448.dup();
let h105 = m0[24];
let b1454 = h105 + h9.dup();
let b1455 = h104 - b1454.dup();
let b1456 = b1452.dup() * b1455.dup();
let b1457 = h91 * b1456.dup();
let b1458 = h90 * b1457.dup();
let b1459 = h7.dup() * b1458.dup();
builder.assert_zero(b1459.dup());
let b1460 = h105 - h9.dup();
let b1461 = h105 * b1460.dup();
let b1462 = h105 - h83.dup();
let b1463 = b1461.dup() * b1462.dup();
let b1464 = h105 - h31.dup();
let b1465 = b1463.dup() * b1464.dup();
let h106: AB::Expr = AB::Expr::from(Felt::from_u64(4));
let b1467 = h105 - h106.dup();
let b1468 = b1465.dup() * b1467.dup();
let h107: AB::Expr = AB::Expr::from(Felt::from_u64(5));
let b1470 = h105 - h107.dup();
let b1471 = b1468.dup() * b1470.dup();
let h108: AB::Expr = AB::Expr::from(Felt::from_u64(6));
let b1473 = h105 - h108.dup();
let b1474 = b1471.dup() * b1473.dup();
let b1475 = h105 - h80.dup();
let b1476 = b1474.dup() * b1475.dup();
let b1477 = h105 - h79.dup();
let b1478 = b1476.dup() * b1477.dup();
builder.assert_zero(b1478.dup());
let h109 = m0[25];
let b1480 = h109 - h9.dup();
let b1481 = h109 * b1480.dup();
builder.assert_zero(b1481.dup());
let h110 = m0[26];
let b1483 = h110 - h9.dup();
let b1484 = h110 * b1483.dup();
builder.assert_zero(b1484.dup());
let h111 = m0[27];
let b1486 = h111 - h9.dup();
let b1487 = h111 * b1486.dup();
builder.assert_zero(b1487.dup());
let b1488 = h9.dup() - h109;
let b1489 = b1488.dup() * h110;
let b1490 = b1489.dup() * h111;
let b1491 = h9.dup() - h110;
let b1492 = b1488.dup() * b1491.dup();
let b1493 = b1492.dup() * h111;
let b1494 = b1490.dup() + b1493.dup();
let b1495 = h9.dup() - h111;
let b1496 = b1489.dup() * b1495.dup();
let b1497 = b1494.dup() + b1496.dup();
let b1498 = b1497.dup() + h109;
let b1499 = b1321.dup() - b1498.dup();
builder.assert_zero(b1499.dup());
let b1500 = h9.dup() - b1321.dup();
let b1501 = h109 + h110;
let b1502 = b1501.dup() + h111;
let b1503 = b1500.dup() * b1502.dup();
builder.assert_zero(b1503.dup());
let b1504 = b1497.dup() * h82;
builder.assert_zero(b1504.dup());
let b1505 = b1497.dup() * h41;
builder.assert_zero(b1505.dup());
let b1506 = b1497.dup() * h18;
builder.assert_zero(b1506.dup());
let b1507 = b1497.dup() * h81;
builder.assert_zero(b1507.dup());
let b1508 = b1494.dup() * h24;
builder.assert_zero(b1508.dup());
let b1509 = b1494.dup() * h26;
builder.assert_zero(b1509.dup());
let b1510 = b1490.dup() * h22;
builder.assert_zero(b1510.dup());
let b1511 = h90 + b212.dup();
let h112 = m1[6];
let h113 = m0[6];
let b1514 = h112 - h113;
let b1515 = b1511.dup() * b1514.dup();
let b1516 = h7.dup() * b1515.dup();
builder.assert_zero(b1516.dup());
let b1517 = h113 + h83.dup();
let b1518 = h112 - b1517.dup();
let b1519 = b159.dup() * b1518.dup();
builder.assert_zero(b1519.dup());
let b1520 = b161.dup() * h113;
builder.assert_zero(b1520.dup());
let b1521 = b129.dup() * h14;
let b1522 = h10 * h13;
let b1523 = b1521.dup() + b1522.dup();
let b1524 = b34.dup() + b218.dup();
let b1525 = b1523.dup() + b1524.dup();
let b1526 = b42.dup() + b26.dup();
let b1527 = b1525.dup() + b1526.dup();
let b1528 = h90 + b1527.dup();
let b1529 = b1528.dup() - h9.dup();
builder.assert_zero(b1529.dup());
let b1530 = b161.dup() - h9.dup();
let b1531 = h28.dup() * b1530.dup();
builder.assert_zero(b1531.dup());
let h114: AB::Expr = builder.public_values()[0].into();
let b1533 = h42 - h114.dup();
let b1534 = h0.dup() * b1533.dup();
builder.assert_zero(b1534.dup());
let h115: AB::Expr = builder.public_values()[1].into();
let b1536 = h43 - h115.dup();
let b1537 = h0.dup() * b1536.dup();
builder.assert_zero(b1537.dup());
let h116: AB::Expr = builder.public_values()[2].into();
let b1539 = h45 - h116.dup();
let b1540 = h0.dup() * b1539.dup();
builder.assert_zero(b1540.dup());
let h117: AB::Expr = builder.public_values()[3].into();
let b1542 = h47 - h117.dup();
let b1543 = h0.dup() * b1542.dup();
builder.assert_zero(b1543.dup());
let h118: AB::Expr = builder.public_values()[4].into();
let b1545 = h49 - h118.dup();
let b1546 = h0.dup() * b1545.dup();
builder.assert_zero(b1546.dup());
let h119: AB::Expr = builder.public_values()[5].into();
let b1548 = h51 - h119.dup();
let b1549 = h0.dup() * b1548.dup();
builder.assert_zero(b1549.dup());
let h120: AB::Expr = builder.public_values()[6].into();
let b1551 = h53 - h120.dup();
let b1552 = h0.dup() * b1551.dup();
builder.assert_zero(b1552.dup());
let h121: AB::Expr = builder.public_values()[7].into();
let b1554 = h55 - h121.dup();
let b1555 = h0.dup() * b1554.dup();
builder.assert_zero(b1555.dup());
let h122: AB::Expr = builder.public_values()[8].into();
let b1557 = h57 - h122.dup();
let b1558 = h0.dup() * b1557.dup();
builder.assert_zero(b1558.dup());
let h123: AB::Expr = builder.public_values()[9].into();
let b1560 = h59 - h123.dup();
let b1561 = h0.dup() * b1560.dup();
builder.assert_zero(b1561.dup());
let h124: AB::Expr = builder.public_values()[10].into();
let b1563 = h61 - h124.dup();
let b1564 = h0.dup() * b1563.dup();
builder.assert_zero(b1564.dup());
let h125: AB::Expr = builder.public_values()[11].into();
let b1566 = h63 - h125.dup();
let b1567 = h0.dup() * b1566.dup();
builder.assert_zero(b1567.dup());
let h126: AB::Expr = builder.public_values()[12].into();
let b1569 = h65 - h126.dup();
let b1570 = h0.dup() * b1569.dup();
builder.assert_zero(b1570.dup());
let h127: AB::Expr = builder.public_values()[13].into();
let b1572 = h67 - h127.dup();
let b1573 = h0.dup() * b1572.dup();
builder.assert_zero(b1573.dup());
let h128: AB::Expr = builder.public_values()[14].into();
let b1575 = h69 - h128.dup();
let b1576 = h0.dup() * b1575.dup();
builder.assert_zero(b1576.dup());
let h129: AB::Expr = builder.public_values()[15].into();
let b1578 = h71 - h129.dup();
let b1579 = h0.dup() * b1578.dup();
builder.assert_zero(b1579.dup());
let h130: AB::Expr = builder.public_values()[16].into();
let b1581 = h42 - h130.dup();
let b1582 = h28.dup() * b1581.dup();
builder.assert_zero(b1582.dup());
let h131: AB::Expr = builder.public_values()[17].into();
let b1584 = h43 - h131.dup();
let b1585 = h28.dup() * b1584.dup();
builder.assert_zero(b1585.dup());
let h132: AB::Expr = builder.public_values()[18].into();
let b1587 = h45 - h132.dup();
let b1588 = h28.dup() * b1587.dup();
builder.assert_zero(b1588.dup());
let h133: AB::Expr = builder.public_values()[19].into();
let b1590 = h47 - h133.dup();
let b1591 = h28.dup() * b1590.dup();
builder.assert_zero(b1591.dup());
let h134: AB::Expr = builder.public_values()[20].into();
let b1593 = h49 - h134.dup();
let b1594 = h28.dup() * b1593.dup();
builder.assert_zero(b1594.dup());
let h135: AB::Expr = builder.public_values()[21].into();
let b1596 = h51 - h135.dup();
let b1597 = h28.dup() * b1596.dup();
builder.assert_zero(b1597.dup());
let h136: AB::Expr = builder.public_values()[22].into();
let b1599 = h53 - h136.dup();
let b1600 = h28.dup() * b1599.dup();
builder.assert_zero(b1600.dup());
let h137: AB::Expr = builder.public_values()[23].into();
let b1602 = h55 - h137.dup();
let b1603 = h28.dup() * b1602.dup();
builder.assert_zero(b1603.dup());
let h138: AB::Expr = builder.public_values()[24].into();
let b1605 = h57 - h138.dup();
let b1606 = h28.dup() * b1605.dup();
builder.assert_zero(b1606.dup());
let h139: AB::Expr = builder.public_values()[25].into();
let b1608 = h59 - h139.dup();
let b1609 = h28.dup() * b1608.dup();
builder.assert_zero(b1609.dup());
let h140: AB::Expr = builder.public_values()[26].into();
let b1611 = h61 - h140.dup();
let b1612 = h28.dup() * b1611.dup();
builder.assert_zero(b1612.dup());
let h141: AB::Expr = builder.public_values()[27].into();
let b1614 = h63 - h141.dup();
let b1615 = h28.dup() * b1614.dup();
builder.assert_zero(b1615.dup());
let h142: AB::Expr = builder.public_values()[28].into();
let b1617 = h65 - h142.dup();
let b1618 = h28.dup() * b1617.dup();
builder.assert_zero(b1618.dup());
let h143: AB::Expr = builder.public_values()[29].into();
let b1620 = h67 - h143.dup();
let b1621 = h28.dup() * b1620.dup();
builder.assert_zero(b1621.dup());
let h144: AB::Expr = builder.public_values()[30].into();
let b1623 = h69 - h144.dup();
let b1624 = h28.dup() * b1623.dup();
builder.assert_zero(b1624.dup());
let h145: AB::Expr = builder.public_values()[31].into();
let b1626 = h71 - h145.dup();
let b1627 = h28.dup() * b1626.dup();
builder.assert_zero(b1627.dup());
let h146 = a0[0];
let e1630 = Into::<AB::ExprEF>::into(h146) * h0.dup();
builder.assert_zero_ext(e1630.dup());
let h147: AB::ExprEF = builder.permutation_randomness()[0].into();
let h148: AB::ExprEF = builder.permutation_randomness()[1].into();
let e1634 = h148.dup() * h148.dup();
let e1635 = e1634.dup() * h148.dup();
let e1636 = e1635.dup() * h148.dup();
let e1637 = e1636.dup() * h148.dup();
let e1638 = e1637.dup() * h148.dup();
let e1639 = e1638.dup() * h148.dup();
let e1640 = e1639.dup() * h148.dup();
let e1641 = e1640.dup() * h148.dup();
let e1642 = e1641.dup() * h148.dup();
let e1643 = e1642.dup() * h148.dup();
let e1644 = e1643.dup() * h148.dup();
let e1645 = e1644.dup() * h148.dup();
let e1646 = e1645.dup() * h148.dup();
let e1647 = e1646.dup() * h148.dup();
let e1648 = e1647.dup() * h148.dup();
let h149: AB::Expr = AB::Expr::from(Felt::from_u64(18));
let e1651 = e1648.dup() * h149.dup();
let e1652 = h147.dup() + e1651.dup();
let e1655 = h148.dup() * AB::Expr::from(h113);
let e1656 = e1655.dup() + AB::Expr::from(h112);
let e1657 = e1652.dup() + e1656.dup();
let e1658 = e1657.dup() - h9.dup();
let b1659 = b145.dup() + b210.dup();
let b1660 = b1659.dup() + b143.dup();
let b1661 = b1660.dup() + b218.dup();
let e1663 = e1658.dup() * b1661.dup();
let e1664 = e1663.dup() + h9.dup();
let e1665 = e1656.dup() + e1634.dup();
let e1666 = e1652.dup() + e1665.dup();
let e1667 = e1666.dup() - h9.dup();
let e1669 = e1667.dup() * b149.dup();
let e1670 = e1664.dup() + e1669.dup();
let e1672 = e1635.dup() * AB::Expr::from(h2);
let e1673 = e1656.dup() + e1672.dup();
let e1675 = e1636.dup() * AB::Expr::from(h82);
let e1676 = e1673.dup() + e1675.dup();
let e1678 = e1637.dup() * AB::Expr::from(h41);
let e1679 = e1676.dup() + e1678.dup();
let e1680 = e1652.dup() + e1679.dup();
let e1682 = e1638.dup() * AB::Expr::from(h3);
let e1684 = e1639.dup() * AB::Expr::from(h4);
let e1685 = e1682.dup() + e1684.dup();
let e1687 = e1640.dup() * AB::Expr::from(h5);
let e1688 = e1685.dup() + e1687.dup();
let e1690 = e1641.dup() * AB::Expr::from(h6);
let e1691 = e1688.dup() + e1690.dup();
let e1692 = e1680.dup() + e1691.dup();
let e1693 = e1692.dup() + e1642.dup();
let e1694 = e1693.dup() - h9.dup();
let e1696 = e1694.dup() * b34.dup();
let e1697 = e1670.dup() + e1696.dup();
let e1699 = e1636.dup() * AB::Expr::from(h73);
let e1700 = e1673.dup() + e1699.dup();
let e1702 = e1637.dup() * AB::Expr::from(h75);
let e1703 = e1700.dup() + e1702.dup();
let e1704 = e1652.dup() + e1703.dup();
let e1705 = e1704.dup() + e1691.dup();
let e1706 = e1705.dup() + e1642.dup();
let e1707 = e1706.dup() - h9.dup();
let e1709 = e1707.dup() * b44.dup();
let e1710 = e1697.dup() + e1709.dup();
let e1711 = h148.dup() * AB::Expr::from(h112);
let e1712 = e1711.dup() + AB::Expr::from(h113);
let e1713 = e1634.dup() * AB::Expr::from(h41);
let e1714 = e1712.dup() + e1713.dup();
let e1715 = e1652.dup() + e1714.dup();
let e1716 = e1715.dup() - h9.dup();
let b1717 = h9.dup() - h18;
let b1718 = b49.dup() * b1717.dup();
let e1720 = e1716.dup() * b1718.dup();
let e1721 = e1710.dup() + e1720.dup();
let e1723 = e1635.dup() * AB::Expr::from(h17);
let e1724 = e1712.dup() + e1723.dup();
let e1726 = e1636.dup() * AB::Expr::from(h76);
let e1727 = e1724.dup() + e1726.dup();
let e1729 = e1637.dup() * AB::Expr::from(h78);
let e1730 = e1727.dup() + e1729.dup();
let e1731 = e1652.dup() + e1730.dup();
let e1733 = e1638.dup() * AB::Expr::from(h19);
let e1735 = e1639.dup() * AB::Expr::from(h21);
let e1736 = e1733.dup() + e1735.dup();
let e1738 = e1640.dup() * AB::Expr::from(h23);
let e1739 = e1736.dup() + e1738.dup();
let e1741 = e1641.dup() * AB::Expr::from(h25);
let e1742 = e1739.dup() + e1741.dup();
let e1743 = e1731.dup() + e1742.dup();
let e1744 = e1743.dup() + e1642.dup();
let e1745 = e1744.dup() - h9.dup();
let e1747 = e1745.dup() * b51.dup();
let e1748 = e1721.dup() + e1747.dup();
let h150 = m1[15];
let e1751 = h148.dup() * AB::Expr::from(h150);
let e1752 = e1751.dup() + AB::Expr::from(h112);
let e1753 = e1652.dup() + e1752.dup();
let e1754 = e1751.dup() + AB::Expr::from(h113);
let e1755 = e1652.dup() + e1754.dup();
let e1756 = e1753.dup() * e1755.dup();
let e1757 = e1756.dup() - h9.dup();
let e1759 = e1757.dup() * b159.dup();
let e1760 = e1748.dup() + e1759.dup();
let h151: AB::Expr = AB::Expr::from(Felt::from_u64(22));
let e1763 = e1648.dup() * h151.dup();
let e1764 = h147.dup() + e1763.dup();
let e1766 = e1764.dup() + AB::Expr::from(h24);
let e1768 = e1764.dup() + AB::Expr::from(h26);
let e1769 = e1766.dup() * e1768.dup();
let e1770 = e1764.dup() + AB::Expr::from(h82);
let e1771 = e1769.dup() * e1770.dup();
let e1772 = e1764.dup() + AB::Expr::from(h41);
let e1773 = e1771.dup() * e1772.dup();
let e1774 = e1773.dup() - h9.dup();
let e1776 = e1774.dup() * b135.dup();
let e1777 = e1760.dup() + e1776.dup();
let e1779 = e1764.dup() + AB::Expr::from(h49);
let b1780 = h49 - h9.dup();
let h152: AB::Expr = AB::Expr::from(Felt::from_u64(1024));
let b1782 = b1780.dup() * h152.dup();
let e1784 = e1764.dup() + b1782.dup();
let e1785 = e1779.dup() * e1784.dup();
let e1786 = e1785.dup() - h9.dup();
let b1787 = b139.dup() + b382.dup();
let e1789 = e1786.dup() * b1787.dup();
let e1790 = e1777.dup() + e1789.dup();
let e1792 = e1648.dup() * h31.dup();
let e1793 = h147.dup() + e1792.dup();
let e1794 = e1793.dup() + AB::Expr::from(h26);
let e1795 = h148.dup() * AB::Expr::from(h82);
let e1796 = e1794.dup() + e1795.dup();
let e1797 = e1796.dup() + e1713.dup();
let e1799 = e1635.dup() * AB::Expr::from(h18);
let e1800 = e1797.dup() + e1799.dup();
let e1802 = e1793.dup() + AB::Expr::from(h38);
let e1804 = h148.dup() * AB::Expr::from(h44);
let e1805 = e1802.dup() + e1804.dup();
let e1807 = e1634.dup() * AB::Expr::from(h46);
let e1808 = e1805.dup() + e1807.dup();
let e1810 = e1635.dup() * AB::Expr::from(h48);
let e1811 = e1808.dup() + e1810.dup();
let e1812 = e1800.dup() * e1811.dup();
let e1813 = e1812.dup() - h9.dup();
let e1815 = e1813.dup() * b533.dup();
let e1816 = e1790.dup() + e1815.dup();
let e1818 = e1764.dup() + AB::Expr::from(h27);
let e1819 = e1818.dup() - h9.dup();
let e1820 = e1819.dup() + h9.dup();
let e1821 = e1816.dup() * e1820.dup();
let h153 = a1[0];
let h154 = a0[1];
let e1824 = Into::<AB::ExprEF>::into(h146) + Into::<AB::ExprEF>::into(h154);
let h155 = a0[2];
let e1826 = e1824.dup() + Into::<AB::ExprEF>::into(h155);
let h156 = a0[3];
let e1828 = e1826.dup() + Into::<AB::ExprEF>::into(h156);
let e1829 = Into::<AB::ExprEF>::into(h153) - e1828.dup();
let h157: AB::ExprEF = builder.permutation_values()[0].clone().into();
let e1831 = e1829.dup() + h157.dup();
let e1832 = e1821.dup() * e1831.dup();
let e1833 = AB::ExprEF::from(b1661.dup()) + b149.dup();
let e1834 = e1833.dup() + b34.dup();
let e1835 = e1834.dup() + b44.dup();
let e1836 = e1835.dup() - b1718.dup();
let e1837 = e1836.dup() - b51.dup();
let e1838 = e1755.dup() - e1753.dup();
let e1839 = e1838.dup() * b159.dup();
let e1840 = e1837.dup() + e1839.dup();
let e1842 = e1768.dup() * h85.dup();
let e1843 = e1842.dup() - e1766.dup();
let e1844 = e1843.dup() * e1770.dup();
let e1845 = e1844.dup() - e1769.dup();
let e1846 = e1845.dup() * e1772.dup();
let e1847 = e1846.dup() - e1771.dup();
let e1848 = e1847.dup() * b135.dup();
let e1849 = e1840.dup() + e1848.dup();
let e1850 = e1784.dup() * h85.dup();
let e1851 = e1850.dup() - e1779.dup();
let e1852 = e1851.dup() * b1787.dup();
let e1853 = e1849.dup() + e1852.dup();
let e1854 = e1811.dup() * h85.dup();
let e1855 = e1854.dup() + e1800.dup();
let e1856 = e1855.dup() * b533.dup();
let e1857 = e1853.dup() + e1856.dup();
let e1858 = e1857.dup() * e1820.dup();
let h158 = m0[49];
let e1861 = e1816.dup() * AB::Expr::from(h158);
let e1862 = e1858.dup() + e1861.dup();
let e1863 = e1832.dup() - e1862.dup();
builder.assert_zero_ext(e1863.dup());
let e1865 = e1648.dup() * h83.dup();
let e1866 = h147.dup() + e1865.dup();
let e1868 = e1866.dup() + AB::Expr::from(h20);
let e1870 = h148.dup() * AB::Expr::from(h22);
let e1871 = e1868.dup() + e1870.dup();
let e1872 = e1634.dup() * AB::Expr::from(h24);
let e1873 = e1871.dup() + e1872.dup();
let e1874 = e1635.dup() * AB::Expr::from(h26);
let e1875 = e1873.dup() + e1874.dup();
let e1876 = e1636.dup() * AB::Expr::from(h112);
let e1877 = e1875.dup() + e1876.dup();
let e1878 = e1877.dup() + e1637.dup();
let e1879 = e1866.dup() + AB::Expr::from(h82);
let e1880 = h148.dup() * AB::Expr::from(h41);
let e1881 = e1879.dup() + e1880.dup();
let e1882 = e1634.dup() * AB::Expr::from(h18);
let e1883 = e1881.dup() + e1882.dup();
let e1885 = e1635.dup() * AB::Expr::from(h81);
let e1886 = e1883.dup() + e1885.dup();
let e1887 = e1886.dup() + e1876.dup();
let e1888 = e1878.dup() * e1887.dup();
let e1889 = e1888.dup() - h9.dup();
let e1891 = e1889.dup() * b145.dup();
let e1892 = e1891.dup() + h9.dup();
let b1893 = h42 * h20;
let b1894 = b709.dup() * h82;
let b1895 = b1893.dup() + b1894.dup();
let e1897 = e1866.dup() + b1895.dup();
let b1898 = h42 * h22;
let b1899 = b709.dup() * h41;
let b1900 = b1898.dup() + b1899.dup();
let e1902 = h148.dup() * b1900.dup();
let e1903 = e1897.dup() + e1902.dup();
let b1904 = b709.dup() * h18;
let b1905 = b1211.dup() + b1904.dup();
let e1907 = e1634.dup() * b1905.dup();
let e1908 = e1903.dup() + e1907.dup();
let b1909 = h42 * h26;
let b1910 = b709.dup() * h81;
let b1911 = b1909.dup() + b1910.dup();
let e1913 = e1635.dup() * b1911.dup();
let e1914 = e1908.dup() + e1913.dup();
let e1915 = e1914.dup() + e1876.dup();
let e1916 = e1915.dup() - h9.dup();
let e1918 = e1916.dup() * b210.dup();
let e1919 = e1892.dup() + e1918.dup();
let e1920 = e1877.dup() + e1638.dup();
let e1921 = e1920.dup() - h9.dup();
let e1922 = e1921.dup() * b149.dup();
let e1923 = e1919.dup() + e1922.dup();
let e1924 = e1877.dup() - h9.dup();
let b1925 = b218.dup() + b34.dup();
let b1926 = b1925.dup() + b26.dup();
let b1927 = b1926.dup() + b42.dup();
let e1929 = e1924.dup() * b1927.dup();
let e1930 = e1923.dup() + e1929.dup();
let b1931 = b1324.dup() * b1326.dup();
let b1932 = b1931.dup() * b1328.dup();
let b1933 = h9.dup() - b1932.dup();
let b1934 = b1931.dup() * h95;
let b1935 = b1933.dup() - b1934.dup();
let b1936 = b1324.dup() * h94;
let b1937 = b1936.dup() * b1328.dup();
let b1938 = b1935.dup() - b1937.dup();
let b1939 = b1936.dup() * h95;
let b1940 = b1938.dup() - b1939.dup();
let e1942 = e1637.dup() * b1940.dup();
let e1943 = e1877.dup() + e1942.dup();
let e1944 = e1638.dup() * AB::Expr::from(h82);
let e1945 = e1943.dup() + e1944.dup();
let e1946 = e1945.dup() - h9.dup();
let e1948 = e1946.dup() * b49.dup();
let e1949 = e1930.dup() + e1948.dup();
let h159: AB::Expr = AB::Expr::from(Felt::from_u64(19));
let e1952 = e1648.dup() * h159.dup();
let e1953 = h147.dup() + e1952.dup();
let e1954 = e1953.dup() + AB::Expr::from(h112);
let b1955 = h96 - h9.dup();
let e1957 = h148.dup() * b1955.dup();
let e1958 = e1954.dup() + e1957.dup();
let e1959 = e1634.dup() * AB::Expr::from(h22);
let e1960 = e1958.dup() + e1959.dup();
let b1961 = h96 - h83.dup();
let e1963 = h148.dup() * b1961.dup();
let e1964 = e1954.dup() + e1963.dup();
let e1965 = e1964.dup() + e1872.dup();
let e1966 = e1960.dup() * e1965.dup();
let b1967 = h96 - h31.dup();
let e1969 = h148.dup() * b1967.dup();
let e1970 = e1954.dup() + e1969.dup();
let e1971 = e1634.dup() * AB::Expr::from(h26);
let e1972 = e1970.dup() + e1971.dup();
let e1973 = e1966.dup() * e1972.dup();
let b1974 = h96 - h106.dup();
let e1976 = h148.dup() * b1974.dup();
let e1977 = e1954.dup() + e1976.dup();
let e1978 = e1634.dup() * AB::Expr::from(h82);
let e1979 = e1977.dup() + e1978.dup();
let e1980 = e1973.dup() * e1979.dup();
let b1981 = h96 - h107.dup();
let e1983 = h148.dup() * b1981.dup();
let e1984 = e1954.dup() + e1983.dup();
let e1985 = e1984.dup() + e1713.dup();
let e1986 = e1980.dup() * e1985.dup();
let b1987 = h96 - h108.dup();
let e1989 = h148.dup() * b1987.dup();
let e1990 = e1954.dup() + e1989.dup();
let e1991 = e1990.dup() + e1882.dup();
let e1992 = e1986.dup() * e1991.dup();
let b1993 = h96 - h80.dup();
let e1995 = h148.dup() * b1993.dup();
let e1996 = e1954.dup() + e1995.dup();
let e1997 = e1634.dup() * AB::Expr::from(h81);
let e1998 = e1996.dup() + e1997.dup();
let e1999 = e1992.dup() * e1998.dup();
let e2000 = e1999.dup() - h9.dup();
let e2002 = e2000.dup() * AB::Expr::from(h109);
let e2003 = e1949.dup() + e2002.dup();
let e2004 = e1973.dup() - h9.dup();
let e2006 = e2004.dup() * b1496.dup();
let e2007 = e2003.dup() + e2006.dup();
let e2008 = e1960.dup() - h9.dup();
let e2010 = e2008.dup() * b1493.dup();
let e2011 = e2007.dup() + e2010.dup();
let e2012 = e1953.dup() + AB::Expr::from(h113);
let e2014 = h148.dup() * AB::Expr::from(h96);
let e2015 = e2012.dup() + e2014.dup();
let b2016 = b312.dup() * h38;
let b2017 = b1422.dup() + b1439.dup();
let b2018 = b1407.dup() * b2017.dup();
let b2019 = b2016.dup() + b2018.dup();
let e2021 = e1634.dup() * b2019.dup();
let e2022 = e2015.dup() + e2021.dup();
let e2023 = e2022.dup() - h9.dup();
let b2024 = h90 * b1403.dup();
let e2026 = e2023.dup() * b2024.dup();
let e2027 = e2011.dup() + e2026.dup();
let e2028 = e2027.dup() * Into::<AB::ExprEF>::into(h154);
let e2029 = e1887.dup() + e1878.dup();
let e2030 = e2029.dup() * b145.dup();
let e2031 = e2030.dup() + b210.dup();
let b2032 = b149.dup() * h96;
let e2034 = e2031.dup() + b2032.dup();
let e2035 = e2034.dup() + b1927.dup();
let e2036 = e2035.dup() - b49.dup();
let e2037 = e1965.dup() + e1960.dup();
let e2038 = e2037.dup() * e1972.dup();
let e2039 = e2038.dup() + e1966.dup();
let e2040 = e2039.dup() * e1979.dup();
let e2041 = e2040.dup() + e1973.dup();
let e2042 = e2041.dup() * e1985.dup();
let e2043 = e2042.dup() + e1980.dup();
let e2044 = e2043.dup() * e1991.dup();
let e2045 = e2044.dup() + e1986.dup();
let e2046 = e2045.dup() * e1998.dup();
let e2047 = e2046.dup() + e1992.dup();
let e2048 = e2047.dup() * AB::Expr::from(h109);
let e2049 = e2036.dup() + e2048.dup();
let e2050 = e2039.dup() * b1496.dup();
let e2051 = e2049.dup() + e2050.dup();
let e2052 = e2051.dup() + b1493.dup();
let e2053 = e2052.dup() - b2024.dup();
let e2054 = e2028.dup() - e2053.dup();
builder.assert_zero_ext(e2054.dup());
let e2056 = e1648.dup() * h107.dup();
let e2057 = h147.dup() + e2056.dup();
let e2058 = e2057.dup() + AB::Expr::from(h112);
let e2059 = e1634.dup() * AB::Expr::from(h20);
let e2060 = e1635.dup() * AB::Expr::from(h22);
let e2061 = e2059.dup() + e2060.dup();
let e2062 = e1636.dup() * AB::Expr::from(h24);
let e2063 = e2061.dup() + e2062.dup();
let e2064 = e1637.dup() * AB::Expr::from(h26);
let e2065 = e2063.dup() + e2064.dup();
let e2066 = e2065.dup() + e1944.dup();
let e2067 = e1639.dup() * AB::Expr::from(h41);
let e2068 = e2066.dup() + e2067.dup();
let e2069 = e1640.dup() * AB::Expr::from(h18);
let e2070 = e2068.dup() + e2069.dup();
let e2071 = e1641.dup() * AB::Expr::from(h81);
let e2072 = e2070.dup() + e2071.dup();
let h160: AB::Expr = AB::Expr::from(Felt::from_u64(87));
let e2075 = e1643.dup() * h160.dup();
let e2076 = e2072.dup() + e2075.dup();
let e2077 = e2058.dup() + e2076.dup();
let e2078 = e2077.dup() - h9.dup();
let e2079 = e2078.dup() * b145.dup();
let e2080 = e2079.dup() + h9.dup();
let h161: AB::Expr = AB::Expr::from(Felt::from_u64(84));
let e2083 = e1643.dup() * h161.dup();
let e2084 = e2072.dup() + e2083.dup();
let e2085 = e2058.dup() + e2084.dup();
let e2086 = e2085.dup() - h9.dup();
let e2087 = e2086.dup() * b210.dup();
let e2088 = e2080.dup() + e2087.dup();
let h162: AB::Expr = AB::Expr::from(Felt::from_u64(85));
let e2091 = e1643.dup() * h162.dup();
let e2092 = e2072.dup() + e2091.dup();
let e2093 = e2058.dup() + e2092.dup();
let e2094 = e2093.dup() - h9.dup();
let e2095 = e2094.dup() * b149.dup();
let e2096 = e2088.dup() + e2095.dup();
let e2097 = e2058.dup() + e2072.dup();
let e2098 = e2097.dup() - h9.dup();
let e2100 = e2098.dup() * b143.dup();
let e2101 = e2096.dup() + e2100.dup();
let h163: AB::Expr = AB::Expr::from(Felt::from_u64(108));
let e2104 = e1643.dup() * h163.dup();
let e2105 = e2072.dup() + e2104.dup();
let e2106 = e2058.dup() + e2105.dup();
let h164: AB::Expr = AB::Expr::from(Felt::from_u64(13));
let e2109 = e1648.dup() * h164.dup();
let e2110 = h147.dup() + e2109.dup();
let h165: AB::Expr = AB::Expr::from(Felt::from_u64(4294967294));
let e2113 = h148.dup() * h165.dup();
let e2114 = e2113.dup() + AB::Expr::from(h17);
let e2116 = e1634.dup() * AB::Expr::from(h1);
let e2117 = e2114.dup() + e2116.dup();
let h166: AB::Expr = AB::Expr::from(Felt::from_u64(2147483648));
let e2120 = e1635.dup() * h166.dup();
let e2121 = e2117.dup() + e2120.dup();
let e2122 = e2110.dup() + e2121.dup();
let e2123 = e2106.dup() * e2122.dup();
let e2124 = e2123.dup() - h9.dup();
let e2126 = e2124.dup() * b26.dup();
let e2127 = e2101.dup() + e2126.dup();
let h167: AB::Expr = AB::Expr::from(Felt::from_u64(104));
let e2130 = e1643.dup() * h167.dup();
let e2131 = e2072.dup() + e2130.dup();
let e2132 = e2058.dup() + e2131.dup();
let e2134 = e1648.dup() * h106.dup();
let e2135 = h147.dup() + e2134.dup();
let e2136 = e2135.dup() + AB::Expr::from(h20);
let e2137 = e2136.dup() + e1870.dup();
let e2138 = e2137.dup() + e1872.dup();
let e2139 = e2138.dup() + e1874.dup();
let e2140 = e2132.dup() * e2139.dup();
let e2141 = e2140.dup() - h9.dup();
let e2143 = e2141.dup() * b42.dup();
let e2144 = e2127.dup() + e2143.dup();
let e2146 = e1648.dup() * h80.dup();
let e2147 = h147.dup() + e2146.dup();
let e2148 = e2147.dup() + AB::Expr::from(h112);
let e2149 = e2148.dup() + e2072.dup();
let e2150 = e2149.dup() - h9.dup();
let e2151 = e2150.dup() * b159.dup();
let e2152 = e2144.dup() + e2151.dup();
let e2154 = e1648.dup() * h79.dup();
let e2155 = h147.dup() + e2154.dup();
let b2156 = h113 + h9.dup();
let e2158 = e2155.dup() + b2156.dup();
let e2159 = e2158.dup() + e2065.dup();
let e2160 = e2159.dup() - h9.dup();
let e2161 = e2160.dup() * b49.dup();
let e2162 = e2152.dup() + e2161.dup();
let h168: AB::Expr = AB::Expr::from(Felt::from_u64(88));
let e2165 = e1643.dup() * h168.dup();
let e2166 = e2058.dup() + e2165.dup();
let h169: AB::Expr = AB::Expr::from(Felt::from_u64(14));
let e2169 = e1648.dup() * h169.dup();
let e2170 = h147.dup() + e2169.dup();
let e2172 = h148.dup() * AB::Expr::from(h42);
let e2173 = e2172.dup() + AB::Expr::from(h2);
let e2174 = e2173.dup() + e2116.dup();
let e2175 = e2170.dup() + e2174.dup();
let e2176 = e1635.dup() * AB::Expr::from(h20);
let e2177 = e1636.dup() * AB::Expr::from(h22);
let e2178 = e2176.dup() + e2177.dup();
let e2179 = e1637.dup() * AB::Expr::from(h24);
let e2180 = e2178.dup() + e2179.dup();
let e2181 = e1638.dup() * AB::Expr::from(h26);
let e2182 = e2180.dup() + e2181.dup();
let e2183 = e2175.dup() + e2182.dup();
let e2184 = e2166.dup() * e2183.dup();
let e2185 = e2184.dup() - h9.dup();
let e2187 = e2185.dup() * b218.dup();
let e2188 = e2162.dup() + e2187.dup();
let h170: AB::Expr = AB::Expr::from(Felt::from_u64(92));
let e2191 = e1643.dup() * h170.dup();
let e2192 = e2058.dup() + e2191.dup();
let e2193 = e2192.dup() * e2183.dup();
let e2194 = e2193.dup() * e2122.dup();
let e2195 = e2194.dup() - h9.dup();
let e2196 = e2195.dup() * b34.dup();
let e2197 = e2188.dup() + e2196.dup();
let e2198 = e2057.dup() + AB::Expr::from(h24);
let e2199 = e1634.dup() * AB::Expr::from(h42);
let e2201 = e1635.dup() * AB::Expr::from(h43);
let e2202 = e2199.dup() + e2201.dup();
let e2204 = e1636.dup() * AB::Expr::from(h45);
let e2205 = e2202.dup() + e2204.dup();
let e2207 = e1637.dup() * AB::Expr::from(h47);
let e2208 = e2205.dup() + e2207.dup();
let e2209 = e1638.dup() * AB::Expr::from(h49);
let e2210 = e2208.dup() + e2209.dup();
let e2212 = e1639.dup() * AB::Expr::from(h51);
let e2213 = e2210.dup() + e2212.dup();
let e2215 = e1640.dup() * AB::Expr::from(h53);
let e2216 = e2213.dup() + e2215.dup();
let e2218 = e1641.dup() * AB::Expr::from(h55);
let e2219 = e2216.dup() + e2218.dup();
let e2221 = e1642.dup() * AB::Expr::from(h57);
let e2222 = e2219.dup() + e2221.dup();
let e2224 = e1643.dup() * AB::Expr::from(h59);
let e2225 = e2222.dup() + e2224.dup();
let e2227 = e1644.dup() * AB::Expr::from(h61);
let e2228 = e2225.dup() + e2227.dup();
let e2230 = e1645.dup() * AB::Expr::from(h63);
let e2231 = e2228.dup() + e2230.dup();
let e2232 = e2198.dup() + e2231.dup();
let e2234 = e1648.dup() * h108.dup();
let e2235 = h147.dup() + e2234.dup();
let b2236 = h24 + h9.dup();
let e2238 = e2235.dup() + b2236.dup();
let e2239 = e1634.dup() * AB::Expr::from(h38);
let e2240 = e1635.dup() * AB::Expr::from(h44);
let e2241 = e2239.dup() + e2240.dup();
let e2242 = e1636.dup() * AB::Expr::from(h46);
let e2243 = e2241.dup() + e2242.dup();
let e2244 = e1637.dup() * AB::Expr::from(h48);
let e2245 = e2243.dup() + e2244.dup();
let e2247 = e1638.dup() * AB::Expr::from(h50);
let e2248 = e2245.dup() + e2247.dup();
let e2250 = e1639.dup() * AB::Expr::from(h52);
let e2251 = e2248.dup() + e2250.dup();
let e2253 = e1640.dup() * AB::Expr::from(h54);
let e2254 = e2251.dup() + e2253.dup();
let e2256 = e1641.dup() * AB::Expr::from(h56);
let e2257 = e2254.dup() + e2256.dup();
let e2259 = e1642.dup() * AB::Expr::from(h58);
let e2260 = e2257.dup() + e2259.dup();
let e2262 = e1643.dup() * AB::Expr::from(h60);
let e2263 = e2260.dup() + e2262.dup();
let e2265 = e1644.dup() * AB::Expr::from(h62);
let e2266 = e2263.dup() + e2265.dup();
let e2268 = e1645.dup() * AB::Expr::from(h64);
let e2269 = e2266.dup() + e2268.dup();
let e2270 = e2238.dup() + e2269.dup();
let e2271 = e2232.dup() * e2270.dup();
let e2272 = e2271.dup() - h9.dup();
let e2274 = e2272.dup() * b530.dup();
let e2275 = e2197.dup() + e2274.dup();
let e2277 = e1648.dup() * h32.dup();
let e2278 = h147.dup() + e2277.dup();
let e2279 = h148.dup() * AB::Expr::from(h51);
let e2280 = e2279.dup() + AB::Expr::from(h24);
let e2281 = e2278.dup() + e2280.dup();
let e2282 = e2281.dup() + e2208.dup();
let b2283 = h49 * h83.dup();
let b2284 = h24 + b2283.dup();
let b2285 = b2284.dup() - h9.dup();
let e2287 = e2155.dup() + b2285.dup();
let e2288 = e1634.dup() * AB::Expr::from(h53);
let e2289 = e1635.dup() * AB::Expr::from(h55);
let e2290 = e2288.dup() + e2289.dup();
let e2291 = e1636.dup() * AB::Expr::from(h57);
let e2292 = e2290.dup() + e2291.dup();
let e2293 = e1637.dup() * AB::Expr::from(h59);
let e2294 = e2292.dup() + e2293.dup();
let e2295 = e2287.dup() + e2294.dup();
let e2296 = e2282.dup() * e2295.dup();
let e2297 = e2296.dup() - h9.dup();
let e2299 = e2297.dup() * b139.dup();
let e2300 = e2275.dup() + e2299.dup();
let h171: AB::Expr = AB::Expr::from(Felt::from_u64(10));
let e2303 = e1648.dup() * h171.dup();
let e2304 = h147.dup() + e2303.dup();
let e2305 = e2304.dup() + e2280.dup();
let e2306 = e2305.dup() + e2208.dup();
let e2307 = e2306.dup() * e2295.dup();
let h172: AB::Expr = AB::Expr::from(Felt::from_u64(11));
let e2310 = e1648.dup() * h172.dup();
let e2311 = h147.dup() + e2310.dup();
let e2313 = e2279.dup() + b2284.dup();
let e2314 = e2311.dup() + e2313.dup();
let e2315 = e1634.dup() * AB::Expr::from(h61);
let e2316 = e1635.dup() * AB::Expr::from(h63);
let e2317 = e2315.dup() + e2316.dup();
let e2319 = e1636.dup() * AB::Expr::from(h65);
let e2320 = e2317.dup() + e2319.dup();
let e2322 = e1637.dup() * AB::Expr::from(h67);
let e2323 = e2320.dup() + e2322.dup();
let e2324 = e2314.dup() + e2323.dup();
let e2325 = e2307.dup() * e2324.dup();
let b2326 = h49 * h106.dup();
let b2327 = h24 + b2326.dup();
let b2328 = b2327.dup() - h9.dup();
let e2330 = e2155.dup() + b2328.dup();
let e2331 = e2330.dup() + e2245.dup();
let e2332 = e2325.dup() * e2331.dup();
let e2333 = e2332.dup() - h9.dup();
let e2335 = e2333.dup() * b382.dup();
let e2336 = e2300.dup() + e2335.dup();
let h173: AB::Expr = AB::Expr::from(Felt::from_u64(12));
let e2339 = e1648.dup() * h173.dup();
let e2340 = h147.dup() + e2339.dup();
let e2341 = e1635.dup() * AB::Expr::from(h38);
let e2342 = e2174.dup() + e2341.dup();
let e2343 = e2340.dup() + e2342.dup();
let e2344 = e2343.dup() - h9.dup();
let b2345 = b124.dup() * b121.dup();
let b2346 = b2345.dup() * b20.dup();
let b2347 = b2346.dup() * b130.dup();
let b2348 = b2347.dup() * h16;
let e2350 = e2344.dup() * b2348.dup();
let e2351 = e2336.dup() + e2350.dup();
let e2352 = e2174.dup() + e2201.dup();
let e2353 = e2110.dup() + e2352.dup();
let e2354 = e2353.dup() - h9.dup();
let b2355 = b600.dup() * b30.dup();
let b2356 = b2355.dup() * h16;
let e2358 = e2354.dup() * b2356.dup();
let e2359 = e2351.dup() + e2358.dup();
let e2360 = e1636.dup() * AB::Expr::from(h44);
let e2361 = e2341.dup() + e2360.dup();
let e2362 = e1637.dup() * AB::Expr::from(h46);
let e2363 = e2361.dup() + e2362.dup();
let e2364 = e1638.dup() * AB::Expr::from(h48);
let e2365 = e2363.dup() + e2364.dup();
let e2366 = e2175.dup() + e2365.dup();
let e2367 = e2366.dup() - h9.dup();
let b2368 = b2355.dup() * b32.dup();
let e2370 = e2367.dup() * b2368.dup();
let e2371 = e2359.dup() + e2370.dup();
let h174: AB::Expr = AB::Expr::from(Felt::from_u64(15));
let e2374 = e1648.dup() * h174.dup();
let e2375 = h147.dup() + e2374.dup();
let e2376 = e2375.dup() + e2174.dup();
let e2377 = e2201.dup() + e2204.dup();
let e2378 = e2377.dup() + e2207.dup();
let e2379 = e2378.dup() + e2209.dup();
let e2380 = e2376.dup() + e2379.dup();
let e2381 = e2380.dup() - h9.dup();
let b2382 = b600.dup() * b152.dup();
let b2383 = b2382.dup() * b32.dup();
let e2385 = e2381.dup() * b2383.dup();
let e2386 = e2371.dup() + e2385.dup();
let e2387 = h148.dup() * AB::Expr::from(h65);
let e2388 = e2387.dup() + AB::Expr::from(h2);
let e2389 = e2388.dup() + e2116.dup();
let e2390 = e2170.dup() + e2389.dup();
let e2391 = e2390.dup() + e2365.dup();
let b2392 = h65 + h106.dup();
let e2394 = h148.dup() * b2392.dup();
let e2395 = e2394.dup() + AB::Expr::from(h2);
let e2396 = e2395.dup() + e2116.dup();
let e2397 = e2170.dup() + e2396.dup();
let e2398 = e1635.dup() * AB::Expr::from(h50);
let e2399 = e1636.dup() * AB::Expr::from(h52);
let e2400 = e2398.dup() + e2399.dup();
let e2401 = e1637.dup() * AB::Expr::from(h54);
let e2402 = e2400.dup() + e2401.dup();
let e2403 = e1638.dup() * AB::Expr::from(h56);
let e2404 = e2402.dup() + e2403.dup();
let e2405 = e2397.dup() + e2404.dup();
let e2406 = e2391.dup() * e2405.dup();
let e2407 = e2406.dup() - h9.dup();
let e2409 = e2407.dup() * b466.dup();
let e2410 = e2386.dup() + e2409.dup();
let e2411 = e2375.dup() + e2389.dup();
let e2412 = e2411.dup() + e2365.dup();
let e2413 = e2375.dup() + e2396.dup();
let e2414 = e2413.dup() + e2404.dup();
let e2415 = e2412.dup() * e2414.dup();
let e2416 = e2415.dup() - h9.dup();
let e2418 = e2416.dup() * b468.dup();
let e2419 = e2410.dup() + e2418.dup();
let e2421 = e1635.dup() * b1233.dup();
let e2423 = e1636.dup() * b1235.dup();
let e2424 = e2421.dup() + e2423.dup();
let b2425 = h46 - h45;
let e2427 = e1637.dup() * b2425.dup();
let e2428 = e2424.dup() + e2427.dup();
let b2429 = h48 - h47;
let e2431 = e1638.dup() * b2429.dup();
let e2432 = e2428.dup() + e2431.dup();
let e2433 = e2390.dup() + e2432.dup();
let b2434 = h50 - h49;
let e2436 = e1635.dup() * b2434.dup();
let b2437 = h52 - h51;
let e2439 = e1636.dup() * b2437.dup();
let e2440 = e2436.dup() + e2439.dup();
let b2441 = h54 - h53;
let e2443 = e1637.dup() * b2441.dup();
let e2444 = e2440.dup() + e2443.dup();
let b2445 = h56 - h55;
let e2447 = e1638.dup() * b2445.dup();
let e2448 = e2444.dup() + e2447.dup();
let e2449 = e2397.dup() + e2448.dup();
let e2450 = e2433.dup() * e2449.dup();
let e2451 = h148.dup() * AB::Expr::from(h67);
let e2452 = e2451.dup() + AB::Expr::from(h2);
let e2453 = e2452.dup() + e2116.dup();
let e2454 = e2375.dup() + e2453.dup();
let e2455 = e2454.dup() + e2365.dup();
let e2456 = e2450.dup() * e2455.dup();
let b2457 = h67 + h106.dup();
let e2459 = h148.dup() * b2457.dup();
let e2460 = e2459.dup() + AB::Expr::from(h2);
let e2461 = e2460.dup() + e2116.dup();
let e2462 = e2375.dup() + e2461.dup();
let e2463 = e2462.dup() + e2404.dup();
let e2464 = e2456.dup() * e2463.dup();
let e2465 = e2464.dup() - h9.dup();
let e2467 = e2465.dup() * b910.dup();
let e2468 = e2419.dup() + e2467.dup();
let e2469 = e2170.dup() + e2453.dup();
let e2470 = e1635.dup() * AB::Expr::from(h24);
let e2471 = e1636.dup() * AB::Expr::from(h26);
let e2472 = e2470.dup() + e2471.dup();
let e2473 = e2469.dup() + e2472.dup();
let e2474 = e2473.dup() - h9.dup();
let e2476 = e2474.dup() * b175.dup();
let e2477 = e2468.dup() + e2476.dup();
let e2478 = e1764.dup() + AB::Expr::from(h18);
let e2479 = e1764.dup() + AB::Expr::from(h81);
let e2480 = e2478.dup() * e2479.dup();
let e2481 = e2480.dup() - h9.dup();
let e2483 = e2481.dup() * b1300.dup();
let e2484 = e2477.dup() + e2483.dup();
let e2486 = e1648.dup() * h74.dup();
let e2487 = h147.dup() + e2486.dup();
let e2488 = e2487.dup() + e2172.dup();
let e2489 = e1634.dup() * AB::Expr::from(h43);
let e2490 = e2488.dup() + e2489.dup();
let e2491 = e2490.dup() + e2341.dup();
let e2492 = e2491.dup() - h9.dup();
let b2493 = b600.dup() * b130.dup();
let b2494 = b2493.dup() * b32.dup();
let e2496 = e2492.dup() * b2494.dup();
let e2497 = e2484.dup() + e2496.dup();
let e2498 = e2487.dup() + h9.dup();
let e2499 = e2498.dup() + e2172.dup();
let e2500 = e2499.dup() + e2489.dup();
let e2501 = e2500.dup() + e2341.dup();
let e2502 = e2501.dup() - h9.dup();
let b2503 = b2493.dup() * h16;
let e2505 = e2502.dup() * b2503.dup();
let e2506 = e2497.dup() + e2505.dup();
let h175: AB::Expr = AB::Expr::from(Felt::from_u64(17));
let e2509 = e1648.dup() * h175.dup();
let e2510 = h147.dup() + e2509.dup();
let e2511 = e2510.dup() + AB::Expr::from(h1);
let e2512 = h148.dup() * AB::Expr::from(h2);
let e2513 = e2511.dup() + e2512.dup();
let e2514 = e2513.dup() + e2199.dup();
let e2515 = e2514.dup() + e2201.dup();
let e2516 = e2515.dup() + e2204.dup();
let e2517 = e2516.dup() - h9.dup();
let e2519 = e2517.dup() * b168.dup();
let e2520 = e2506.dup() + e2519.dup();
let e2521 = e1635.dup() * AB::Expr::from(h82);
let e2522 = e1971.dup() + e2521.dup();
let e2523 = e1636.dup() * AB::Expr::from(h41);
let e2524 = e2522.dup() + e2523.dup();
let e2525 = e1637.dup() * AB::Expr::from(h18);
let e2526 = e2524.dup() + e2525.dup();
let e2527 = e2526.dup() + e2209.dup();
let e2528 = e2527.dup() + e2212.dup();
let e2529 = e2528.dup() + e2215.dup();
let e2530 = e2529.dup() + e2218.dup();
let e2531 = e2530.dup() + e1642.dup();
let e2532 = e2198.dup() + e2531.dup();
let e2533 = e2532.dup() * e2270.dup();
let e2534 = e2533.dup() - h9.dup();
let e2535 = e2534.dup() * b533.dup();
let e2536 = e2520.dup() + e2535.dup();
let e2537 = e2536.dup() * Into::<AB::ExprEF>::into(h155);
let e2538 = -AB::ExprEF::from(b145.dup());
let e2539 = e2538.dup() - b210.dup();
let e2540 = e2539.dup() - b149.dup();
let e2541 = e2540.dup() - b143.dup();
let e2542 = e2122.dup() * h85.dup();
let e2543 = e2542.dup() - e2106.dup();
let e2544 = e2543.dup() * b26.dup();
let e2545 = e2541.dup() + e2544.dup();
let e2546 = e2139.dup() * h85.dup();
let e2547 = e2546.dup() - e2132.dup();
let e2548 = e2547.dup() * b42.dup();
let e2549 = e2545.dup() + e2548.dup();
let e2550 = e2549.dup() - b159.dup();
let e2551 = e2550.dup() - b49.dup();
let e2552 = e2183.dup() * h85.dup();
let e2553 = e2552.dup() - e2166.dup();
let e2554 = e2553.dup() * b218.dup();
let e2555 = e2551.dup() + e2554.dup();
let e2556 = e2552.dup() - e2192.dup();
let e2557 = e2556.dup() * e2122.dup();
let e2558 = e2557.dup() - e2193.dup();
let e2559 = e2558.dup() * b34.dup();
let e2560 = e2555.dup() + e2559.dup();
let e2561 = e2270.dup() * h85.dup();
let e2562 = e2561.dup() - e2232.dup();
let e2563 = e2562.dup() * b530.dup();
let e2564 = e2560.dup() + e2563.dup();
let e2565 = e2295.dup() * h85.dup();
let e2566 = e2565.dup() - e2282.dup();
let e2567 = e2566.dup() * b139.dup();
let e2568 = e2564.dup() + e2567.dup();
let e2569 = e2565.dup() - e2306.dup();
let e2570 = e2569.dup() * e2324.dup();
let e2571 = e2570.dup() - e2307.dup();
let e2572 = e2571.dup() * e2331.dup();
let e2573 = e2572.dup() - e2325.dup();
let e2574 = e2573.dup() * b382.dup();
let e2575 = e2568.dup() + e2574.dup();
let e2576 = e2575.dup() - b2348.dup();
let e2577 = e2576.dup() - b2356.dup();
let e2578 = e2577.dup() - b2368.dup();
let e2579 = e2578.dup() - b2383.dup();
let e2580 = e2405.dup() * h85.dup();
let e2581 = e2580.dup() - e2391.dup();
let e2582 = e2581.dup() * b466.dup();
let e2583 = e2579.dup() + e2582.dup();
let e2584 = e2414.dup() * h85.dup();
let e2585 = e2584.dup() - e2412.dup();
let e2586 = e2585.dup() * b468.dup();
let e2587 = e2583.dup() + e2586.dup();
let e2588 = e2449.dup() * h85.dup();
let e2589 = e2588.dup() - e2433.dup();
let e2590 = e2589.dup() * e2455.dup();
let e2591 = e2590.dup() - e2450.dup();
let e2592 = e2591.dup() * e2463.dup();
let e2593 = e2592.dup() - e2456.dup();
let e2594 = e2593.dup() * b910.dup();
let e2595 = e2587.dup() + e2594.dup();
let e2596 = e2595.dup() - b175.dup();
let e2597 = e2479.dup() * h85.dup();
let e2598 = e2597.dup() - e2478.dup();
let e2599 = e2598.dup() * b1300.dup();
let e2600 = e2596.dup() + e2599.dup();
let e2601 = e2600.dup() - b2494.dup();
let e2602 = e2601.dup() - b2503.dup();
let e2603 = e2602.dup() - b168.dup();
let e2604 = e2561.dup() - e2532.dup();
let e2605 = e2604.dup() * b533.dup();
let e2606 = e2603.dup() + e2605.dup();
let e2607 = e2537.dup() - e2606.dup();
builder.assert_zero_ext(e2607.dup());
let h176: AB::Expr = AB::Expr::from(Felt::from_u64(20));
let e2610 = e1648.dup() * h176.dup();
let e2611 = h147.dup() + e2610.dup();
let e2612 = e2611.dup() + AB::Expr::from(h1);
let e2614 = h148.dup() * AB::Expr::from(h71);
let e2615 = e2612.dup() + e2614.dup();
let e2616 = e1634.dup() * AB::Expr::from(h75);
let e2617 = e2615.dup() + e2616.dup();
let e2618 = e2617.dup() - h9.dup();
let e2620 = e2618.dup() * b612.dup();
let e2621 = e2620.dup() + h9.dup();
let e2622 = e2611.dup() + AB::Expr::from(h75);
let e2624 = h148.dup() * AB::Expr::from(h72);
let e2625 = e2622.dup() + e2624.dup();
let e2626 = e1634.dup() * AB::Expr::from(h78);
let e2627 = e2625.dup() + e2626.dup();
let e2628 = e2627.dup() - h9.dup();
let b2629 = b603.dup() + b210.dup();
let b2630 = b2629.dup() + b212.dup();
let b2631 = b2630.dup() + b216.dup();
let b2632 = b2631.dup() + b218.dup();
let b2633 = b2632.dup() * b607.dup();
let e2635 = e2628.dup() * b2633.dup();
let e2636 = e2621.dup() + e2635.dup();
let e2637 = e2625.dup() + e1713.dup();
let e2638 = e2637.dup() - h9.dup();
let b2639 = b34.dup() * b607.dup();
let e2641 = e2638.dup() * b2639.dup();
let e2642 = e2636.dup() + e2641.dup();
let e2643 = e2642.dup() * Into::<AB::ExprEF>::into(h156);
let e2644 = AB::ExprEF::from(b612.dup()) - b2633.dup();
let e2645 = e2644.dup() - b2639.dup();
let e2646 = e2643.dup() - e2645.dup();
builder.assert_zero_ext(e2646.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() * h16;
let h31: AB::Expr = AB::Expr::from(Felt::from_u64(65536));
let b151 = h25 * h31.dup();
let b152 = h23 + b151.dup();
let h32: AB::Expr = AB::Expr::from(Felt::from_u64(4294967296));
let b154 = h27 * h32.dup();
let b155 = b152.dup() + b154.dup();
let h33: AB::Expr = AB::Expr::from(Felt::from_u64(281474976710656));
let b157 = h29 * h33.dup();
let b158 = b155.dup() + b157.dup();
let b159 = h30 + b158.dup();
let b160 = b159.dup() + h17;
let h34: AB::Expr = AB::Expr::from(Felt::from_u64(9223372034707292160));
let b162 = b160.dup() - h34.dup();
let b163 = b149.dup() * b162.dup();
builder.assert_zero(b163.dup());
let b164 = h1.dup() - h16;
let b165 = b140.dup() * b164.dup();
let b166 = b165.dup() * h23;
builder.assert_zero(b166.dup());
let b167 = b165.dup() * h25;
builder.assert_zero(b167.dup());
let b168 = b165.dup() * h27;
builder.assert_zero(b168.dup());
let b169 = b165.dup() * h29;
builder.assert_zero(b169.dup());
let b170 = h9 + h10;
let b171 = h9 * h10;
let b172 = b170.dup() - b171.dup();
let b173 = h8 * b172.dup();
let b174 = h30 - h20;
let b175 = b173.dup() * b174.dup();
let b176 = b164.dup() * b175.dup();
let b177 = b75.dup() * b176.dup();
let b178 = b59.dup() * b177.dup();
builder.assert_zero(b178.dup());
let b179 = b59.dup() * b75.dup();
let b180 = b179.dup() * b164.dup();
let b181 = b180.dup() * b173.dup();
let h35 = m1[19];
let b183 = h17 - h35;
let b184 = b181.dup() * b183.dup();
builder.assert_zero(b184.dup());
let h36 = m1[8];
let b186 = h36 - h11;
let b187 = h17 * b186.dup();
let b188 = h11 + b187.dup();
let b189 = h7 - b188.dup();
let b190 = b181.dup() * b189.dup();
builder.assert_zero(b190.dup());
let h37 = m0[5];
let h38 = m1[5];
let h39 = m1[9];
let b194 = h39 - h38;
let b195 = h17 * b194.dup();
let b196 = h38 + b195.dup();
let b197 = h37 - b196.dup();
let b198 = b181.dup() * b197.dup();
builder.assert_zero(b198.dup());
let h40 = m0[6];
let h41 = m1[6];
let h42 = m1[10];
let b202 = h42 - h41;
let b203 = h17 * b202.dup();
let b204 = h41 + b203.dup();
let b205 = h40 - b204.dup();
let b206 = b181.dup() * b205.dup();
builder.assert_zero(b206.dup());
let h43 = m0[7];
let h44 = m1[7];
let h45 = m1[11];
let b210 = h45 - h44;
let b211 = h17 * b210.dup();
let b212 = h44 + b211.dup();
let b213 = h43 - b212.dup();
let b214 = b181.dup() * b213.dup();
builder.assert_zero(b214.dup());
let h46 = m1[17];
let h47 = m0[17];
let b217 = h8 * h9;
let b218 = b217.dup() * b114.dup();
let b219 = b218.dup() * h21;
let b220 = h47 + b219.dup();
let b221 = h46 - b220.dup();
let b222 = b72.dup() * b221.dup();
builder.assert_zero(b222.dup());
let b223 = b75.dup() * b106.dup();
let b224 = b223.dup() * h20;
let b225 = b59.dup() * b224.dup();
builder.assert_zero(b225.dup());
let b226 = b223.dup() * h17;
let b227 = b59.dup() * b226.dup();
builder.assert_zero(b227.dup());
let b228 = b75.dup() * h6;
let b229 = h16 * h17;
let b230 = b228.dup() * b229.dup();
let b231 = b59.dup() * b230.dup();
builder.assert_zero(b231.dup());
let b232 = b94.dup() * b76.dup();
let h48: AB::Expr = builder.periodic_values()[1].into();
let b234 = b232.dup() * h48.dup();
builder.assert_zero(b234.dup());
let b235 = h0 - b13.dup();
let b236 = b235.dup() * b16.dup();
builder.assert_zero(b236.dup());
let b237 = h5 - h9;
let b238 = h48.dup() * b237.dup();
let b239 = b235.dup() * b238.dup();
builder.assert_zero(b239.dup());
let b240 = h37 - h1.dup();
let b241 = h37 * b240.dup();
let b242 = b235.dup() * b241.dup();
builder.assert_zero(b242.dup());
let b243 = h40 - h1.dup();
let b244 = h40 * b243.dup();
let b245 = b235.dup() * b244.dup();
builder.assert_zero(b245.dup());
let b246 = h43 - h1.dup();
let b247 = h43 * b246.dup();
let b248 = b235.dup() * b247.dup();
builder.assert_zero(b248.dup());
let h49 = m0[8];
let b250 = h49 - h1.dup();
let b251 = h49 * b250.dup();
let b252 = b235.dup() * b251.dup();
builder.assert_zero(b252.dup());
let h50 = m0[9];
let b254 = h50 - h1.dup();
let b255 = h50 * b254.dup();
let b256 = b235.dup() * b255.dup();
builder.assert_zero(b256.dup());
let h51 = m0[10];
let b258 = h51 - h1.dup();
let b259 = h51 * b258.dup();
let b260 = b235.dup() * b259.dup();
builder.assert_zero(b260.dup());
let h52 = m0[11];
let b262 = h52 - h1.dup();
let b263 = h52 * b262.dup();
let b264 = b235.dup() * b263.dup();
builder.assert_zero(b264.dup());
let b265 = h23 - h1.dup();
let b266 = h23 * b265.dup();
let b267 = b235.dup() * b266.dup();
builder.assert_zero(b267.dup());
let h53: AB::Expr = builder.periodic_values()[0].into();
let b269 = h49 + h49;
let b270 = b269.dup() + h43;
let b271 = b270.dup() + b270.dup();
let b272 = b271.dup() + h40;
let b273 = b272.dup() + b272.dup();
let b274 = b273.dup() + h37;
let b275 = h6 - b274.dup();
let b276 = h53.dup() * b275.dup();
let b277 = b235.dup() * b276.dup();
builder.assert_zero(b277.dup());
let b278 = h23 + h23;
let b279 = b278.dup() + h52;
let b280 = b279.dup() + b279.dup();
let b281 = b280.dup() + h51;
let b282 = b281.dup() + b281.dup();
let b283 = b282.dup() + h50;
let b284 = h7 - b283.dup();
let b285 = h53.dup() * b284.dup();
let b286 = b235.dup() * b285.dup();
builder.assert_zero(b286.dup());
let b287 = h53.dup() * h25;
let b288 = b235.dup() * b287.dup();
builder.assert_zero(b288.dup());
let h54: AB::Expr = AB::Expr::from(Felt::from_u64(16));
let b290 = h6 * h54.dup();
let b291 = h36 + h36;
let b292 = b291.dup() + h44;
let b293 = b292.dup() + b292.dup();
let b294 = b293.dup() + h41;
let b295 = b294.dup() + b294.dup();
let b296 = b295.dup() + h38;
let b297 = b290.dup() + b296.dup();
let b298 = h10 - b297.dup();
let b299 = h48.dup() * b298.dup();
let b300 = b235.dup() * b299.dup();
builder.assert_zero(b300.dup());
let b301 = h7 * h54.dup();
let b302 = h22 + h22;
let b303 = b302.dup() + h45;
let b304 = b303.dup() + b303.dup();
let b305 = b304.dup() + h42;
let b306 = b305.dup() + b305.dup();
let b307 = b306.dup() + h39;
let b308 = b301.dup() + b307.dup();
let b309 = h11 - b308.dup();
let b310 = h48.dup() * b309.dup();
let b311 = b235.dup() * b310.dup();
builder.assert_zero(b311.dup());
let b312 = h27 - h24;
let b313 = h48.dup() * b312.dup();
let b314 = b235.dup() * b313.dup();
builder.assert_zero(b314.dup());
let b315 = h25 * h54.dup();
let b316 = h49 * h23;
let b317 = b316.dup() + b316.dup();
let b318 = h43 * h52;
let b319 = b317.dup() + b318.dup();
let b320 = b319.dup() + b319.dup();
let b321 = h40 * h51;
let b322 = b320.dup() + b321.dup();
let b323 = b322.dup() + b322.dup();
let b324 = h37 * h50;
let b325 = b323.dup() + b324.dup();
let b326 = b315.dup() + b325.dup();
let b327 = h49 + h23;
let b328 = b327.dup() - b317.dup();
let b329 = b328.dup() + b328.dup();
let b330 = h43 + h52;
let b331 = b318.dup() + b318.dup();
let b332 = b330.dup() - b331.dup();
let b333 = b329.dup() + b332.dup();
let b334 = b333.dup() + b333.dup();
let b335 = h40 + h51;
let b336 = b321.dup() + b321.dup();
let b337 = b335.dup() - b336.dup();
let b338 = b334.dup() + b337.dup();
let b339 = b338.dup() + b338.dup();
let b340 = h37 + h50;
let b341 = b324.dup() + b324.dup();
let b342 = b340.dup() - b341.dup();
let b343 = b339.dup() + b342.dup();
let b344 = b343.dup() - b325.dup();
let b345 = h5 * b344.dup();
let b346 = b326.dup() + b345.dup();
let b347 = h27 - b346.dup();
let b348 = b235.dup() * b347.dup();
builder.assert_zero(b348.dup());
let b349 = b13.dup() - b18.dup();
let b350 = b349.dup() * b21.dup();
builder.assert_zero(b350.dup());
let b351 = b349.dup() * b26.dup();
builder.assert_zero(b351.dup());
let b352 = b349.dup() * b247.dup();
builder.assert_zero(b352.dup());
let b353 = b349.dup() * b251.dup();
builder.assert_zero(b353.dup());
let b354 = h17 * h31.dup();
let b355 = b354.dup() + h16;
let h55: AB::Expr = AB::Expr::from(Felt::from_u64(4));
let b357 = b355.dup() * h55.dup();
let b358 = h40 - b357.dup();
let b359 = b349.dup() * b358.dup();
builder.assert_zero(b359.dup());
let b360 = h7 * h43;
let b361 = b349.dup() * b360.dup();
builder.assert_zero(b361.dup());
let b362 = h7 * h49;
let b363 = b349.dup() * b362.dup();
builder.assert_zero(b363.dup());
let b364 = b235.dup() + b94.dup();
let b365 = b364.dup() * h8;
let b366 = b365.dup() * b77.dup();
let b367 = h1.dup() - h11;
let b368 = b114.dup() * b367.dup();
let b369 = h1.dup() - h36;
let b370 = h1.dup() - h44;
let b371 = b369.dup() * b370.dup();
let b372 = h1.dup() - b371.dup();
let b373 = b368.dup() * b372.dup();
let b374 = h10 + b373.dup();
let b375 = b374.dup() * h42;
let b376 = b366.dup() * b375.dup();
builder.assert_zero(b376.dup());
let b377 = b369.dup() * h44;
let b378 = h1.dup() - b377.dup();
let b379 = b368.dup() * b378.dup();
let b380 = h10 + b379.dup();
let b381 = b380.dup() * h45;
let b382 = b366.dup() * b381.dup();
builder.assert_zero(b382.dup());
let b383 = h36 * b370.dup();
let b384 = h1.dup() - b383.dup();
let b385 = b368.dup() * b384.dup();
let b386 = h10 + b385.dup();
let b387 = b386.dup() * h22;
let b388 = b366.dup() * b387.dup();
builder.assert_zero(b388.dup());
let b389 = h36 * h44;
let b390 = h1.dup() - b389.dup();
let b391 = b368.dup() * b390.dup();
let b392 = h10 + b391.dup();
let b393 = b392.dup() * h24;
let b394 = b366.dup() * b393.dup();
builder.assert_zero(b394.dup());
let b395 = h2.dup() * b13.dup();
let b396 = b395.dup() * b77.dup();
let b397 = h38 - h37;
let b398 = b397.dup() * h30;
let b399 = b398.dup() - h1.dup();
let b400 = b398.dup() * b399.dup();
let b401 = b396.dup() * b400.dup();
builder.assert_zero(b401.dup());
let b402 = h1.dup() - b398.dup();
let b403 = b402.dup() * b397.dup();
let b404 = b396.dup() * b403.dup();
builder.assert_zero(b404.dup());
let b405 = h41 - h40;
let b406 = b405.dup() * h30;
let b407 = b406.dup() - h1.dup();
let b408 = b406.dup() * b407.dup();
let b409 = b402.dup() * b408.dup();
let b410 = b396.dup() * b409.dup();
builder.assert_zero(b410.dup());
let b411 = h1.dup() - b406.dup();
let b412 = b411.dup() * b405.dup();
let b413 = b402.dup() * b412.dup();
let b414 = b396.dup() * b413.dup();
builder.assert_zero(b414.dup());
let b415 = b402.dup() * b411.dup();
let b416 = h46 - b415.dup();
let b417 = b396.dup() * b416.dup();
builder.assert_zero(b417.dup());
let b418 = b398.dup() * b397.dup();
let b419 = b406.dup() * b405.dup();
let b420 = h39 - h50;
let b421 = b411.dup() * b420.dup();
let b422 = b419.dup() + b421.dup();
let b423 = b402.dup() * b422.dup();
let b424 = b418.dup() + b423.dup();
let b425 = h28 * h31.dup();
let b426 = b425.dup() + h26;
let b427 = b424.dup() - b426.dup();
let b428 = b396.dup() * b427.dup();
builder.assert_zero(b428.dup());
let b429 = b420.dup() * h30;
let b430 = h1.dup() - b429.dup();
let b431 = b106.dup() + b114.dup();
let b432 = b430.dup() * b431.dup();
let b433 = h46 * b432.dup();
let b434 = b396.dup() * b433.dup();
builder.assert_zero(b434.dup());
let b435 = h46 * h51;
let b436 = h42 - b435.dup();
let b437 = b374.dup() * b436.dup();
let b438 = b396.dup() * b437.dup();
builder.assert_zero(b438.dup());
let b439 = h46 * h52;
let b440 = h45 - b439.dup();
let b441 = b380.dup() * b440.dup();
let b442 = b396.dup() * b441.dup();
builder.assert_zero(b442.dup());
let b443 = h46 * h23;
let b444 = h22 - b443.dup();
let b445 = b386.dup() * b444.dup();
let b446 = b396.dup() * b445.dup();
builder.assert_zero(b446.dup());
let b447 = h46 * h25;
let b448 = h24 - b447.dup();
let b449 = b392.dup() * b448.dup();
let b450 = b396.dup() * b449.dup();
builder.assert_zero(b450.dup());
let b451 = h3 * h8;
let b452 = b451.dup() * h9;
let b453 = b452.dup() * b114.dup();
let b454 = h1.dup() - b18.dup();
let b455 = b453.dup() * b454.dup();
let b456 = h11 - h1.dup();
let b457 = b455.dup() * b456.dup();
builder.assert_zero(b457.dup());
let b458 = b18.dup() - b23.dup();
let b459 = b458.dup() * b26.dup();
builder.assert_zero(b459.dup());
let b460 = b458.dup() * b241.dup();
builder.assert_zero(b460.dup());
let b461 = b458.dup() * h10;
let b462 = b461.dup() * h7;
builder.assert_zero(b462.dup());
let b463 = h2.dup() * b18.dup();
let b464 = b463.dup() * b114.dup();
let b465 = h7 * h11;
let b466 = b464.dup() * b465.dup();
builder.assert_zero(b466.dup());
let b467 = h7 * h37;
let b468 = b458.dup() * b467.dup();
builder.assert_zero(b468.dup());
let b469 = h1.dup() - h38;
let b470 = h37 * b469.dup();
let b471 = b367.dup() * b470.dup();
let b472 = b464.dup() * b471.dup();
builder.assert_zero(b472.dup());
let b473 = b464.dup() * b367.dup();
let b474 = b473.dup() * b405.dup();
builder.assert_zero(b474.dup());
let b475 = h36 - h49;
let b476 = b473.dup() * b475.dup();
builder.assert_zero(b476.dup());
let b477 = h1.dup() - h37;
let b478 = b477.dup() * h55.dup();
let b479 = h43 + b478.dup();
let b480 = b479.dup() + h37;
let b481 = h44 - b480.dup();
let b482 = b473.dup() * b481.dup();
builder.assert_zero(b482.dup());
let b483 = b477.dup() + b477.dup();
let b484 = h42 + b483.dup();
let b485 = b484.dup() + h37;
let b486 = h51 - b485.dup();
let b487 = b473.dup() * b486.dup();
builder.assert_zero(b487.dup());
let b488 = h25 - b258.dup();
let b489 = b477.dup() * b488.dup();
let b490 = b458.dup() * b489.dup();
builder.assert_zero(b490.dup());
let b491 = b469.dup() * h30;
let b492 = h38 * h42;
let b493 = b491.dup() + b492.dup();
let b494 = b493.dup() - h20;
let b495 = b477.dup() * b494.dup();
let b496 = b464.dup() * b495.dup();
builder.assert_zero(b496.dup());
let b497 = b458.dup() * h37;
let b498 = h50 * h50;
let b499 = b498.dup() - h1.dup();
let b500 = h50 * b499.dup();
let b501 = b497.dup() * b500.dup();
builder.assert_zero(b501.dup());
let b502 = h47 * h50;
let b503 = h27 + b502.dup();
let b504 = h27 * h47;
let h56: AB::Expr = AB::Expr::from(Felt::from_u64(7));
let b506 = h29 * h16;
let b507 = h56.dup() * b506.dup();
let b508 = b504.dup() + b507.dup();
let b509 = b503.dup() - b508.dup();
let b510 = b509.dup() * b498.dup();
let b511 = b510.dup() + b508.dup();
let b512 = h52 - b511.dup();
let b513 = b497.dup() * b512.dup();
builder.assert_zero(b513.dup());
let b514 = h16 * h50;
let b515 = h29 + b514.dup();
let b516 = h27 * h16;
let b517 = h29 * h47;
let b518 = b516.dup() + b517.dup();
let b519 = b515.dup() - b518.dup();
let b520 = b519.dup() * b498.dup();
let b521 = b520.dup() + b518.dup();
let b522 = h23 - b521.dup();
let b523 = b497.dup() * b522.dup();
builder.assert_zero(b523.dup());
let b524 = b464.dup() * h11;
let b525 = b461.dup() + b524.dup();
let b526 = b525.dup() * b477.dup();
builder.assert_zero(b526.dup());
let b527 = b525.dup() * h52;
builder.assert_zero(b527.dup());
let b528 = b525.dup() * h23;
builder.assert_zero(b528.dup());
let b529 = b525.dup() * h51;
builder.assert_zero(b529.dup());
let h57 = a0[0];
let e532 = Into::<AB::ExprEF>::into(h57) * h13.dup();
builder.assert_zero_ext(e532.dup());
let h58: AB::ExprEF = builder.permutation_randomness()[0].into();
let h59: AB::ExprEF = builder.permutation_randomness()[1].into();
let e536 = h59.dup() * h59.dup();
let e537 = e536.dup() * h59.dup();
let e538 = e537.dup() * h59.dup();
let e539 = e538.dup() * h59.dup();
let e540 = e539.dup() * h59.dup();
let e541 = e540.dup() * h59.dup();
let e542 = e541.dup() * h59.dup();
let e543 = e542.dup() * h59.dup();
let e544 = e543.dup() * h59.dup();
let e545 = e544.dup() * h59.dup();
let e546 = e545.dup() * h59.dup();
let e547 = e546.dup() * h59.dup();
let e548 = e547.dup() * h59.dup();
let e549 = e548.dup() * h59.dup();
let e550 = e549.dup() * h59.dup();
let h60: AB::Expr = AB::Expr::from(Felt::from_u64(5));
let e553 = e550.dup() * h60.dup();
let e554 = h58.dup() + e553.dup();
let e556 = e554.dup() + AB::Expr::from(h14);
let e558 = e536.dup() * AB::Expr::from(h7);
let e560 = e537.dup() * AB::Expr::from(h37);
let e561 = e558.dup() + e560.dup();
let e563 = e538.dup() * AB::Expr::from(h40);
let e564 = e561.dup() + e563.dup();
let e566 = e539.dup() * AB::Expr::from(h43);
let e567 = e564.dup() + e566.dup();
let e569 = e540.dup() * AB::Expr::from(h49);
let e570 = e567.dup() + e569.dup();
let e572 = e541.dup() * AB::Expr::from(h50);
let e573 = e570.dup() + e572.dup();
let e575 = e542.dup() * AB::Expr::from(h51);
let e576 = e573.dup() + e575.dup();
let e578 = e543.dup() * AB::Expr::from(h52);
let e579 = e576.dup() + e578.dup();
let e581 = e544.dup() * AB::Expr::from(h23);
let e582 = e579.dup() + e581.dup();
let e584 = e545.dup() * AB::Expr::from(h25);
let e585 = e582.dup() + e584.dup();
let e587 = e546.dup() * AB::Expr::from(h27);
let e588 = e585.dup() + e587.dup();
let e590 = e547.dup() * AB::Expr::from(h29);
let e591 = e588.dup() + e590.dup();
let e592 = e556.dup() + e591.dup();
let e593 = e592.dup() - h1.dup();
let b594 = b60.dup() * b74.dup();
let b595 = b594.dup() * b106.dup();
let b596 = b595.dup() * h16;
let e598 = e593.dup() * b596.dup();
let e599 = e598.dup() + h1.dup();
let e601 = e550.dup() * h56.dup();
let e602 = h58.dup() + e601.dup();
let e603 = e602.dup() + AB::Expr::from(h14);
let e604 = e603.dup() + e579.dup();
let e605 = e604.dup() - h1.dup();
let b606 = b595.dup() * b164.dup();
let e608 = e605.dup() * b606.dup();
let e609 = e599.dup() + e608.dup();
let h61: AB::Expr = AB::Expr::from(Felt::from_u64(9));
let e612 = e550.dup() * h61.dup();
let e613 = h58.dup() + e612.dup();
let b614 = b74.dup() * h6;
let e616 = e613.dup() * b614.dup();
let h62: AB::Expr = AB::Expr::from(Felt::from_u64(10));
let e619 = e550.dup() * h62.dup();
let e620 = h58.dup() + e619.dup();
let b621 = h5 * b106.dup();
let e623 = e620.dup() * b621.dup();
let e624 = e616.dup() + e623.dup();
let h63: AB::Expr = AB::Expr::from(Felt::from_u64(11));
let e627 = e550.dup() * h63.dup();
let e628 = h58.dup() + e627.dup();
let e630 = e628.dup() * b137.dup();
let e631 = e624.dup() + e630.dup();
let e633 = h59.dup() * AB::Expr::from(h20);
let e634 = e633.dup() + AB::Expr::from(h14);
let e635 = e631.dup() + e634.dup();
let b636 = h20 - b142.dup();
let b637 = h1.dup() - b636.dup();
let b638 = h7 * b637.dup();
let b639 = h49 * b636.dup();
let b640 = b638.dup() + b639.dup();
let e642 = e536.dup() * b640.dup();
let b643 = h37 * b637.dup();
let b644 = h50 * b636.dup();
let b645 = b643.dup() + b644.dup();
let e647 = e537.dup() * b645.dup();
let e648 = e642.dup() + e647.dup();
let b649 = h40 * b637.dup();
let b650 = h51 * b636.dup();
let b651 = b649.dup() + b650.dup();
let e653 = e538.dup() * b651.dup();
let e654 = e648.dup() + e653.dup();
let b655 = h43 * b637.dup();
let b656 = h52 * b636.dup();
let b657 = b655.dup() + b656.dup();
let e659 = e539.dup() * b657.dup();
let e660 = e654.dup() + e659.dup();
let e661 = e635.dup() + e660.dup();
let h64: AB::Expr = AB::Expr::from(Felt::from_u64(22));
let e664 = e550.dup() * h64.dup();
let e665 = h58.dup() + e664.dup();
let e666 = e665.dup() + AB::Expr::from(h23);
let e667 = e661.dup() * e666.dup();
let e668 = e667.dup() - h1.dup();
let b669 = b60.dup() * b138.dup();
let b670 = b669.dup() * h16;
let e672 = e668.dup() * b670.dup();
let e673 = e609.dup() + e672.dup();
let h65: AB::Expr = AB::Expr::from(Felt::from_u64(8));
let e676 = e550.dup() * h65.dup();
let e677 = h58.dup() + e676.dup();
let e678 = e677.dup() + e634.dup();
let e679 = e678.dup() + e567.dup();
let e680 = e679.dup() - h1.dup();
let b681 = b59.dup() * b73.dup();
let b682 = b681.dup() * b74.dup();
let b683 = b682.dup() * b106.dup();
let e685 = e680.dup() * b683.dup();
let e686 = e673.dup() + e685.dup();
let h66: AB::Expr = AB::Expr::from(Felt::from_u64(6));
let e689 = e550.dup() * h66.dup();
let e690 = h58.dup() + e689.dup();
let e691 = e690.dup() + AB::Expr::from(h14);
let e692 = e691.dup() + e591.dup();
let e693 = e692.dup() - h1.dup();
let b694 = b682.dup() * h6;
let b695 = b694.dup() * h16;
let e697 = e693.dup() * b695.dup();
let e698 = e686.dup() + e697.dup();
let e700 = e550.dup() * h54.dup();
let e701 = h58.dup() + e700.dup();
let e703 = e701.dup() + AB::Expr::from(h5);
let e705 = h59.dup() * AB::Expr::from(h6);
let e706 = e703.dup() + e705.dup();
let e707 = e706.dup() + e558.dup();
let e708 = e537.dup() * AB::Expr::from(h27);
let e709 = e707.dup() + e708.dup();
let e710 = e709.dup() - h1.dup();
let b711 = h1.dup() - h48.dup();
let b712 = b235.dup() * b711.dup();
let e714 = e710.dup() * b712.dup();
let e715 = e698.dup() + e714.dup();
let h67: AB::Expr = AB::Expr::from(Felt::from_u64(12));
let e718 = e550.dup() * h67.dup();
let e719 = h58.dup() + e718.dup();
let e720 = e719.dup() * AB::Expr::from(h6);
let h68: AB::Expr = AB::Expr::from(Felt::from_u64(13));
let e723 = e550.dup() * h68.dup();
let e724 = h58.dup() + e723.dup();
let e726 = e724.dup() * b106.dup();
let e727 = e720.dup() + e726.dup();
let b728 = h1.dup() - h7;
let e730 = e727.dup() * b728.dup();
let h69: AB::Expr = AB::Expr::from(Felt::from_u64(14));
let e733 = e550.dup() * h69.dup();
let e734 = h58.dup() + e733.dup();
let e735 = e734.dup() * AB::Expr::from(h6);
let h70: AB::Expr = AB::Expr::from(Felt::from_u64(15));
let e738 = e550.dup() * h70.dup();
let e739 = h58.dup() + e738.dup();
let e740 = e739.dup() * b106.dup();
let e741 = e735.dup() + e740.dup();
let e742 = e741.dup() * AB::Expr::from(h7);
let e743 = e730.dup() + e742.dup();
let e744 = e743.dup() + AB::Expr::from(h37);
let h71: AB::Expr = AB::Expr::from(Felt::from_u64(2));
let b746 = h49 * h71.dup();
let b747 = h40 + b746.dup();
let b748 = b747.dup() + h43;
let e750 = h59.dup() * b748.dup();
let e751 = e744.dup() + e750.dup();
let e752 = e536.dup() * AB::Expr::from(h50);
let e753 = e751.dup() + e752.dup();
let b754 = h1.dup() - h43;
let b755 = h51 * b754.dup();
let b756 = h1.dup() - h49;
let b757 = b755.dup() * b756.dup();
let b758 = h52 * h43;
let b759 = b758.dup() * b756.dup();
let b760 = b757.dup() + b759.dup();
let b761 = h23 * b754.dup();
let b762 = b761.dup() * h49;
let b763 = b760.dup() + b762.dup();
let b764 = h25 * h43;
let b765 = b764.dup() * h49;
let b766 = b763.dup() + b765.dup();
let e768 = e537.dup() * b766.dup();
let e769 = e768.dup() * b728.dup();
let e770 = e753.dup() + e769.dup();
let e771 = e537.dup() * AB::Expr::from(h51);
let e772 = e538.dup() * AB::Expr::from(h52);
let e773 = e771.dup() + e772.dup();
let e774 = e539.dup() * AB::Expr::from(h23);
let e775 = e773.dup() + e774.dup();
let e776 = e540.dup() * AB::Expr::from(h25);
let e777 = e775.dup() + e776.dup();
let e778 = e777.dup() * AB::Expr::from(h7);
let e779 = e770.dup() + e778.dup();
let e780 = e779.dup() - h1.dup();
let e782 = e780.dup() * b349.dup();
let e783 = e715.dup() + e782.dup();
let h72: AB::Expr = AB::Expr::from(Felt::from_u64(17));
let e786 = e550.dup() * h72.dup();
let e787 = h58.dup() + e786.dup();
let e788 = e787.dup() + AB::Expr::from(h49);
let e789 = h59.dup() * AB::Expr::from(h40);
let e790 = e788.dup() + e789.dup();
let e791 = e536.dup() * AB::Expr::from(h43);
let e792 = e790.dup() + e791.dup();
let b793 = h51 + h1.dup();
let b794 = h20 + h1.dup();
let b795 = b793.dup() - b794.dup();
let e797 = e537.dup() * b795.dup();
let e798 = e792.dup() + e797.dup();
let e800 = e538.dup() * b794.dup();
let e801 = e798.dup() + e800.dup();
let e802 = e801.dup() - h1.dup();
let b803 = b458.dup() * h7;
let e805 = e802.dup() * b803.dup();
let e806 = e783.dup() + e805.dup();
let e807 = h58.dup() + e550.dup();
let e808 = e807.dup() + AB::Expr::from(h40);
let e809 = h59.dup() * AB::Expr::from(h43);
let e810 = e808.dup() + e809.dup();
let e811 = e536.dup() * AB::Expr::from(h49);
let e812 = e810.dup() + e811.dup();
let e813 = e537.dup() * AB::Expr::from(h50);
let e814 = e812.dup() + e813.dup();
let e816 = e550.dup() * h55.dup();
let e817 = h58.dup() + e816.dup();
let e818 = e817.dup() + AB::Expr::from(h40);
let e819 = e818.dup() + e809.dup();
let e820 = e819.dup() + e811.dup();
let e821 = e820.dup() + e813.dup();
let e822 = e814.dup() * e821.dup();
let e823 = e822.dup() - h1.dup();
let b824 = b23.dup() - b40.dup();
let e826 = e823.dup() * b824.dup();
let e827 = e806.dup() + e826.dup();
let h73 = a1[0];
let h74 = a0[1];
let e830 = Into::<AB::ExprEF>::into(h57) + Into::<AB::ExprEF>::into(h74);
let h75 = a0[2];
let e832 = e830.dup() + Into::<AB::ExprEF>::into(h75);
let e833 = Into::<AB::ExprEF>::into(h73) - e832.dup();
let h76: AB::ExprEF = builder.permutation_values()[0].clone().into();
let e835 = e833.dup() + h76.dup();
let e836 = e827.dup() * e835.dup();
let e837 = AB::ExprEF::from(b596.dup()) + b606.dup();
let e838 = e666.dup() - e661.dup();
let e839 = e838.dup() * b670.dup();
let e840 = e837.dup() + e839.dup();
let e841 = e840.dup() + b683.dup();
let e842 = e841.dup() + b695.dup();
let e843 = e842.dup() + b712.dup();
let e844 = e843.dup() + b349.dup();
let e845 = e844.dup() + b803.dup();
let h77: AB::Expr = AB::Expr::from(Felt::from_u64(18446744069414584320));
let e848 = e821.dup() * h77.dup();
let e849 = e814.dup() * AB::Expr::from(h37);
let e850 = e848.dup() + e849.dup();
let e851 = e850.dup() * b824.dup();
let e852 = e845.dup() + e851.dup();
let e853 = e836.dup() - e852.dup();
builder.assert_zero_ext(e853.dup());
let h78: AB::Expr = AB::Expr::from(Felt::from_u64(21));
let e856 = e550.dup() * h78.dup();
let e857 = h58.dup() + e856.dup();
let e859 = h59.dup() * AB::Expr::from(h47);
let e860 = e536.dup() * AB::Expr::from(h20);
let e861 = e859.dup() + e860.dup();
let e862 = e857.dup() + e861.dup();
let b863 = h7 * b636.dup();
let e865 = e537.dup() * b863.dup();
let b866 = h37 * b636.dup();
let e868 = e538.dup() * b866.dup();
let e869 = e865.dup() + e868.dup();
let b870 = h40 * b636.dup();
let e872 = e539.dup() * b870.dup();
let e873 = e869.dup() + e872.dup();
let b874 = h43 * b636.dup();
let e876 = e540.dup() * b874.dup();
let e877 = e873.dup() + e876.dup();
let e878 = e862.dup() + e877.dup();
let b879 = h49 * b637.dup();
let e881 = e541.dup() * b879.dup();
let b882 = h50 * b637.dup();
let e884 = e542.dup() * b882.dup();
let e885 = e881.dup() + e884.dup();
let b886 = h51 * b637.dup();
let e888 = e543.dup() * b886.dup();
let e889 = e885.dup() + e888.dup();
let b890 = h52 * b637.dup();
let e892 = e544.dup() * b890.dup();
let e893 = e889.dup() + e892.dup();
let e894 = e878.dup() + e893.dup();
let e895 = e894.dup() - h1.dup();
let b896 = b60.dup() * h5;
let b897 = b896.dup() * b164.dup();
let e899 = e895.dup() * b897.dup();
let e900 = e899.dup() + h1.dup();
let e901 = e665.dup() + AB::Expr::from(h29);
let e902 = e894.dup() * e901.dup();
let b903 = h29 + h29;
let e905 = e665.dup() + b903.dup();
let e906 = e902.dup() * e905.dup();
let e907 = e906.dup() - h1.dup();
let b908 = b896.dup() * h16;
let e910 = e907.dup() * b908.dup();
let e911 = e900.dup() + e910.dup();
let e912 = e901.dup() * e905.dup();
let e913 = e912.dup() - h1.dup();
let b914 = b594.dup() * h6;
let b915 = b914.dup() * h16;
let e917 = e913.dup() * b915.dup();
let e918 = e911.dup() + e917.dup();
let e919 = e809.dup() + AB::Expr::from(h40);
let e920 = e919.dup() + e811.dup();
let e921 = e734.dup() + e920.dup();
let e922 = e537.dup() * AB::Expr::from(h52);
let e923 = e538.dup() * AB::Expr::from(h23);
let e924 = e922.dup() + e923.dup();
let e925 = e539.dup() * AB::Expr::from(h27);
let e926 = e924.dup() + e925.dup();
let e927 = e540.dup() * AB::Expr::from(h29);
let e928 = e926.dup() + e927.dup();
let e929 = e921.dup() + e928.dup();
let e930 = e929.dup() - h1.dup();
let b931 = b458.dup() * b477.dup();
let e933 = e930.dup() * b931.dup();
let e934 = e918.dup() + e933.dup();
let h79: AB::Expr = AB::Expr::from(Felt::from_u64(1073741824));
let b936 = h20 * h79.dup();
let b937 = h25 + b936.dup();
let b938 = h50 + h1.dup();
let h80: AB::Expr = AB::Expr::from(Felt::from_u64(1152921504606846976));
let b940 = b938.dup() * h80.dup();
let b941 = b937.dup() + b940.dup();
let e943 = e537.dup() * b941.dup();
let e944 = e920.dup() + e943.dup();
let e945 = e719.dup() + e944.dup();
let e946 = e945.dup() - h1.dup();
let e948 = e946.dup() * b497.dup();
let e949 = e934.dup() + e948.dup();
let e950 = e665.dup() + AB::Expr::from(h27);
let e951 = e950.dup() * e901.dup();
let e953 = e665.dup() + AB::Expr::from(h16);
let e954 = e951.dup() * e953.dup();
let e956 = e665.dup() + AB::Expr::from(h17);
let e957 = e954.dup() * e956.dup();
let b958 = h17 * h55.dup();
let e960 = e665.dup() + b958.dup();
let e961 = e957.dup() * e960.dup();
let e962 = e961.dup() - h1.dup();
let e963 = e962.dup() * b349.dup();
let e964 = e949.dup() + e963.dup();
let e965 = e964.dup() * Into::<AB::ExprEF>::into(h74);
let b966 = h6 + h6;
let b967 = h1.dup() - b966.dup();
let b968 = b897.dup() * b967.dup();
let e971 = e901.dup() * b967.dup();
let e972 = e971.dup() - e894.dup();
let e973 = e972.dup() * e905.dup();
let e974 = e973.dup() - e902.dup();
let e975 = e974.dup() * b908.dup();
let e976 = e975.dup() + b968.dup();
let e977 = e905.dup() * h77.dup();
let e978 = e977.dup() - e901.dup();
let e979 = e978.dup() * b915.dup();
let e980 = e976.dup() + e979.dup();
let e981 = e980.dup() - b931.dup();
let e982 = e981.dup() - b497.dup();
let e983 = e901.dup() * h77.dup();
let e984 = e983.dup() - e950.dup();
let e985 = e984.dup() * e953.dup();
let e986 = e985.dup() - e951.dup();
let e987 = e986.dup() * e956.dup();
let e988 = e987.dup() - e954.dup();
let e989 = e988.dup() * e960.dup();
let e990 = e989.dup() - e957.dup();
let e991 = e990.dup() * b349.dup();
let e992 = e982.dup() + e991.dup();
let e993 = e965.dup() - e992.dup();
builder.assert_zero_ext(e993.dup());
let h81: AB::Expr = AB::Expr::from(Felt::from_u64(23));
let e996 = e550.dup() * h81.dup();
let e997 = h58.dup() + e996.dup();
let e998 = e997.dup() + AB::Expr::from(h49);
let e999 = e998.dup() + e789.dup();
let e1000 = e536.dup() * AB::Expr::from(h51);
let e1001 = e999.dup() + e1000.dup();
let e1002 = e1001.dup() + e922.dup();
let e1003 = e1002.dup() + e923.dup();
let e1004 = e536.dup() * AB::Expr::from(h25);
let e1005 = e999.dup() + e1004.dup();
let e1006 = e1005.dup() + e708.dup();
let e1007 = e538.dup() * AB::Expr::from(h29);
let e1008 = e1006.dup() + e1007.dup();
let e1009 = e1003.dup() * e1008.dup();
let e1010 = e999.dup() + e860.dup();
let e1011 = e537.dup() * AB::Expr::from(h47);
let e1012 = e1010.dup() + e1011.dup();
let e1013 = e538.dup() * AB::Expr::from(h16);
let e1014 = e1012.dup() + e1013.dup();
let e1015 = e1009.dup() * e1014.dup();
let e1016 = e1015.dup() - h1.dup();
let e1018 = e1016.dup() * b458.dup();
let e1019 = e1018.dup() + h1.dup();
let h82: AB::Expr = AB::Expr::from(Felt::from_u64(24));
let e1022 = e550.dup() * h82.dup();
let e1023 = h58.dup() + e1022.dup();
let e1025 = e1023.dup() + AB::Expr::from(h18);
let e1026 = e1025.dup() + e591.dup();
let e1027 = e1026.dup() - h1.dup();
let b1028 = b138.dup() * h16;
let b1029 = h1.dup() - b1028.dup();
let b1030 = b60.dup() * b1029.dup();
let e1032 = e1027.dup() * b1030.dup();
let e1033 = e1019.dup() + e1032.dup();
let e1034 = e1025.dup() + e579.dup();
let e1035 = e665.dup() + AB::Expr::from(h25);
let e1036 = e1034.dup() * e1035.dup();
let e1037 = e1036.dup() * e950.dup();
let e1038 = e1037.dup() - h1.dup();
let b1039 = b60.dup() * b1028.dup();
let e1041 = e1038.dup() * b1039.dup();
let e1042 = e1033.dup() + e1041.dup();
let h83: AB::Expr = AB::Expr::from(Felt::from_u64(25));
let e1045 = e550.dup() * h83.dup();
let e1046 = h58.dup() + e1045.dup();
let e1047 = e1046.dup() + AB::Expr::from(h18);
let e1048 = e1047.dup() + e591.dup();
let e1049 = e1048.dup() - h1.dup();
let e1051 = e1049.dup() * b179.dup();
let e1052 = e1042.dup() + e1051.dup();
let e1053 = e1052.dup() * Into::<AB::ExprEF>::into(h75);
let e1054 = e1008.dup() * AB::Expr::from(h17);
let b1055 = b477.dup() * h16;
let b1056 = b1055.dup() - h37;
let e1058 = e1003.dup() * b1056.dup();
let e1059 = e1054.dup() + e1058.dup();
let e1060 = e1059.dup() * e1014.dup();
let b1061 = -AB::Expr::from(h37);
let e1063 = e1009.dup() * b1061.dup();
let e1064 = e1060.dup() + e1063.dup();
let e1065 = e1064.dup() * b458.dup();
let e1066 = e1065.dup() + b1030.dup();
let e1067 = e1035.dup() - e1034.dup();
let e1068 = e1067.dup() * e950.dup();
let e1069 = e1068.dup() - e1036.dup();
let e1070 = e1069.dup() * b1039.dup();
let e1071 = e1066.dup() + e1070.dup();
let e1072 = e1071.dup() + b179.dup();
let e1073 = e1053.dup() - e1072.dup();
builder.assert_zero_ext(e1073.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());
}